Benchmark face embeddings
This commit is contained in:
@@ -1,6 +1,8 @@
|
||||
// This file is automatically generated, so please do not edit it.
|
||||
// @generated by `flutter_rust_bridge`@ 2.9.0.
|
||||
|
||||
// ignore_for_file: require_trailing_commas
|
||||
|
||||
// ignore_for_file: invalid_use_of_internal_member, unused_import, unnecessary_import
|
||||
|
||||
import 'package:flutter_rust_bridge/flutter_rust_bridge_for_generated.dart';
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
// This file is automatically generated, so please do not edit it.
|
||||
// @generated by `flutter_rust_bridge`@ 2.9.0.
|
||||
|
||||
// ignore_for_file: require_trailing_commas
|
||||
|
||||
// ignore_for_file: invalid_use_of_internal_member, unused_import, unnecessary_import
|
||||
|
||||
import 'package:flutter_rust_bridge/flutter_rust_bridge_for_generated.dart';
|
||||
@@ -12,10 +14,11 @@ import 'package:photos/src/rust/frb_generated.dart';
|
||||
abstract class VectorDb implements RustOpaqueInterface {
|
||||
Future<void> addVector({required BigInt key, required List<double> vector});
|
||||
|
||||
Future<void> bulkAddVectors({
|
||||
required Uint64List keys,
|
||||
required List<Float32List> vectors,
|
||||
});
|
||||
Future<void> bulkAddVectors(
|
||||
{required Uint64List keys, required List<Float32List> vectors});
|
||||
|
||||
Future<List<Uint64List>> bulkSearchVectors(
|
||||
{required List<Float32List> queries, required BigInt count});
|
||||
|
||||
Future<void> deleteIndex();
|
||||
|
||||
@@ -25,16 +28,12 @@ abstract class VectorDb implements RustOpaqueInterface {
|
||||
|
||||
factory VectorDb({required String filePath, required BigInt dimensions}) =>
|
||||
RustLib.instance.api.crateApiUsearchApiVectorDbNew(
|
||||
filePath: filePath,
|
||||
dimensions: dimensions,
|
||||
);
|
||||
filePath: filePath, dimensions: dimensions);
|
||||
|
||||
Future<BigInt> removeVector({required BigInt key});
|
||||
|
||||
Future<void> resetIndex();
|
||||
|
||||
Future<(Uint64List, Float32List)> searchVectors({
|
||||
required List<double> query,
|
||||
required BigInt count,
|
||||
});
|
||||
Future<(Uint64List, Float32List)> searchVectors(
|
||||
{required List<double> query, required BigInt count});
|
||||
}
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
// This file is automatically generated, so please do not edit it.
|
||||
// @generated by `flutter_rust_bridge`@ 2.9.0.
|
||||
|
||||
// ignore_for_file: require_trailing_commas
|
||||
|
||||
// ignore_for_file: unused_import, unused_element, unnecessary_import, duplicate_ignore, invalid_use_of_internal_member, annotate_overrides, non_constant_identifier_names, curly_braces_in_flow_control_structures, prefer_const_literals_to_create_immutables, unused_field
|
||||
|
||||
import 'dart:async';
|
||||
@@ -70,7 +72,7 @@ class RustLib extends BaseEntrypoint<RustLibApi, RustLibApiImpl, RustLibWire> {
|
||||
String get codegenVersion => '2.9.0';
|
||||
|
||||
@override
|
||||
int get rustContentHash => 862168794;
|
||||
int get rustContentHash => -674813457;
|
||||
|
||||
static const kDefaultExternalLibraryLoaderConfig =
|
||||
ExternalLibraryLoaderConfig(
|
||||
@@ -81,45 +83,41 @@ class RustLib extends BaseEntrypoint<RustLibApi, RustLibApiImpl, RustLibWire> {
|
||||
}
|
||||
|
||||
abstract class RustLibApi extends BaseApi {
|
||||
Future<void> crateApiUsearchApiVectorDbAddVector({
|
||||
required VectorDb that,
|
||||
required BigInt key,
|
||||
required List<double> vector,
|
||||
});
|
||||
Future<void> crateApiUsearchApiVectorDbAddVector(
|
||||
{required VectorDb that,
|
||||
required BigInt key,
|
||||
required List<double> vector});
|
||||
|
||||
Future<void> crateApiUsearchApiVectorDbBulkAddVectors({
|
||||
required VectorDb that,
|
||||
required Uint64List keys,
|
||||
required List<Float32List> vectors,
|
||||
});
|
||||
Future<void> crateApiUsearchApiVectorDbBulkAddVectors(
|
||||
{required VectorDb that,
|
||||
required Uint64List keys,
|
||||
required List<Float32List> vectors});
|
||||
|
||||
Future<List<Uint64List>> crateApiUsearchApiVectorDbBulkSearchVectors(
|
||||
{required VectorDb that,
|
||||
required List<Float32List> queries,
|
||||
required BigInt count});
|
||||
|
||||
Future<void> crateApiUsearchApiVectorDbDeleteIndex({required VectorDb that});
|
||||
|
||||
Future<(BigInt, BigInt, BigInt, BigInt, BigInt)>
|
||||
crateApiUsearchApiVectorDbGetIndexStats({required VectorDb that});
|
||||
|
||||
Future<Float32List> crateApiUsearchApiVectorDbGetVector({
|
||||
required VectorDb that,
|
||||
required BigInt key,
|
||||
});
|
||||
Future<Float32List> crateApiUsearchApiVectorDbGetVector(
|
||||
{required VectorDb that, required BigInt key});
|
||||
|
||||
VectorDb crateApiUsearchApiVectorDbNew({
|
||||
required String filePath,
|
||||
required BigInt dimensions,
|
||||
});
|
||||
VectorDb crateApiUsearchApiVectorDbNew(
|
||||
{required String filePath, required BigInt dimensions});
|
||||
|
||||
Future<BigInt> crateApiUsearchApiVectorDbRemoveVector({
|
||||
required VectorDb that,
|
||||
required BigInt key,
|
||||
});
|
||||
Future<BigInt> crateApiUsearchApiVectorDbRemoveVector(
|
||||
{required VectorDb that, required BigInt key});
|
||||
|
||||
Future<void> crateApiUsearchApiVectorDbResetIndex({required VectorDb that});
|
||||
|
||||
Future<(Uint64List, Float32List)> crateApiUsearchApiVectorDbSearchVectors({
|
||||
required VectorDb that,
|
||||
required List<double> query,
|
||||
required BigInt count,
|
||||
});
|
||||
Future<(Uint64List, Float32List)> crateApiUsearchApiVectorDbSearchVectors(
|
||||
{required VectorDb that,
|
||||
required List<double> query,
|
||||
required BigInt count});
|
||||
|
||||
String crateApiSimpleGreet({required String name});
|
||||
|
||||
@@ -143,37 +141,28 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi {
|
||||
});
|
||||
|
||||
@override
|
||||
Future<void> crateApiUsearchApiVectorDbAddVector({
|
||||
required VectorDb that,
|
||||
required BigInt key,
|
||||
required List<double> vector,
|
||||
}) {
|
||||
return handler.executeNormal(
|
||||
NormalTask(
|
||||
callFfi: (port_) {
|
||||
final serializer = SseSerializer(generalizedFrbRustBinding);
|
||||
sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVectorDB(
|
||||
that,
|
||||
serializer,
|
||||
);
|
||||
sse_encode_u_64(key, serializer);
|
||||
sse_encode_list_prim_f_32_loose(vector, serializer);
|
||||
pdeCallFfi(
|
||||
generalizedFrbRustBinding,
|
||||
serializer,
|
||||
funcId: 1,
|
||||
port: port_,
|
||||
);
|
||||
},
|
||||
codec: SseCodec(
|
||||
decodeSuccessData: sse_decode_unit,
|
||||
decodeErrorData: null,
|
||||
),
|
||||
constMeta: kCrateApiUsearchApiVectorDbAddVectorConstMeta,
|
||||
argValues: [that, key, vector],
|
||||
apiImpl: this,
|
||||
Future<void> crateApiUsearchApiVectorDbAddVector(
|
||||
{required VectorDb that,
|
||||
required BigInt key,
|
||||
required List<double> vector}) {
|
||||
return handler.executeNormal(NormalTask(
|
||||
callFfi: (port_) {
|
||||
final serializer = SseSerializer(generalizedFrbRustBinding);
|
||||
sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVectorDB(
|
||||
that, serializer);
|
||||
sse_encode_u_64(key, serializer);
|
||||
sse_encode_list_prim_f_32_loose(vector, serializer);
|
||||
pdeCallFfi(generalizedFrbRustBinding, serializer,
|
||||
funcId: 1, port: port_);
|
||||
},
|
||||
codec: SseCodec(
|
||||
decodeSuccessData: sse_decode_unit,
|
||||
decodeErrorData: null,
|
||||
),
|
||||
);
|
||||
constMeta: kCrateApiUsearchApiVectorDbAddVectorConstMeta,
|
||||
argValues: [that, key, vector],
|
||||
apiImpl: this,
|
||||
));
|
||||
}
|
||||
|
||||
TaskConstMeta get kCrateApiUsearchApiVectorDbAddVectorConstMeta =>
|
||||
@@ -183,37 +172,28 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi {
|
||||
);
|
||||
|
||||
@override
|
||||
Future<void> crateApiUsearchApiVectorDbBulkAddVectors({
|
||||
required VectorDb that,
|
||||
required Uint64List keys,
|
||||
required List<Float32List> vectors,
|
||||
}) {
|
||||
return handler.executeNormal(
|
||||
NormalTask(
|
||||
callFfi: (port_) {
|
||||
final serializer = SseSerializer(generalizedFrbRustBinding);
|
||||
sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVectorDB(
|
||||
that,
|
||||
serializer,
|
||||
);
|
||||
sse_encode_list_prim_u_64_strict(keys, serializer);
|
||||
sse_encode_list_list_prim_f_32_strict(vectors, serializer);
|
||||
pdeCallFfi(
|
||||
generalizedFrbRustBinding,
|
||||
serializer,
|
||||
funcId: 2,
|
||||
port: port_,
|
||||
);
|
||||
},
|
||||
codec: SseCodec(
|
||||
decodeSuccessData: sse_decode_unit,
|
||||
decodeErrorData: null,
|
||||
),
|
||||
constMeta: kCrateApiUsearchApiVectorDbBulkAddVectorsConstMeta,
|
||||
argValues: [that, keys, vectors],
|
||||
apiImpl: this,
|
||||
Future<void> crateApiUsearchApiVectorDbBulkAddVectors(
|
||||
{required VectorDb that,
|
||||
required Uint64List keys,
|
||||
required List<Float32List> vectors}) {
|
||||
return handler.executeNormal(NormalTask(
|
||||
callFfi: (port_) {
|
||||
final serializer = SseSerializer(generalizedFrbRustBinding);
|
||||
sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVectorDB(
|
||||
that, serializer);
|
||||
sse_encode_list_prim_u_64_strict(keys, serializer);
|
||||
sse_encode_list_list_prim_f_32_strict(vectors, serializer);
|
||||
pdeCallFfi(generalizedFrbRustBinding, serializer,
|
||||
funcId: 2, port: port_);
|
||||
},
|
||||
codec: SseCodec(
|
||||
decodeSuccessData: sse_decode_unit,
|
||||
decodeErrorData: null,
|
||||
),
|
||||
);
|
||||
constMeta: kCrateApiUsearchApiVectorDbBulkAddVectorsConstMeta,
|
||||
argValues: [that, keys, vectors],
|
||||
apiImpl: this,
|
||||
));
|
||||
}
|
||||
|
||||
TaskConstMeta get kCrateApiUsearchApiVectorDbBulkAddVectorsConstMeta =>
|
||||
@@ -223,31 +203,54 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi {
|
||||
);
|
||||
|
||||
@override
|
||||
Future<void> crateApiUsearchApiVectorDbDeleteIndex({required VectorDb that}) {
|
||||
return handler.executeNormal(
|
||||
NormalTask(
|
||||
callFfi: (port_) {
|
||||
final serializer = SseSerializer(generalizedFrbRustBinding);
|
||||
sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVectorDB(
|
||||
that,
|
||||
serializer,
|
||||
);
|
||||
pdeCallFfi(
|
||||
generalizedFrbRustBinding,
|
||||
serializer,
|
||||
funcId: 3,
|
||||
port: port_,
|
||||
);
|
||||
},
|
||||
codec: SseCodec(
|
||||
decodeSuccessData: sse_decode_unit,
|
||||
decodeErrorData: null,
|
||||
),
|
||||
constMeta: kCrateApiUsearchApiVectorDbDeleteIndexConstMeta,
|
||||
argValues: [that],
|
||||
apiImpl: this,
|
||||
Future<List<Uint64List>> crateApiUsearchApiVectorDbBulkSearchVectors(
|
||||
{required VectorDb that,
|
||||
required List<Float32List> queries,
|
||||
required BigInt count}) {
|
||||
return handler.executeNormal(NormalTask(
|
||||
callFfi: (port_) {
|
||||
final serializer = SseSerializer(generalizedFrbRustBinding);
|
||||
sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVectorDB(
|
||||
that, serializer);
|
||||
sse_encode_list_list_prim_f_32_strict(queries, serializer);
|
||||
sse_encode_usize(count, serializer);
|
||||
pdeCallFfi(generalizedFrbRustBinding, serializer,
|
||||
funcId: 3, port: port_);
|
||||
},
|
||||
codec: SseCodec(
|
||||
decodeSuccessData: sse_decode_list_list_prim_u_64_strict,
|
||||
decodeErrorData: null,
|
||||
),
|
||||
);
|
||||
constMeta: kCrateApiUsearchApiVectorDbBulkSearchVectorsConstMeta,
|
||||
argValues: [that, queries, count],
|
||||
apiImpl: this,
|
||||
));
|
||||
}
|
||||
|
||||
TaskConstMeta get kCrateApiUsearchApiVectorDbBulkSearchVectorsConstMeta =>
|
||||
const TaskConstMeta(
|
||||
debugName: "VectorDb_bulk_search_vectors",
|
||||
argNames: ["that", "queries", "count"],
|
||||
);
|
||||
|
||||
@override
|
||||
Future<void> crateApiUsearchApiVectorDbDeleteIndex({required VectorDb that}) {
|
||||
return handler.executeNormal(NormalTask(
|
||||
callFfi: (port_) {
|
||||
final serializer = SseSerializer(generalizedFrbRustBinding);
|
||||
sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVectorDB(
|
||||
that, serializer);
|
||||
pdeCallFfi(generalizedFrbRustBinding, serializer,
|
||||
funcId: 4, port: port_);
|
||||
},
|
||||
codec: SseCodec(
|
||||
decodeSuccessData: sse_decode_unit,
|
||||
decodeErrorData: null,
|
||||
),
|
||||
constMeta: kCrateApiUsearchApiVectorDbDeleteIndexConstMeta,
|
||||
argValues: [that],
|
||||
apiImpl: this,
|
||||
));
|
||||
}
|
||||
|
||||
TaskConstMeta get kCrateApiUsearchApiVectorDbDeleteIndexConstMeta =>
|
||||
@@ -259,30 +262,22 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi {
|
||||
@override
|
||||
Future<(BigInt, BigInt, BigInt, BigInt, BigInt)>
|
||||
crateApiUsearchApiVectorDbGetIndexStats({required VectorDb that}) {
|
||||
return handler.executeNormal(
|
||||
NormalTask(
|
||||
callFfi: (port_) {
|
||||
final serializer = SseSerializer(generalizedFrbRustBinding);
|
||||
sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVectorDB(
|
||||
that,
|
||||
serializer,
|
||||
);
|
||||
pdeCallFfi(
|
||||
generalizedFrbRustBinding,
|
||||
serializer,
|
||||
funcId: 4,
|
||||
port: port_,
|
||||
);
|
||||
},
|
||||
codec: SseCodec(
|
||||
decodeSuccessData: sse_decode_record_usize_usize_usize_usize_usize,
|
||||
decodeErrorData: null,
|
||||
),
|
||||
constMeta: kCrateApiUsearchApiVectorDbGetIndexStatsConstMeta,
|
||||
argValues: [that],
|
||||
apiImpl: this,
|
||||
return handler.executeNormal(NormalTask(
|
||||
callFfi: (port_) {
|
||||
final serializer = SseSerializer(generalizedFrbRustBinding);
|
||||
sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVectorDB(
|
||||
that, serializer);
|
||||
pdeCallFfi(generalizedFrbRustBinding, serializer,
|
||||
funcId: 5, port: port_);
|
||||
},
|
||||
codec: SseCodec(
|
||||
decodeSuccessData: sse_decode_record_usize_usize_usize_usize_usize,
|
||||
decodeErrorData: null,
|
||||
),
|
||||
);
|
||||
constMeta: kCrateApiUsearchApiVectorDbGetIndexStatsConstMeta,
|
||||
argValues: [that],
|
||||
apiImpl: this,
|
||||
));
|
||||
}
|
||||
|
||||
TaskConstMeta get kCrateApiUsearchApiVectorDbGetIndexStatsConstMeta =>
|
||||
@@ -292,35 +287,25 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi {
|
||||
);
|
||||
|
||||
@override
|
||||
Future<Float32List> crateApiUsearchApiVectorDbGetVector({
|
||||
required VectorDb that,
|
||||
required BigInt key,
|
||||
}) {
|
||||
return handler.executeNormal(
|
||||
NormalTask(
|
||||
callFfi: (port_) {
|
||||
final serializer = SseSerializer(generalizedFrbRustBinding);
|
||||
sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVectorDB(
|
||||
that,
|
||||
serializer,
|
||||
);
|
||||
sse_encode_u_64(key, serializer);
|
||||
pdeCallFfi(
|
||||
generalizedFrbRustBinding,
|
||||
serializer,
|
||||
funcId: 5,
|
||||
port: port_,
|
||||
);
|
||||
},
|
||||
codec: SseCodec(
|
||||
decodeSuccessData: sse_decode_list_prim_f_32_strict,
|
||||
decodeErrorData: null,
|
||||
),
|
||||
constMeta: kCrateApiUsearchApiVectorDbGetVectorConstMeta,
|
||||
argValues: [that, key],
|
||||
apiImpl: this,
|
||||
Future<Float32List> crateApiUsearchApiVectorDbGetVector(
|
||||
{required VectorDb that, required BigInt key}) {
|
||||
return handler.executeNormal(NormalTask(
|
||||
callFfi: (port_) {
|
||||
final serializer = SseSerializer(generalizedFrbRustBinding);
|
||||
sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVectorDB(
|
||||
that, serializer);
|
||||
sse_encode_u_64(key, serializer);
|
||||
pdeCallFfi(generalizedFrbRustBinding, serializer,
|
||||
funcId: 6, port: port_);
|
||||
},
|
||||
codec: SseCodec(
|
||||
decodeSuccessData: sse_decode_list_prim_f_32_strict,
|
||||
decodeErrorData: null,
|
||||
),
|
||||
);
|
||||
constMeta: kCrateApiUsearchApiVectorDbGetVectorConstMeta,
|
||||
argValues: [that, key],
|
||||
apiImpl: this,
|
||||
));
|
||||
}
|
||||
|
||||
TaskConstMeta get kCrateApiUsearchApiVectorDbGetVectorConstMeta =>
|
||||
@@ -330,28 +315,24 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi {
|
||||
);
|
||||
|
||||
@override
|
||||
VectorDb crateApiUsearchApiVectorDbNew({
|
||||
required String filePath,
|
||||
required BigInt dimensions,
|
||||
}) {
|
||||
return handler.executeSync(
|
||||
SyncTask(
|
||||
callFfi: () {
|
||||
final serializer = SseSerializer(generalizedFrbRustBinding);
|
||||
sse_encode_String(filePath, serializer);
|
||||
sse_encode_usize(dimensions, serializer);
|
||||
return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 6)!;
|
||||
},
|
||||
codec: SseCodec(
|
||||
decodeSuccessData:
|
||||
sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVectorDB,
|
||||
decodeErrorData: null,
|
||||
),
|
||||
constMeta: kCrateApiUsearchApiVectorDbNewConstMeta,
|
||||
argValues: [filePath, dimensions],
|
||||
apiImpl: this,
|
||||
VectorDb crateApiUsearchApiVectorDbNew(
|
||||
{required String filePath, required BigInt dimensions}) {
|
||||
return handler.executeSync(SyncTask(
|
||||
callFfi: () {
|
||||
final serializer = SseSerializer(generalizedFrbRustBinding);
|
||||
sse_encode_String(filePath, serializer);
|
||||
sse_encode_usize(dimensions, serializer);
|
||||
return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 7)!;
|
||||
},
|
||||
codec: SseCodec(
|
||||
decodeSuccessData:
|
||||
sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVectorDB,
|
||||
decodeErrorData: null,
|
||||
),
|
||||
);
|
||||
constMeta: kCrateApiUsearchApiVectorDbNewConstMeta,
|
||||
argValues: [filePath, dimensions],
|
||||
apiImpl: this,
|
||||
));
|
||||
}
|
||||
|
||||
TaskConstMeta get kCrateApiUsearchApiVectorDbNewConstMeta =>
|
||||
@@ -361,35 +342,25 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi {
|
||||
);
|
||||
|
||||
@override
|
||||
Future<BigInt> crateApiUsearchApiVectorDbRemoveVector({
|
||||
required VectorDb that,
|
||||
required BigInt key,
|
||||
}) {
|
||||
return handler.executeNormal(
|
||||
NormalTask(
|
||||
callFfi: (port_) {
|
||||
final serializer = SseSerializer(generalizedFrbRustBinding);
|
||||
sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVectorDB(
|
||||
that,
|
||||
serializer,
|
||||
);
|
||||
sse_encode_u_64(key, serializer);
|
||||
pdeCallFfi(
|
||||
generalizedFrbRustBinding,
|
||||
serializer,
|
||||
funcId: 7,
|
||||
port: port_,
|
||||
);
|
||||
},
|
||||
codec: SseCodec(
|
||||
decodeSuccessData: sse_decode_usize,
|
||||
decodeErrorData: null,
|
||||
),
|
||||
constMeta: kCrateApiUsearchApiVectorDbRemoveVectorConstMeta,
|
||||
argValues: [that, key],
|
||||
apiImpl: this,
|
||||
Future<BigInt> crateApiUsearchApiVectorDbRemoveVector(
|
||||
{required VectorDb that, required BigInt key}) {
|
||||
return handler.executeNormal(NormalTask(
|
||||
callFfi: (port_) {
|
||||
final serializer = SseSerializer(generalizedFrbRustBinding);
|
||||
sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVectorDB(
|
||||
that, serializer);
|
||||
sse_encode_u_64(key, serializer);
|
||||
pdeCallFfi(generalizedFrbRustBinding, serializer,
|
||||
funcId: 8, port: port_);
|
||||
},
|
||||
codec: SseCodec(
|
||||
decodeSuccessData: sse_decode_usize,
|
||||
decodeErrorData: null,
|
||||
),
|
||||
);
|
||||
constMeta: kCrateApiUsearchApiVectorDbRemoveVectorConstMeta,
|
||||
argValues: [that, key],
|
||||
apiImpl: this,
|
||||
));
|
||||
}
|
||||
|
||||
TaskConstMeta get kCrateApiUsearchApiVectorDbRemoveVectorConstMeta =>
|
||||
@@ -400,30 +371,22 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi {
|
||||
|
||||
@override
|
||||
Future<void> crateApiUsearchApiVectorDbResetIndex({required VectorDb that}) {
|
||||
return handler.executeNormal(
|
||||
NormalTask(
|
||||
callFfi: (port_) {
|
||||
final serializer = SseSerializer(generalizedFrbRustBinding);
|
||||
sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVectorDB(
|
||||
that,
|
||||
serializer,
|
||||
);
|
||||
pdeCallFfi(
|
||||
generalizedFrbRustBinding,
|
||||
serializer,
|
||||
funcId: 8,
|
||||
port: port_,
|
||||
);
|
||||
},
|
||||
codec: SseCodec(
|
||||
decodeSuccessData: sse_decode_unit,
|
||||
decodeErrorData: null,
|
||||
),
|
||||
constMeta: kCrateApiUsearchApiVectorDbResetIndexConstMeta,
|
||||
argValues: [that],
|
||||
apiImpl: this,
|
||||
return handler.executeNormal(NormalTask(
|
||||
callFfi: (port_) {
|
||||
final serializer = SseSerializer(generalizedFrbRustBinding);
|
||||
sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVectorDB(
|
||||
that, serializer);
|
||||
pdeCallFfi(generalizedFrbRustBinding, serializer,
|
||||
funcId: 9, port: port_);
|
||||
},
|
||||
codec: SseCodec(
|
||||
decodeSuccessData: sse_decode_unit,
|
||||
decodeErrorData: null,
|
||||
),
|
||||
);
|
||||
constMeta: kCrateApiUsearchApiVectorDbResetIndexConstMeta,
|
||||
argValues: [that],
|
||||
apiImpl: this,
|
||||
));
|
||||
}
|
||||
|
||||
TaskConstMeta get kCrateApiUsearchApiVectorDbResetIndexConstMeta =>
|
||||
@@ -433,38 +396,29 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi {
|
||||
);
|
||||
|
||||
@override
|
||||
Future<(Uint64List, Float32List)> crateApiUsearchApiVectorDbSearchVectors({
|
||||
required VectorDb that,
|
||||
required List<double> query,
|
||||
required BigInt count,
|
||||
}) {
|
||||
return handler.executeNormal(
|
||||
NormalTask(
|
||||
callFfi: (port_) {
|
||||
final serializer = SseSerializer(generalizedFrbRustBinding);
|
||||
sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVectorDB(
|
||||
that,
|
||||
serializer,
|
||||
);
|
||||
sse_encode_list_prim_f_32_loose(query, serializer);
|
||||
sse_encode_usize(count, serializer);
|
||||
pdeCallFfi(
|
||||
generalizedFrbRustBinding,
|
||||
serializer,
|
||||
funcId: 9,
|
||||
port: port_,
|
||||
);
|
||||
},
|
||||
codec: SseCodec(
|
||||
decodeSuccessData:
|
||||
sse_decode_record_list_prim_u_64_strict_list_prim_f_32_strict,
|
||||
decodeErrorData: null,
|
||||
),
|
||||
constMeta: kCrateApiUsearchApiVectorDbSearchVectorsConstMeta,
|
||||
argValues: [that, query, count],
|
||||
apiImpl: this,
|
||||
Future<(Uint64List, Float32List)> crateApiUsearchApiVectorDbSearchVectors(
|
||||
{required VectorDb that,
|
||||
required List<double> query,
|
||||
required BigInt count}) {
|
||||
return handler.executeNormal(NormalTask(
|
||||
callFfi: (port_) {
|
||||
final serializer = SseSerializer(generalizedFrbRustBinding);
|
||||
sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVectorDB(
|
||||
that, serializer);
|
||||
sse_encode_list_prim_f_32_loose(query, serializer);
|
||||
sse_encode_usize(count, serializer);
|
||||
pdeCallFfi(generalizedFrbRustBinding, serializer,
|
||||
funcId: 10, port: port_);
|
||||
},
|
||||
codec: SseCodec(
|
||||
decodeSuccessData:
|
||||
sse_decode_record_list_prim_u_64_strict_list_prim_f_32_strict,
|
||||
decodeErrorData: null,
|
||||
),
|
||||
);
|
||||
constMeta: kCrateApiUsearchApiVectorDbSearchVectorsConstMeta,
|
||||
argValues: [that, query, count],
|
||||
apiImpl: this,
|
||||
));
|
||||
}
|
||||
|
||||
TaskConstMeta get kCrateApiUsearchApiVectorDbSearchVectorsConstMeta =>
|
||||
@@ -475,22 +429,20 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi {
|
||||
|
||||
@override
|
||||
String crateApiSimpleGreet({required String name}) {
|
||||
return handler.executeSync(
|
||||
SyncTask(
|
||||
callFfi: () {
|
||||
final serializer = SseSerializer(generalizedFrbRustBinding);
|
||||
sse_encode_String(name, serializer);
|
||||
return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 10)!;
|
||||
},
|
||||
codec: SseCodec(
|
||||
decodeSuccessData: sse_decode_String,
|
||||
decodeErrorData: null,
|
||||
),
|
||||
constMeta: kCrateApiSimpleGreetConstMeta,
|
||||
argValues: [name],
|
||||
apiImpl: this,
|
||||
return handler.executeSync(SyncTask(
|
||||
callFfi: () {
|
||||
final serializer = SseSerializer(generalizedFrbRustBinding);
|
||||
sse_encode_String(name, serializer);
|
||||
return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 11)!;
|
||||
},
|
||||
codec: SseCodec(
|
||||
decodeSuccessData: sse_decode_String,
|
||||
decodeErrorData: null,
|
||||
),
|
||||
);
|
||||
constMeta: kCrateApiSimpleGreetConstMeta,
|
||||
argValues: [name],
|
||||
apiImpl: this,
|
||||
));
|
||||
}
|
||||
|
||||
TaskConstMeta get kCrateApiSimpleGreetConstMeta => const TaskConstMeta(
|
||||
@@ -500,26 +452,20 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi {
|
||||
|
||||
@override
|
||||
Future<void> crateApiSimpleInitApp() {
|
||||
return handler.executeNormal(
|
||||
NormalTask(
|
||||
callFfi: (port_) {
|
||||
final serializer = SseSerializer(generalizedFrbRustBinding);
|
||||
pdeCallFfi(
|
||||
generalizedFrbRustBinding,
|
||||
serializer,
|
||||
funcId: 11,
|
||||
port: port_,
|
||||
);
|
||||
},
|
||||
codec: SseCodec(
|
||||
decodeSuccessData: sse_decode_unit,
|
||||
decodeErrorData: null,
|
||||
),
|
||||
constMeta: kCrateApiSimpleInitAppConstMeta,
|
||||
argValues: [],
|
||||
apiImpl: this,
|
||||
return handler.executeNormal(NormalTask(
|
||||
callFfi: (port_) {
|
||||
final serializer = SseSerializer(generalizedFrbRustBinding);
|
||||
pdeCallFfi(generalizedFrbRustBinding, serializer,
|
||||
funcId: 12, port: port_);
|
||||
},
|
||||
codec: SseCodec(
|
||||
decodeSuccessData: sse_decode_unit,
|
||||
decodeErrorData: null,
|
||||
),
|
||||
);
|
||||
constMeta: kCrateApiSimpleInitAppConstMeta,
|
||||
argValues: [],
|
||||
apiImpl: this,
|
||||
));
|
||||
}
|
||||
|
||||
TaskConstMeta get kCrateApiSimpleInitAppConstMeta => const TaskConstMeta(
|
||||
@@ -538,8 +484,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi {
|
||||
@protected
|
||||
VectorDb
|
||||
dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVectorDB(
|
||||
dynamic raw,
|
||||
) {
|
||||
dynamic raw) {
|
||||
// Codec=Dco (DartCObject based), see doc to use other codecs
|
||||
return VectorDbImpl.frbInternalDcoDecode(raw as List<dynamic>);
|
||||
}
|
||||
@@ -547,8 +492,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi {
|
||||
@protected
|
||||
VectorDb
|
||||
dco_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVectorDB(
|
||||
dynamic raw,
|
||||
) {
|
||||
dynamic raw) {
|
||||
// Codec=Dco (DartCObject based), see doc to use other codecs
|
||||
return VectorDbImpl.frbInternalDcoDecode(raw as List<dynamic>);
|
||||
}
|
||||
@@ -556,8 +500,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi {
|
||||
@protected
|
||||
VectorDb
|
||||
dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVectorDB(
|
||||
dynamic raw,
|
||||
) {
|
||||
dynamic raw) {
|
||||
// Codec=Dco (DartCObject based), see doc to use other codecs
|
||||
return VectorDbImpl.frbInternalDcoDecode(raw as List<dynamic>);
|
||||
}
|
||||
@@ -582,6 +525,14 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi {
|
||||
.toList();
|
||||
}
|
||||
|
||||
@protected
|
||||
List<Uint64List> dco_decode_list_list_prim_u_64_strict(dynamic raw) {
|
||||
// Codec=Dco (DartCObject based), see doc to use other codecs
|
||||
return (raw as List<dynamic>)
|
||||
.map(dco_decode_list_prim_u_64_strict)
|
||||
.toList();
|
||||
}
|
||||
|
||||
@protected
|
||||
List<double> dco_decode_list_prim_f_32_loose(dynamic raw) {
|
||||
// Codec=Dco (DartCObject based), see doc to use other codecs
|
||||
@@ -666,37 +617,28 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi {
|
||||
@protected
|
||||
VectorDb
|
||||
sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVectorDB(
|
||||
SseDeserializer deserializer,
|
||||
) {
|
||||
SseDeserializer deserializer) {
|
||||
// Codec=Sse (Serialization based), see doc to use other codecs
|
||||
return VectorDbImpl.frbInternalSseDecode(
|
||||
sse_decode_usize(deserializer),
|
||||
sse_decode_i_32(deserializer),
|
||||
);
|
||||
sse_decode_usize(deserializer), sse_decode_i_32(deserializer));
|
||||
}
|
||||
|
||||
@protected
|
||||
VectorDb
|
||||
sse_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVectorDB(
|
||||
SseDeserializer deserializer,
|
||||
) {
|
||||
SseDeserializer deserializer) {
|
||||
// Codec=Sse (Serialization based), see doc to use other codecs
|
||||
return VectorDbImpl.frbInternalSseDecode(
|
||||
sse_decode_usize(deserializer),
|
||||
sse_decode_i_32(deserializer),
|
||||
);
|
||||
sse_decode_usize(deserializer), sse_decode_i_32(deserializer));
|
||||
}
|
||||
|
||||
@protected
|
||||
VectorDb
|
||||
sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVectorDB(
|
||||
SseDeserializer deserializer,
|
||||
) {
|
||||
SseDeserializer deserializer) {
|
||||
// Codec=Sse (Serialization based), see doc to use other codecs
|
||||
return VectorDbImpl.frbInternalSseDecode(
|
||||
sse_decode_usize(deserializer),
|
||||
sse_decode_i_32(deserializer),
|
||||
);
|
||||
sse_decode_usize(deserializer), sse_decode_i_32(deserializer));
|
||||
}
|
||||
|
||||
@protected
|
||||
@@ -714,8 +656,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi {
|
||||
|
||||
@protected
|
||||
List<Float32List> sse_decode_list_list_prim_f_32_strict(
|
||||
SseDeserializer deserializer,
|
||||
) {
|
||||
SseDeserializer deserializer) {
|
||||
// Codec=Sse (Serialization based), see doc to use other codecs
|
||||
|
||||
final len_ = sse_decode_i_32(deserializer);
|
||||
@@ -726,6 +667,19 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi {
|
||||
return ans_;
|
||||
}
|
||||
|
||||
@protected
|
||||
List<Uint64List> sse_decode_list_list_prim_u_64_strict(
|
||||
SseDeserializer deserializer) {
|
||||
// Codec=Sse (Serialization based), see doc to use other codecs
|
||||
|
||||
final len_ = sse_decode_i_32(deserializer);
|
||||
final ans_ = <Uint64List>[];
|
||||
for (var idx_ = 0; idx_ < len_; ++idx_) {
|
||||
ans_.add(sse_decode_list_prim_u_64_strict(deserializer));
|
||||
}
|
||||
return ans_;
|
||||
}
|
||||
|
||||
@protected
|
||||
List<double> sse_decode_list_prim_f_32_loose(SseDeserializer deserializer) {
|
||||
// Codec=Sse (Serialization based), see doc to use other codecs
|
||||
@@ -757,8 +711,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi {
|
||||
@protected
|
||||
(Uint64List, Float32List)
|
||||
sse_decode_record_list_prim_u_64_strict_list_prim_f_32_strict(
|
||||
SseDeserializer deserializer,
|
||||
) {
|
||||
SseDeserializer deserializer) {
|
||||
// Codec=Sse (Serialization based), see doc to use other codecs
|
||||
final var_field0 = sse_decode_list_prim_u_64_strict(deserializer);
|
||||
final var_field1 = sse_decode_list_prim_f_32_strict(deserializer);
|
||||
@@ -768,8 +721,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi {
|
||||
@protected
|
||||
(BigInt, BigInt, BigInt, BigInt, BigInt)
|
||||
sse_decode_record_usize_usize_usize_usize_usize(
|
||||
SseDeserializer deserializer,
|
||||
) {
|
||||
SseDeserializer deserializer) {
|
||||
// Codec=Sse (Serialization based), see doc to use other codecs
|
||||
final var_field0 = sse_decode_usize(deserializer);
|
||||
final var_field1 = sse_decode_usize(deserializer);
|
||||
@@ -817,40 +769,28 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi {
|
||||
@protected
|
||||
void
|
||||
sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVectorDB(
|
||||
VectorDb self,
|
||||
SseSerializer serializer,
|
||||
) {
|
||||
VectorDb self, SseSerializer serializer) {
|
||||
// Codec=Sse (Serialization based), see doc to use other codecs
|
||||
sse_encode_usize(
|
||||
(self as VectorDbImpl).frbInternalSseEncode(move: true),
|
||||
serializer,
|
||||
);
|
||||
(self as VectorDbImpl).frbInternalSseEncode(move: true), serializer);
|
||||
}
|
||||
|
||||
@protected
|
||||
void
|
||||
sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVectorDB(
|
||||
VectorDb self,
|
||||
SseSerializer serializer,
|
||||
) {
|
||||
VectorDb self, SseSerializer serializer) {
|
||||
// Codec=Sse (Serialization based), see doc to use other codecs
|
||||
sse_encode_usize(
|
||||
(self as VectorDbImpl).frbInternalSseEncode(move: false),
|
||||
serializer,
|
||||
);
|
||||
(self as VectorDbImpl).frbInternalSseEncode(move: false), serializer);
|
||||
}
|
||||
|
||||
@protected
|
||||
void
|
||||
sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVectorDB(
|
||||
VectorDb self,
|
||||
SseSerializer serializer,
|
||||
) {
|
||||
VectorDb self, SseSerializer serializer) {
|
||||
// Codec=Sse (Serialization based), see doc to use other codecs
|
||||
sse_encode_usize(
|
||||
(self as VectorDbImpl).frbInternalSseEncode(move: null),
|
||||
serializer,
|
||||
);
|
||||
(self as VectorDbImpl).frbInternalSseEncode(move: null), serializer);
|
||||
}
|
||||
|
||||
@protected
|
||||
@@ -867,9 +807,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi {
|
||||
|
||||
@protected
|
||||
void sse_encode_list_list_prim_f_32_strict(
|
||||
List<Float32List> self,
|
||||
SseSerializer serializer,
|
||||
) {
|
||||
List<Float32List> self, SseSerializer serializer) {
|
||||
// Codec=Sse (Serialization based), see doc to use other codecs
|
||||
sse_encode_i_32(self.length, serializer);
|
||||
for (final item in self) {
|
||||
@@ -877,23 +815,28 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi {
|
||||
}
|
||||
}
|
||||
|
||||
@protected
|
||||
void sse_encode_list_list_prim_u_64_strict(
|
||||
List<Uint64List> self, SseSerializer serializer) {
|
||||
// Codec=Sse (Serialization based), see doc to use other codecs
|
||||
sse_encode_i_32(self.length, serializer);
|
||||
for (final item in self) {
|
||||
sse_encode_list_prim_u_64_strict(item, serializer);
|
||||
}
|
||||
}
|
||||
|
||||
@protected
|
||||
void sse_encode_list_prim_f_32_loose(
|
||||
List<double> self,
|
||||
SseSerializer serializer,
|
||||
) {
|
||||
List<double> self, SseSerializer serializer) {
|
||||
// Codec=Sse (Serialization based), see doc to use other codecs
|
||||
sse_encode_i_32(self.length, serializer);
|
||||
serializer.buffer.putFloat32List(
|
||||
self is Float32List ? self : Float32List.fromList(self),
|
||||
);
|
||||
self is Float32List ? self : Float32List.fromList(self));
|
||||
}
|
||||
|
||||
@protected
|
||||
void sse_encode_list_prim_f_32_strict(
|
||||
Float32List self,
|
||||
SseSerializer serializer,
|
||||
) {
|
||||
Float32List self, SseSerializer serializer) {
|
||||
// Codec=Sse (Serialization based), see doc to use other codecs
|
||||
sse_encode_i_32(self.length, serializer);
|
||||
serializer.buffer.putFloat32List(self);
|
||||
@@ -901,9 +844,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi {
|
||||
|
||||
@protected
|
||||
void sse_encode_list_prim_u_64_strict(
|
||||
Uint64List self,
|
||||
SseSerializer serializer,
|
||||
) {
|
||||
Uint64List self, SseSerializer serializer) {
|
||||
// Codec=Sse (Serialization based), see doc to use other codecs
|
||||
sse_encode_i_32(self.length, serializer);
|
||||
serializer.buffer.putUint64List(self);
|
||||
@@ -911,9 +852,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi {
|
||||
|
||||
@protected
|
||||
void sse_encode_list_prim_u_8_strict(
|
||||
Uint8List self,
|
||||
SseSerializer serializer,
|
||||
) {
|
||||
Uint8List self, SseSerializer serializer) {
|
||||
// Codec=Sse (Serialization based), see doc to use other codecs
|
||||
sse_encode_i_32(self.length, serializer);
|
||||
serializer.buffer.putUint8List(self);
|
||||
@@ -921,9 +860,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi {
|
||||
|
||||
@protected
|
||||
void sse_encode_record_list_prim_u_64_strict_list_prim_f_32_strict(
|
||||
(Uint64List, Float32List) self,
|
||||
SseSerializer serializer,
|
||||
) {
|
||||
(Uint64List, Float32List) self, SseSerializer serializer) {
|
||||
// Codec=Sse (Serialization based), see doc to use other codecs
|
||||
sse_encode_list_prim_u_64_strict(self.$1, serializer);
|
||||
sse_encode_list_prim_f_32_strict(self.$2, serializer);
|
||||
@@ -931,9 +868,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi {
|
||||
|
||||
@protected
|
||||
void sse_encode_record_usize_usize_usize_usize_usize(
|
||||
(BigInt, BigInt, BigInt, BigInt, BigInt) self,
|
||||
SseSerializer serializer,
|
||||
) {
|
||||
(BigInt, BigInt, BigInt, BigInt, BigInt) self, SseSerializer serializer) {
|
||||
// Codec=Sse (Serialization based), see doc to use other codecs
|
||||
sse_encode_usize(self.$1, serializer);
|
||||
sse_encode_usize(self.$2, serializer);
|
||||
@@ -999,20 +934,17 @@ class VectorDbImpl extends RustOpaque implements VectorDb {
|
||||
|
||||
Future<void> addVector({required BigInt key, required List<double> vector}) =>
|
||||
RustLib.instance.api.crateApiUsearchApiVectorDbAddVector(
|
||||
that: this,
|
||||
key: key,
|
||||
vector: vector,
|
||||
);
|
||||
that: this, key: key, vector: vector);
|
||||
|
||||
Future<void> bulkAddVectors({
|
||||
required Uint64List keys,
|
||||
required List<Float32List> vectors,
|
||||
}) =>
|
||||
Future<void> bulkAddVectors(
|
||||
{required Uint64List keys, required List<Float32List> vectors}) =>
|
||||
RustLib.instance.api.crateApiUsearchApiVectorDbBulkAddVectors(
|
||||
that: this,
|
||||
keys: keys,
|
||||
vectors: vectors,
|
||||
);
|
||||
that: this, keys: keys, vectors: vectors);
|
||||
|
||||
Future<List<Uint64List>> bulkSearchVectors(
|
||||
{required List<Float32List> queries, required BigInt count}) =>
|
||||
RustLib.instance.api.crateApiUsearchApiVectorDbBulkSearchVectors(
|
||||
that: this, queries: queries, count: count);
|
||||
|
||||
Future<void> deleteIndex() =>
|
||||
RustLib.instance.api.crateApiUsearchApiVectorDbDeleteIndex(
|
||||
@@ -1035,13 +967,8 @@ class VectorDbImpl extends RustOpaque implements VectorDb {
|
||||
that: this,
|
||||
);
|
||||
|
||||
Future<(Uint64List, Float32List)> searchVectors({
|
||||
required List<double> query,
|
||||
required BigInt count,
|
||||
}) =>
|
||||
Future<(Uint64List, Float32List)> searchVectors(
|
||||
{required List<double> query, required BigInt count}) =>
|
||||
RustLib.instance.api.crateApiUsearchApiVectorDbSearchVectors(
|
||||
that: this,
|
||||
query: query,
|
||||
count: count,
|
||||
);
|
||||
that: this, query: query, count: count);
|
||||
}
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
// This file is automatically generated, so please do not edit it.
|
||||
// @generated by `flutter_rust_bridge`@ 2.9.0.
|
||||
|
||||
// ignore_for_file: require_trailing_commas
|
||||
|
||||
// ignore_for_file: unused_import, unused_element, unnecessary_import, duplicate_ignore, invalid_use_of_internal_member, annotate_overrides, non_constant_identifier_names, curly_braces_in_flow_control_structures, prefer_const_literals_to_create_immutables, unused_field
|
||||
|
||||
import 'dart:async';
|
||||
@@ -26,20 +28,17 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl<RustLibWire> {
|
||||
@protected
|
||||
VectorDb
|
||||
dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVectorDB(
|
||||
dynamic raw,
|
||||
);
|
||||
dynamic raw);
|
||||
|
||||
@protected
|
||||
VectorDb
|
||||
dco_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVectorDB(
|
||||
dynamic raw,
|
||||
);
|
||||
dynamic raw);
|
||||
|
||||
@protected
|
||||
VectorDb
|
||||
dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVectorDB(
|
||||
dynamic raw,
|
||||
);
|
||||
dynamic raw);
|
||||
|
||||
@protected
|
||||
String dco_decode_String(dynamic raw);
|
||||
@@ -50,6 +49,9 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl<RustLibWire> {
|
||||
@protected
|
||||
List<Float32List> dco_decode_list_list_prim_f_32_strict(dynamic raw);
|
||||
|
||||
@protected
|
||||
List<Uint64List> dco_decode_list_list_prim_u_64_strict(dynamic raw);
|
||||
|
||||
@protected
|
||||
List<double> dco_decode_list_prim_f_32_loose(dynamic raw);
|
||||
|
||||
@@ -87,20 +89,17 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl<RustLibWire> {
|
||||
@protected
|
||||
VectorDb
|
||||
sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVectorDB(
|
||||
SseDeserializer deserializer,
|
||||
);
|
||||
SseDeserializer deserializer);
|
||||
|
||||
@protected
|
||||
VectorDb
|
||||
sse_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVectorDB(
|
||||
SseDeserializer deserializer,
|
||||
);
|
||||
SseDeserializer deserializer);
|
||||
|
||||
@protected
|
||||
VectorDb
|
||||
sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVectorDB(
|
||||
SseDeserializer deserializer,
|
||||
);
|
||||
SseDeserializer deserializer);
|
||||
|
||||
@protected
|
||||
String sse_decode_String(SseDeserializer deserializer);
|
||||
@@ -110,8 +109,11 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl<RustLibWire> {
|
||||
|
||||
@protected
|
||||
List<Float32List> sse_decode_list_list_prim_f_32_strict(
|
||||
SseDeserializer deserializer,
|
||||
);
|
||||
SseDeserializer deserializer);
|
||||
|
||||
@protected
|
||||
List<Uint64List> sse_decode_list_list_prim_u_64_strict(
|
||||
SseDeserializer deserializer);
|
||||
|
||||
@protected
|
||||
List<double> sse_decode_list_prim_f_32_loose(SseDeserializer deserializer);
|
||||
@@ -128,14 +130,12 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl<RustLibWire> {
|
||||
@protected
|
||||
(Uint64List, Float32List)
|
||||
sse_decode_record_list_prim_u_64_strict_list_prim_f_32_strict(
|
||||
SseDeserializer deserializer,
|
||||
);
|
||||
SseDeserializer deserializer);
|
||||
|
||||
@protected
|
||||
(BigInt, BigInt, BigInt, BigInt, BigInt)
|
||||
sse_decode_record_usize_usize_usize_usize_usize(
|
||||
SseDeserializer deserializer,
|
||||
);
|
||||
SseDeserializer deserializer);
|
||||
|
||||
@protected
|
||||
BigInt sse_decode_u_64(SseDeserializer deserializer);
|
||||
@@ -158,23 +158,17 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl<RustLibWire> {
|
||||
@protected
|
||||
void
|
||||
sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVectorDB(
|
||||
VectorDb self,
|
||||
SseSerializer serializer,
|
||||
);
|
||||
VectorDb self, SseSerializer serializer);
|
||||
|
||||
@protected
|
||||
void
|
||||
sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVectorDB(
|
||||
VectorDb self,
|
||||
SseSerializer serializer,
|
||||
);
|
||||
VectorDb self, SseSerializer serializer);
|
||||
|
||||
@protected
|
||||
void
|
||||
sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVectorDB(
|
||||
VectorDb self,
|
||||
SseSerializer serializer,
|
||||
);
|
||||
VectorDb self, SseSerializer serializer);
|
||||
|
||||
@protected
|
||||
void sse_encode_String(String self, SseSerializer serializer);
|
||||
@@ -184,45 +178,35 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl<RustLibWire> {
|
||||
|
||||
@protected
|
||||
void sse_encode_list_list_prim_f_32_strict(
|
||||
List<Float32List> self,
|
||||
SseSerializer serializer,
|
||||
);
|
||||
List<Float32List> self, SseSerializer serializer);
|
||||
|
||||
@protected
|
||||
void sse_encode_list_list_prim_u_64_strict(
|
||||
List<Uint64List> self, SseSerializer serializer);
|
||||
|
||||
@protected
|
||||
void sse_encode_list_prim_f_32_loose(
|
||||
List<double> self,
|
||||
SseSerializer serializer,
|
||||
);
|
||||
List<double> self, SseSerializer serializer);
|
||||
|
||||
@protected
|
||||
void sse_encode_list_prim_f_32_strict(
|
||||
Float32List self,
|
||||
SseSerializer serializer,
|
||||
);
|
||||
Float32List self, SseSerializer serializer);
|
||||
|
||||
@protected
|
||||
void sse_encode_list_prim_u_64_strict(
|
||||
Uint64List self,
|
||||
SseSerializer serializer,
|
||||
);
|
||||
Uint64List self, SseSerializer serializer);
|
||||
|
||||
@protected
|
||||
void sse_encode_list_prim_u_8_strict(
|
||||
Uint8List self,
|
||||
SseSerializer serializer,
|
||||
);
|
||||
Uint8List self, SseSerializer serializer);
|
||||
|
||||
@protected
|
||||
void sse_encode_record_list_prim_u_64_strict_list_prim_f_32_strict(
|
||||
(Uint64List, Float32List) self,
|
||||
SseSerializer serializer,
|
||||
);
|
||||
(Uint64List, Float32List) self, SseSerializer serializer);
|
||||
|
||||
@protected
|
||||
void sse_encode_record_usize_usize_usize_usize_usize(
|
||||
(BigInt, BigInt, BigInt, BigInt, BigInt) self,
|
||||
SseSerializer serializer,
|
||||
);
|
||||
(BigInt, BigInt, BigInt, BigInt, BigInt) self, SseSerializer serializer);
|
||||
|
||||
@protected
|
||||
void sse_encode_u_64(BigInt self, SseSerializer serializer);
|
||||
@@ -268,8 +252,7 @@ class RustLibWire implements BaseWire {
|
||||
|
||||
late final _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVectorDBPtr =
|
||||
_lookup<ffi.NativeFunction<ffi.Void Function(ffi.Pointer<ffi.Void>)>>(
|
||||
'frbgen_photos_rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVectorDB',
|
||||
);
|
||||
'frbgen_photos_rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVectorDB');
|
||||
late final _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVectorDB =
|
||||
_rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVectorDBPtr
|
||||
.asFunction<void Function(ffi.Pointer<ffi.Void>)>();
|
||||
@@ -285,8 +268,7 @@ class RustLibWire implements BaseWire {
|
||||
|
||||
late final _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVectorDBPtr =
|
||||
_lookup<ffi.NativeFunction<ffi.Void Function(ffi.Pointer<ffi.Void>)>>(
|
||||
'frbgen_photos_rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVectorDB',
|
||||
);
|
||||
'frbgen_photos_rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVectorDB');
|
||||
late final _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVectorDB =
|
||||
_rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVectorDBPtr
|
||||
.asFunction<void Function(ffi.Pointer<ffi.Void>)>();
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
// This file is automatically generated, so please do not edit it.
|
||||
// @generated by `flutter_rust_bridge`@ 2.9.0.
|
||||
|
||||
// ignore_for_file: require_trailing_commas
|
||||
|
||||
// ignore_for_file: unused_import, unused_element, unnecessary_import, duplicate_ignore, invalid_use_of_internal_member, annotate_overrides, non_constant_identifier_names, curly_braces_in_flow_control_structures, prefer_const_literals_to_create_immutables, unused_field
|
||||
|
||||
// Static analysis wrongly picks the IO variant, thus ignore this
|
||||
@@ -28,20 +30,17 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl<RustLibWire> {
|
||||
@protected
|
||||
VectorDb
|
||||
dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVectorDB(
|
||||
dynamic raw,
|
||||
);
|
||||
dynamic raw);
|
||||
|
||||
@protected
|
||||
VectorDb
|
||||
dco_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVectorDB(
|
||||
dynamic raw,
|
||||
);
|
||||
dynamic raw);
|
||||
|
||||
@protected
|
||||
VectorDb
|
||||
dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVectorDB(
|
||||
dynamic raw,
|
||||
);
|
||||
dynamic raw);
|
||||
|
||||
@protected
|
||||
String dco_decode_String(dynamic raw);
|
||||
@@ -52,6 +51,9 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl<RustLibWire> {
|
||||
@protected
|
||||
List<Float32List> dco_decode_list_list_prim_f_32_strict(dynamic raw);
|
||||
|
||||
@protected
|
||||
List<Uint64List> dco_decode_list_list_prim_u_64_strict(dynamic raw);
|
||||
|
||||
@protected
|
||||
List<double> dco_decode_list_prim_f_32_loose(dynamic raw);
|
||||
|
||||
@@ -89,20 +91,17 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl<RustLibWire> {
|
||||
@protected
|
||||
VectorDb
|
||||
sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVectorDB(
|
||||
SseDeserializer deserializer,
|
||||
);
|
||||
SseDeserializer deserializer);
|
||||
|
||||
@protected
|
||||
VectorDb
|
||||
sse_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVectorDB(
|
||||
SseDeserializer deserializer,
|
||||
);
|
||||
SseDeserializer deserializer);
|
||||
|
||||
@protected
|
||||
VectorDb
|
||||
sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVectorDB(
|
||||
SseDeserializer deserializer,
|
||||
);
|
||||
SseDeserializer deserializer);
|
||||
|
||||
@protected
|
||||
String sse_decode_String(SseDeserializer deserializer);
|
||||
@@ -112,8 +111,11 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl<RustLibWire> {
|
||||
|
||||
@protected
|
||||
List<Float32List> sse_decode_list_list_prim_f_32_strict(
|
||||
SseDeserializer deserializer,
|
||||
);
|
||||
SseDeserializer deserializer);
|
||||
|
||||
@protected
|
||||
List<Uint64List> sse_decode_list_list_prim_u_64_strict(
|
||||
SseDeserializer deserializer);
|
||||
|
||||
@protected
|
||||
List<double> sse_decode_list_prim_f_32_loose(SseDeserializer deserializer);
|
||||
@@ -130,14 +132,12 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl<RustLibWire> {
|
||||
@protected
|
||||
(Uint64List, Float32List)
|
||||
sse_decode_record_list_prim_u_64_strict_list_prim_f_32_strict(
|
||||
SseDeserializer deserializer,
|
||||
);
|
||||
SseDeserializer deserializer);
|
||||
|
||||
@protected
|
||||
(BigInt, BigInt, BigInt, BigInt, BigInt)
|
||||
sse_decode_record_usize_usize_usize_usize_usize(
|
||||
SseDeserializer deserializer,
|
||||
);
|
||||
SseDeserializer deserializer);
|
||||
|
||||
@protected
|
||||
BigInt sse_decode_u_64(SseDeserializer deserializer);
|
||||
@@ -160,23 +160,17 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl<RustLibWire> {
|
||||
@protected
|
||||
void
|
||||
sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVectorDB(
|
||||
VectorDb self,
|
||||
SseSerializer serializer,
|
||||
);
|
||||
VectorDb self, SseSerializer serializer);
|
||||
|
||||
@protected
|
||||
void
|
||||
sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVectorDB(
|
||||
VectorDb self,
|
||||
SseSerializer serializer,
|
||||
);
|
||||
VectorDb self, SseSerializer serializer);
|
||||
|
||||
@protected
|
||||
void
|
||||
sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVectorDB(
|
||||
VectorDb self,
|
||||
SseSerializer serializer,
|
||||
);
|
||||
VectorDb self, SseSerializer serializer);
|
||||
|
||||
@protected
|
||||
void sse_encode_String(String self, SseSerializer serializer);
|
||||
@@ -186,45 +180,35 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl<RustLibWire> {
|
||||
|
||||
@protected
|
||||
void sse_encode_list_list_prim_f_32_strict(
|
||||
List<Float32List> self,
|
||||
SseSerializer serializer,
|
||||
);
|
||||
List<Float32List> self, SseSerializer serializer);
|
||||
|
||||
@protected
|
||||
void sse_encode_list_list_prim_u_64_strict(
|
||||
List<Uint64List> self, SseSerializer serializer);
|
||||
|
||||
@protected
|
||||
void sse_encode_list_prim_f_32_loose(
|
||||
List<double> self,
|
||||
SseSerializer serializer,
|
||||
);
|
||||
List<double> self, SseSerializer serializer);
|
||||
|
||||
@protected
|
||||
void sse_encode_list_prim_f_32_strict(
|
||||
Float32List self,
|
||||
SseSerializer serializer,
|
||||
);
|
||||
Float32List self, SseSerializer serializer);
|
||||
|
||||
@protected
|
||||
void sse_encode_list_prim_u_64_strict(
|
||||
Uint64List self,
|
||||
SseSerializer serializer,
|
||||
);
|
||||
Uint64List self, SseSerializer serializer);
|
||||
|
||||
@protected
|
||||
void sse_encode_list_prim_u_8_strict(
|
||||
Uint8List self,
|
||||
SseSerializer serializer,
|
||||
);
|
||||
Uint8List self, SseSerializer serializer);
|
||||
|
||||
@protected
|
||||
void sse_encode_record_list_prim_u_64_strict_list_prim_f_32_strict(
|
||||
(Uint64List, Float32List) self,
|
||||
SseSerializer serializer,
|
||||
);
|
||||
(Uint64List, Float32List) self, SseSerializer serializer);
|
||||
|
||||
@protected
|
||||
void sse_encode_record_usize_usize_usize_usize_usize(
|
||||
(BigInt, BigInt, BigInt, BigInt, BigInt) self,
|
||||
SseSerializer serializer,
|
||||
);
|
||||
(BigInt, BigInt, BigInt, BigInt, BigInt) self, SseSerializer serializer);
|
||||
|
||||
@protected
|
||||
void sse_encode_u_64(BigInt self, SseSerializer serializer);
|
||||
@@ -250,23 +234,17 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl<RustLibWire> {
|
||||
class RustLibWire implements BaseWire {
|
||||
RustLibWire.fromExternalLibrary(ExternalLibrary lib);
|
||||
|
||||
void
|
||||
rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVectorDB(
|
||||
int ptr,
|
||||
) =>
|
||||
wasmModule
|
||||
.rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVectorDB(
|
||||
ptr,
|
||||
);
|
||||
void rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVectorDB(
|
||||
int ptr) =>
|
||||
wasmModule
|
||||
.rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVectorDB(
|
||||
ptr);
|
||||
|
||||
void
|
||||
rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVectorDB(
|
||||
int ptr,
|
||||
) =>
|
||||
wasmModule
|
||||
.rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVectorDB(
|
||||
ptr,
|
||||
);
|
||||
void rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVectorDB(
|
||||
int ptr) =>
|
||||
wasmModule
|
||||
.rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVectorDB(
|
||||
ptr);
|
||||
}
|
||||
|
||||
@JS('wasm_bindgen')
|
||||
@@ -277,11 +255,9 @@ external RustLibWasmModule get wasmModule;
|
||||
extension type RustLibWasmModule._(JSObject _) implements JSObject {
|
||||
external void
|
||||
rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVectorDB(
|
||||
int ptr,
|
||||
);
|
||||
int ptr);
|
||||
|
||||
external void
|
||||
rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVectorDB(
|
||||
int ptr,
|
||||
);
|
||||
int ptr);
|
||||
}
|
||||
|
||||
@@ -1,13 +1,17 @@
|
||||
import "dart:async";
|
||||
import "dart:typed_data" show Float32List;
|
||||
|
||||
import "package:flutter/foundation.dart" show kDebugMode;
|
||||
import 'package:flutter/material.dart';
|
||||
import "package:flutter_rust_bridge/flutter_rust_bridge.dart";
|
||||
import "package:logging/logging.dart";
|
||||
import "package:ml_linalg/linalg.dart";
|
||||
import "package:path_provider/path_provider.dart";
|
||||
import "package:photos/core/event_bus.dart";
|
||||
import "package:photos/db/ml/db.dart";
|
||||
import "package:photos/events/people_changed_event.dart";
|
||||
import "package:photos/extensions/stop_watch.dart";
|
||||
import "package:photos/generated/protos/ente/common/vector.pb.dart";
|
||||
import "package:photos/models/ml/face/person.dart";
|
||||
import "package:photos/service_locator.dart";
|
||||
import "package:photos/services/machine_learning/face_ml/person/person_service.dart";
|
||||
@@ -119,6 +123,105 @@ class _MLDebugSectionWidgetState extends State<MLDebugSectionWidget> {
|
||||
},
|
||||
),
|
||||
sectionOptionSpacing,
|
||||
MenuItemWidget(
|
||||
captionedTextWidget: const CaptionedTextWidget(
|
||||
title: "Benchmark Vector DB Face",
|
||||
),
|
||||
pressedColor: getEnteColorScheme(context).fillFaint,
|
||||
trailingIcon: Icons.chevron_right_outlined,
|
||||
trailingIconIsMuted: true,
|
||||
onTap: () async {
|
||||
try {
|
||||
final w = (kDebugMode ? EnteWatch('MLDebugSectionWidget') : null)
|
||||
?..start();
|
||||
final persons = await PersonService.instance.getPersons();
|
||||
w?.log('get all persons for ${persons.length} persons');
|
||||
String laurensID = '';
|
||||
for (final person in persons) {
|
||||
if (person.data.name.toLowerCase().contains('laurens')) {
|
||||
laurensID = person.remoteID;
|
||||
}
|
||||
}
|
||||
if (laurensID.isEmpty) {
|
||||
throw Exception('Laurens not found');
|
||||
}
|
||||
final laurensFaceIDs =
|
||||
await MLDataDB.instance.getFaceIDsForPerson(laurensID);
|
||||
w?.log(
|
||||
'getting all face ids for laurens (${laurensFaceIDs.length} faces)',
|
||||
);
|
||||
final laurensFaceIdToEmbeddingData = await MLDataDB.instance
|
||||
.getFaceEmbeddingMapForFaces(laurensFaceIDs);
|
||||
|
||||
// Fill the vector DB with all embeddings
|
||||
final laurensFaceIdToFloat32 = laurensFaceIdToEmbeddingData.map(
|
||||
(key, value) => MapEntry(
|
||||
key,
|
||||
Float32List.fromList(EVector.fromBuffer(value).values),
|
||||
),
|
||||
);
|
||||
final keys = Uint64List.fromList(
|
||||
List.generate(
|
||||
laurensFaceIdToFloat32.length,
|
||||
(index) => BigInt.from(index + 1),
|
||||
),
|
||||
);
|
||||
final vectorDB = VectorDb(
|
||||
filePath: (await getApplicationSupportDirectory()).path +
|
||||
"/ml/test/vector_db_face_index.usearch",
|
||||
dimensions: BigInt.from(
|
||||
laurensFaceIdToFloat32.values.first.length,
|
||||
),
|
||||
);
|
||||
await vectorDB.resetIndex();
|
||||
await vectorDB.bulkAddVectors(
|
||||
keys: keys,
|
||||
vectors: laurensFaceIdToFloat32.values.toList(),
|
||||
);
|
||||
|
||||
// Benchmarking the vector DB
|
||||
final queries = laurensFaceIdToFloat32.values.toList();
|
||||
final count = BigInt.from(10);
|
||||
w?.reset();
|
||||
final results = await vectorDB.bulkSearchVectors(
|
||||
queries: queries,
|
||||
count: count,
|
||||
);
|
||||
|
||||
w?.log(
|
||||
'Done with ${queries.length * queries.length} (${queries.length} x ${queries.length}}) embeddings comparisons in vector DB',
|
||||
);
|
||||
logger.info(
|
||||
'vector db results: ${results.length} results, first: ${results.first}, hundredth: ${results[99]}',
|
||||
);
|
||||
|
||||
// Benchmarking our own vector comparisons
|
||||
final laurensFaceIdToEmbeddingVectors =
|
||||
laurensFaceIdToEmbeddingData.map(
|
||||
(key, value) => MapEntry(
|
||||
key,
|
||||
Vector.fromList(EVector.fromBuffer(value).values),
|
||||
),
|
||||
);
|
||||
final faceVectors = laurensFaceIdToEmbeddingVectors.values;
|
||||
w?.reset();
|
||||
for (final faceVector in faceVectors) {
|
||||
for (final otherFaceVector in faceVectors) {
|
||||
final _ = 1 - faceVector.dot(otherFaceVector);
|
||||
}
|
||||
}
|
||||
|
||||
w?.log(
|
||||
'Done with ${faceVectors.length * faceVectors.length} (${faceVectors.length} x ${faceVectors.length}}) embeddings comparisons in own method',
|
||||
);
|
||||
} catch (e, s) {
|
||||
logger.warning('vector DB search failed ', e, s);
|
||||
|
||||
await showGenericErrorDialog(context: context, error: e);
|
||||
}
|
||||
},
|
||||
),
|
||||
sectionOptionSpacing,
|
||||
MenuItemWidget(
|
||||
captionedTextWidget: const CaptionedTextWidget(
|
||||
title: "Test rust bridge",
|
||||
|
||||
@@ -84,6 +84,19 @@ impl VectorDB {
|
||||
(matches.keys, matches.distances)
|
||||
}
|
||||
|
||||
pub fn bulk_search_vectors(&self, queries: &Vec<Vec<f32>>, count: usize) -> Vec<Vec<u64>> {
|
||||
let mut keys = Vec::new();
|
||||
|
||||
for query in queries {
|
||||
let matches = self
|
||||
.index
|
||||
.search(query, count)
|
||||
.expect("Failed to search vectors");
|
||||
keys.push(matches.keys);
|
||||
}
|
||||
keys
|
||||
}
|
||||
|
||||
pub fn get_vector(&self, key: u64) -> Vec<f32> {
|
||||
let mut vector: Vec<f32> = vec![0.0; self.index.dimensions()];
|
||||
self.index
|
||||
|
||||
@@ -38,7 +38,7 @@ flutter_rust_bridge::frb_generated_boilerplate!(
|
||||
default_rust_auto_opaque = RustAutoOpaqueMoi,
|
||||
);
|
||||
pub(crate) const FLUTTER_RUST_BRIDGE_CODEGEN_VERSION: &str = "2.9.0";
|
||||
pub(crate) const FLUTTER_RUST_BRIDGE_CODEGEN_CONTENT_HASH: i32 = 862168794;
|
||||
pub(crate) const FLUTTER_RUST_BRIDGE_CODEGEN_CONTENT_HASH: i32 = -674813457;
|
||||
|
||||
// Section: executor
|
||||
|
||||
@@ -160,6 +160,63 @@ fn wire__crate__api__usearch_api__VectorDb_bulk_add_vectors_impl(
|
||||
},
|
||||
)
|
||||
}
|
||||
fn wire__crate__api__usearch_api__VectorDb_bulk_search_vectors_impl(
|
||||
port_: flutter_rust_bridge::for_generated::MessagePort,
|
||||
ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr,
|
||||
rust_vec_len_: i32,
|
||||
data_len_: i32,
|
||||
) {
|
||||
FLUTTER_RUST_BRIDGE_HANDLER.wrap_normal::<flutter_rust_bridge::for_generated::SseCodec, _, _>(
|
||||
flutter_rust_bridge::for_generated::TaskInfo {
|
||||
debug_name: "VectorDb_bulk_search_vectors",
|
||||
port: Some(port_),
|
||||
mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal,
|
||||
},
|
||||
move || {
|
||||
let message = unsafe {
|
||||
flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire(
|
||||
ptr_,
|
||||
rust_vec_len_,
|
||||
data_len_,
|
||||
)
|
||||
};
|
||||
let mut deserializer =
|
||||
flutter_rust_bridge::for_generated::SseDeserializer::new(message);
|
||||
let api_that = <RustOpaqueMoi<
|
||||
flutter_rust_bridge::for_generated::RustAutoOpaqueInner<VectorDB>,
|
||||
>>::sse_decode(&mut deserializer);
|
||||
let api_queries = <Vec<Vec<f32>>>::sse_decode(&mut deserializer);
|
||||
let api_count = <usize>::sse_decode(&mut deserializer);
|
||||
deserializer.end();
|
||||
move |context| {
|
||||
transform_result_sse::<_, ()>((move || {
|
||||
let mut api_that_guard = None;
|
||||
let decode_indices_ =
|
||||
flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![
|
||||
flutter_rust_bridge::for_generated::LockableOrderInfo::new(
|
||||
&api_that, 0, false,
|
||||
),
|
||||
]);
|
||||
for i in decode_indices_ {
|
||||
match i {
|
||||
0 => api_that_guard = Some(api_that.lockable_decode_sync_ref()),
|
||||
_ => unreachable!(),
|
||||
}
|
||||
}
|
||||
let api_that_guard = api_that_guard.unwrap();
|
||||
let output_ok = Result::<_, ()>::Ok(
|
||||
crate::api::usearch_api::VectorDB::bulk_search_vectors(
|
||||
&*api_that_guard,
|
||||
&api_queries,
|
||||
api_count,
|
||||
),
|
||||
)?;
|
||||
Ok(output_ok)
|
||||
})())
|
||||
}
|
||||
},
|
||||
)
|
||||
}
|
||||
fn wire__crate__api__usearch_api__VectorDb_delete_index_impl(
|
||||
port_: flutter_rust_bridge::for_generated::MessagePort,
|
||||
ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr,
|
||||
@@ -611,6 +668,18 @@ impl SseDecode for Vec<Vec<f32>> {
|
||||
}
|
||||
}
|
||||
|
||||
impl SseDecode for Vec<Vec<u64>> {
|
||||
// Codec=Sse (Serialization based), see doc to use other codecs
|
||||
fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self {
|
||||
let mut len_ = <i32>::sse_decode(deserializer);
|
||||
let mut ans_ = vec![];
|
||||
for idx_ in 0..len_ {
|
||||
ans_.push(<Vec<u64>>::sse_decode(deserializer));
|
||||
}
|
||||
return ans_;
|
||||
}
|
||||
}
|
||||
|
||||
impl SseDecode for Vec<f32> {
|
||||
// Codec=Sse (Serialization based), see doc to use other codecs
|
||||
fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self {
|
||||
@@ -729,43 +798,49 @@ fn pde_ffi_dispatcher_primary_impl(
|
||||
rust_vec_len,
|
||||
data_len,
|
||||
),
|
||||
3 => wire__crate__api__usearch_api__VectorDb_delete_index_impl(
|
||||
3 => wire__crate__api__usearch_api__VectorDb_bulk_search_vectors_impl(
|
||||
port,
|
||||
ptr,
|
||||
rust_vec_len,
|
||||
data_len,
|
||||
),
|
||||
4 => wire__crate__api__usearch_api__VectorDb_get_index_stats_impl(
|
||||
4 => wire__crate__api__usearch_api__VectorDb_delete_index_impl(
|
||||
port,
|
||||
ptr,
|
||||
rust_vec_len,
|
||||
data_len,
|
||||
),
|
||||
5 => wire__crate__api__usearch_api__VectorDb_get_vector_impl(
|
||||
5 => wire__crate__api__usearch_api__VectorDb_get_index_stats_impl(
|
||||
port,
|
||||
ptr,
|
||||
rust_vec_len,
|
||||
data_len,
|
||||
),
|
||||
7 => wire__crate__api__usearch_api__VectorDb_remove_vector_impl(
|
||||
6 => wire__crate__api__usearch_api__VectorDb_get_vector_impl(
|
||||
port,
|
||||
ptr,
|
||||
rust_vec_len,
|
||||
data_len,
|
||||
),
|
||||
8 => wire__crate__api__usearch_api__VectorDb_reset_index_impl(
|
||||
8 => wire__crate__api__usearch_api__VectorDb_remove_vector_impl(
|
||||
port,
|
||||
ptr,
|
||||
rust_vec_len,
|
||||
data_len,
|
||||
),
|
||||
9 => wire__crate__api__usearch_api__VectorDb_search_vectors_impl(
|
||||
9 => wire__crate__api__usearch_api__VectorDb_reset_index_impl(
|
||||
port,
|
||||
ptr,
|
||||
rust_vec_len,
|
||||
data_len,
|
||||
),
|
||||
11 => wire__crate__api__simple__init_app_impl(port, ptr, rust_vec_len, data_len),
|
||||
10 => wire__crate__api__usearch_api__VectorDb_search_vectors_impl(
|
||||
port,
|
||||
ptr,
|
||||
rust_vec_len,
|
||||
data_len,
|
||||
),
|
||||
12 => wire__crate__api__simple__init_app_impl(port, ptr, rust_vec_len, data_len),
|
||||
_ => unreachable!(),
|
||||
}
|
||||
}
|
||||
@@ -778,8 +853,8 @@ fn pde_ffi_dispatcher_sync_impl(
|
||||
) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse {
|
||||
// Codec=Pde (Serialization + dispatch), see doc to use other codecs
|
||||
match func_id {
|
||||
6 => wire__crate__api__usearch_api__VectorDb_new_impl(ptr, rust_vec_len, data_len),
|
||||
10 => wire__crate__api__simple__greet_impl(ptr, rust_vec_len, data_len),
|
||||
7 => wire__crate__api__usearch_api__VectorDb_new_impl(ptr, rust_vec_len, data_len),
|
||||
11 => wire__crate__api__simple__greet_impl(ptr, rust_vec_len, data_len),
|
||||
_ => unreachable!(),
|
||||
}
|
||||
}
|
||||
@@ -843,6 +918,16 @@ impl SseEncode for Vec<Vec<f32>> {
|
||||
}
|
||||
}
|
||||
|
||||
impl SseEncode for Vec<Vec<u64>> {
|
||||
// Codec=Sse (Serialization based), see doc to use other codecs
|
||||
fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) {
|
||||
<i32>::sse_encode(self.len() as _, serializer);
|
||||
for item in self {
|
||||
<Vec<u64>>::sse_encode(item, serializer);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl SseEncode for Vec<f32> {
|
||||
// Codec=Sse (Serialization based), see doc to use other codecs
|
||||
fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) {
|
||||
|
||||
Reference in New Issue
Block a user