findSimilar method

List<SimilarityResult> findSimilar(
  1. List<double> queryEmbedding, {
  2. double threshold = 0.85,
  3. int limit = 10,
  4. String? excludeId,
})

Finds all functions with similarity above threshold.

Returns a list of (functionId, similarity) pairs sorted by similarity descending.

Implementation

List<SimilarityResult> findSimilar(
  List<double> queryEmbedding, {
  double threshold = 0.85,
  int limit = 10,
  String? excludeId,
}) {
  final results = <SimilarityResult>[];

  for (final entry in _cache.entries) {
    if (entry.key == excludeId) continue;

    final similarity = OnnxRuntime.cosineSimilarity(
      queryEmbedding,
      entry.value.embedding,
    );

    if (similarity >= threshold) {
      results.add(SimilarityResult(
        functionId: entry.key,
        similarity: similarity,
      ));
    }
  }

  // Sort by similarity descending
  results.sort((a, b) => b.similarity.compareTo(a.similarity));

  // Apply limit
  if (results.length > limit) {
    return results.sublist(0, limit);
  }

  return results;
}