similaritySearch method
override
Searches for the most similar documents to the given query.
query The text query to search for.
limit Maximum number of documents to return.
Implementation
@override
Future<List<AIDocument>> similaritySearch(String query,
{int limit = 4}) async {
if (_documents.isEmpty) return [];
// Generate embedding for the search query
final queryEmbedding = await embedder.embed(query);
// Calculate similarities
final scored = _documents.map((doc) {
return MapEntry(doc, doc.similarityTo(queryEmbedding));
}).toList();
// Sort descending by similarity score
scored.sort((a, b) => b.value.compareTo(a.value));
// Return top K
return scored.take(limit).map((e) => e.key).toList();
}