embedding.dart 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. import "dart:convert";
  2. class Embedding {
  3. final int fileID;
  4. final Model model;
  5. final List<double> embedding;
  6. int? updationTime;
  7. Embedding({
  8. required this.fileID,
  9. required this.model,
  10. required this.embedding,
  11. this.updationTime,
  12. });
  13. static List<double> decodeEmbedding(String embedding) {
  14. return List<double>.from(jsonDecode(embedding) as List);
  15. }
  16. static String encodeEmbedding(List<double> embedding) {
  17. return jsonEncode(embedding);
  18. }
  19. }
  20. enum Model {
  21. onnxClip,
  22. ggmlClip,
  23. }
  24. extension ModelExtension on Model {
  25. String get name => serialize(this);
  26. }
  27. String serialize(Model model) {
  28. switch (model) {
  29. case Model.onnxClip:
  30. return 'onnx-clip';
  31. case Model.ggmlClip:
  32. return 'ggml-clip';
  33. default:
  34. throw Exception('$model is not a valid Model');
  35. }
  36. }
  37. Model deserialize(String model) {
  38. switch (model) {
  39. case 'onnx-clip':
  40. return Model.onnxClip;
  41. case 'ggml-clip':
  42. return Model.ggmlClip;
  43. default:
  44. throw Exception('$model is not a valid Model');
  45. }
  46. }