query method
Implementation
@override
Future<VectorSpaceResult> query(String query, {int maxResults = 10}) async {
List<VectorQueryDocumentSnapshot> snapshots =
await collection
.findNearest(
vectorField: vectorField,
queryVector: VectorValue(vector: await embedder.embed(query)),
limit: maxResults,
distanceMeasure: distanceMeasure,
)
.get();
return VectorSpaceResult(
results: [
...await Future.wait(
snapshots.mapIndexed(
(i, index) => _otk
.estimateTokens(i.data?[contentField] ?? "")
.then(
(tk) => VectorResult(
contentTokenCount: tk,
id: i.id,
content: i.data?[contentField] ?? "",
metadata: i.data?[metadataField] ?? {},
score: i.score ?? (1.0 / (index + 1)),
),
),
),
),
],
);
}