-
Notifications
You must be signed in to change notification settings - Fork 83
Open
Description
Description
Enable VSAG search operations to support multiple queries in a single call, leveraging the existing multi-element capability of DatasetPtr.
Background
Currently, search methods (KnnSearch, RangeSearch, SearchWithRequest) only accept a single query vector (NumElements=1). However, DatasetPtr already supports multiple elements through its NumElements API. Allowing batch queries would improve efficiency by reducing API call overhead and enabling better optimization opportunities.
Requirements
- Modify HGraph::SearchWithRequest to support multi-query search
- Update HGraph::KnnSearch and RangeSearch for batch operations
- Update SparseIndex::KnnSearch and RangeSearch for multi-query
- Update SINDI::KnnSearch and RangeSearch for multi-query
- Ensure backward compatibility (single query still works)
- Update error messages for clarity
Technical Details
- Remove `GetNumElements() == 1` restrictions
- Loop over each query vector using `get_data(query, q_idx)`
- Concatenate results: for N queries with k results each, return N*k elements
- IteratorContext-based search remains single-query only due to state tracking
Acceptance Criteria
- Multi-query search returns correct results for HGraph index
- Multi-query search returns correct results for SparseIndex
- Multi-query search returns correct results for SINDI
- Single query behavior unchanged
- Unit tests pass
- Release build successful
Related
- Original task file: batch_query.md
- Implementation plan: plan.md
Notes
- Results are concatenated in query order: [q0_0..q0_k-1, q1_0..q1_k-1, ...]
- IteratorContext-based search explicitly requires NumElements=1
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels