Rag And Retrieval medium
A multi-tenant SaaS app stores all tenants in one vector index with a tenant_id field. Queries fetch the top 20 chunks by similarity and then drop chunks from other tenants. Small tenants often get 0-2 results. Why does this happen, and what is the fix?
- A The HNSW graph is undertrained for small tenants; rebuild the index more often so their vectors get better links.
- B Small tenants' documents are too short; merge them into larger chunks so that their vectors score higher globally.
- C Post-filtering discards most of the top 20; apply the tenant filter inside the search or partition by tenant.
- D Raise the similarity threshold for small tenants so that only highly relevant chunks survive the tenant filter.
Answer: C. Post-filtering discards most of the top 20; apply the tenant filter inside the search or partition by tenant.
When a filter is selective, **post-filtering** the global top-k leaves almost nothing for small tenants. Filtering during the search, or using per-tenant partitions, returns k results from the tenant's own data. The tradeoff is that partitions add index-management overhead across many tenants, while highly selective in-search filters can slow HNSW traversal. Over-fetching a much larger k is a stopgap that wastes compute and still fails for the smallest tenants.
One system design question a day, with spaced repetition so the ones you miss come back.
Get the appRelated questions
- You must index 100M chunks using a 3,072-dimension embedding in fp32, served from RAM via HNSW. The raw vectors alone take about 1.2 TB before graph overhead. You need to cut memory several-fold while losing at most a point or two of recall@10. Which approach fits?
- Runbooks are split into fixed 300-token chunks with no overlap. When a procedure step starts near the end of one chunk and finishes in the next, answers come back incomplete. What is the lowest-cost fix?
- Your offline eval shows recall@5 of 92% on a labeled set, so the gold passage is in the context for nearly every question. Yet human graders mark 35% of answers wrong, and the wrong answers often ignore or contradict the gold passage. Where should the team invest next?
- Your product requires every RAG answer to include clickable source citations that users can verify. How should those citations be produced?
- A runbook RAG system uses fixed 500-token chunks with no overlap. Users who ask for a multi-step recovery procedure get answers that stop at step 4 of 9, and retrieval logs show the top hit ends mid-procedure. What is the most targeted fix?
- Policy documents live in a CMS. A nightly job embeds and inserts new documents into the vector index. Users keep getting answers that cite policies which were deleted or replaced weeks ago. What is the root cause and fix?