searchSimilar method

  1. @override
Future<List<RetrievalResult>> searchSimilar({
  1. required String query,
  2. int topK = 5,
  3. double threshold = 0.0,
  4. Filter? filter,
})
override

Search for similar documents.

filter is an optional payload predicate. Honored on every native platform (qdrant-edge backend). Silently ignored on Web (the wa-sqlite store has no payload filtering); passing a non-empty filter on Web returns the same hits as filter: null and never throws.

Implementation

@override
Future<List<RetrievalResult>> searchSimilar({
  required String query,
  int topK = 5,
  double threshold = 0.0,
  Filter? filter, // ignored on Web (wa-sqlite has no payload filtering)
}) async {
  if (_vectorStoreRepository == null) {
    throw StateError(
        'VectorStore not initialized. Call initializeVectorStore() first.');
  }

  if (_initializedEmbeddingModel == null) {
    throw StateError(
        'Embedding model not created. Call createEmbeddingModel() first.');
  }

  // Generate query embedding and search
  final queryEmbedding =
      await _initializedEmbeddingModel!.generateEmbedding(query);
  return await _vectorStoreRepository!.searchSimilar(
    queryEmbedding: queryEmbedding,
    topK: topK,
    threshold: threshold,
    filter: filter,
  );
}