feat(rag): dense+BM25 hybrid on MilvusClientV2, drop SDK path
Replace legacy MilvusServiceClient knowledge search/write with a single MilvusClientV2 hybrid store (BM25 function + dense ANN + RRFRanker). Use collection biz_hybrid and require knowledge reindex.
This commit is contained in:
@@ -0,0 +1,33 @@
|
||||
# rag-bm25-hybrid Specification
|
||||
|
||||
## Purpose
|
||||
TBD - created by archiving change rag-bm25-hybrid-drop-sdk. Update Purpose after archive.
|
||||
## Requirements
|
||||
### Requirement: Knowledge vector backend SHALL be a single Milvus V2 store
|
||||
|
||||
Knowledge indexing and retrieval SHALL use one MilvusClientV2-backed store. Legacy MilvusServiceClient SDK search modes (`sdk`, `auto` fallback to SDK) SHALL NOT be used for `lookup_knowledge`.
|
||||
|
||||
#### Scenario: No SDK search mode
|
||||
|
||||
- **WHEN** knowledge retrieval executes
|
||||
- **THEN** it SHALL NOT call legacy SDK `search` APIs for candidate generation
|
||||
|
||||
### Requirement: Hybrid mode SHALL fuse dense ANN and BM25 sparse ANN
|
||||
|
||||
When search mode is hybrid, the store SHALL query dense vectors and BM25 sparse vectors and fuse results with RRF (or equivalent ranker) before returning hits.
|
||||
|
||||
#### Scenario: Hybrid uses BM25 text query
|
||||
|
||||
- **WHEN** hybrid search runs with a text query
|
||||
- **THEN** one search leg SHALL use the BM25/sparse field with the raw query text
|
||||
- **AND** another leg SHALL use the dense embedding of the query
|
||||
|
||||
### Requirement: Write path SHALL populate BM25 input text and dense vectors
|
||||
|
||||
Document chunk indexing SHALL write original content, BM25 input text, dense embedding, and metadata required for chunk identity.
|
||||
|
||||
#### Scenario: Index writes search_text and vector
|
||||
|
||||
- **WHEN** a chunk is indexed
|
||||
- **THEN** the store row SHALL include searchable text for BM25 and a dense vector field
|
||||
|
||||
Reference in New Issue
Block a user