query method

  1. @override
Future<VectorSpaceResult> query(
  1. String query, {
  2. int maxResults = 10,
})
override

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)),
                ),
              ),
        ),
      ),
    ],
  );
}