query method

  1. @override
Future<List<List<QuerySegmentResult>>> query(
  1. String collectionName,
  2. List<String> queryTexts,
  3. LLMSettings llmSettings, {
  4. int nResults = 2,
})
override

Implementation

@override
Future<List<List<QuerySegmentResult>>> query(String collectionName, List<String> queryTexts, LLMSettings llmSettings, { int nResults = 2 }) async {
  EmbeddingFunction embeddingFunction = OpenAIEmbeddingFunction(llmConfig: llmSettings.llmConfig, listen: llmSettings.listenToken);
  List<List<QuerySegmentResult>> segmentResultListList = [];
  try {
    Collection collection = await client.getCollection(name: collectionName, embeddingFunction: embeddingFunction);
    QueryResponse queryResponse = await collection.query(queryTexts: queryTexts, nResults: nResults );

    for(int i=0; i< queryTexts.length; i++) {
      List<QuerySegmentResult> segmentResultList = [];

      for(int j=0; j< queryResponse.ids[i].length; j++) {
        QuerySegmentResult segmentResult = QuerySegmentResult(
            id: queryResponse.ids[i][j],
            text: queryResponse.documents![i][j]!,
            metadata: queryResponse.metadatas?[i][j]==null?{}:_convertToFlatMetadata(queryResponse.metadatas![i][j]!),
            distance: queryResponse.distances![i][j]
        );
        segmentResultList.add(segmentResult);
      }
      segmentResultListList.add(segmentResultList);
    }
  } on ChromaApiClientException catch(e) {
    VectorDatabaseException vdbException = VectorDatabaseException(
      code: e.code??500,
      message: e.message + ": " + (e.body is String ? (e.body as String) : e.body.toString())
    );
    throw vdbException;
  }
  return segmentResultListList;
}