search method

Future<List<ChunkSearchResult>> search({
  1. String? text,
  2. int limit = 10,
})

Implementation

Future<List<ChunkSearchResult>> search({
  String? text,
  int limit = 10,
}) async {
  if (text == null) {
    throw ArgumentError('text must be provided.');
  }

  if (_embeddingGenerator == null) {
    throw Exception('Embedding generator not set. Call setEmbeddingGenerator() first.');
  }

  final queryEmbedding = await _embeddingGenerator!(text);

  // Use ObjectBox's native vector search with HNSW index
  final query = chunkBox
      .query(DocumentChunk_.embeddings.nearestNeighborsF32(queryEmbedding, limit))
      .build();

  final results = query.findWithScores();
  query.close();
  return results.map((result) => ChunkSearchResult(
    chunk: result.object,
    distance: result.score,
  )).toList();
}