2.4 KiB
2.4 KiB
ADR 0001: Single Collection with Metadata Filtering
Status
Accepted
Context
The current architecture uses ~30 collections in ChromaDB, each representing an insurance domain. The system must classify incoming queries to a single collection before retrieval. Misclassification leads to irrelevant results with no recovery path.
The current hybrid classifier (keyword-first cascade with similarity + LLM) has:
- No measurable accuracy metrics
- No visibility into keyword coverage
- Degraded performance on ambiguous queries
- Similarity score domination when signals conflict
Insurance domains are semantically similar — many questions could plausibly belong to multiple domains (e.g., "claim denial appeal" could be car, health, fire, etc.).
Decision
Migrate to a single collection in Qdrant with rich metadata on each chunk:
domain: car | health | fire | life | travel | ...document_type: policy | claim | faq | terms | ...language: fa | ensource_file: filenamechunk_index: position in source document
Queries will use metadata filtering to narrow search space when domain is known, or search the entire collection when ambiguous.
Consequences
Positive
- Eliminates classification failure mode — no single point of failure at the routing stage
- Graceful degradation — ambiguous queries search broader, still retrieve relevant results
- Simpler pipeline — one collection to manage, one index to optimize
- Qdrant excels at filtered search — metadata filtering happens before vector search, maintaining performance
- Easier to add new domains — just add documents with new domain metadata, no collection creation
Negative
- Larger index to search — all domains in one collection
- Requires disciplined metadata — incorrect or missing metadata will cause retrieval failures
- Potential for cross-domain noise — irrelevant domains could appear in results if filtering isn't precise
Neutral
- Reranking becomes more important to sort results across domains
- Embedding quality becomes more critical — must distinguish semantically similar domains
Alternatives Considered
- Keep 30 collections + improve classifier — adds metrics but retains single point of failure
- Hybrid: few collections (3-5) + metadata — reduces but doesn't eliminate classification problem
- Multi-collection search with reranking — more robust but slower and more complex