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