similaritySearch method

  1. @override
Future<List<AIDocument>> similaritySearch(
  1. String query, {
  2. int limit = 4,
})
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();
}