12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- import "dart:convert";
- import "package:isar/isar.dart";
- part 'embedding.g.dart';
- @collection
- class Embedding {
- Id id = Isar.autoIncrement; // you can also use id = null to auto increment
- final int fileID;
- @enumerated
- final Model model;
- final List<double> embedding;
- int? updationTime;
- Embedding({
- required this.fileID,
- required this.model,
- required this.embedding,
- this.updationTime,
- });
- static List<double> decodeEmbedding(String embedding) {
- return List<double>.from(jsonDecode(embedding) as List);
- }
- static String encodeEmbedding(List<double> embedding) {
- return jsonEncode(embedding);
- }
- }
- enum Model {
- onnxClip,
- ggmlClip,
- }
- extension ModelExtension on Model {
- String get name => serialize(this);
- }
- String serialize(Model model) {
- switch (model) {
- case Model.onnxClip:
- return 'onnx-clip';
- case Model.ggmlClip:
- return 'ggml-clip';
- default:
- throw Exception('$model is not a valid Model');
- }
- }
- Model deserialize(String model) {
- switch (model) {
- case 'onnx-clip':
- return Model.onnxClip;
- case 'ggml-clip':
- return Model.ggmlClip;
- default:
- throw Exception('$model is not a valid Model');
- }
- }
|