Rag And Retrieval hard
In a chat assistant, turn 1 asks 'compare our two enterprise plans' and turn 3 asks 'does the second one include SSO?'. Retrieval for turn 3 returns generic SSO docs unrelated to either plan. What should run before retrieval?
- A HyDE: generate a hypothetical answer to 'does the second one include SSO?' and embed it to bridge the vocabulary gap to the plan documents.
- B Embed the entire conversation history as one query vector, so the earlier mention of the enterprise plans is captured in the retrieval signal.
- C Raise k to 100 for follow-up turns, so plan-specific SSO documents are likely to appear among the candidates even if the query is ambiguous.
- D A rewrite step that uses chat history to produce a standalone query naming the specific plan, optionally fanned out into query variants.
Answer: D. A rewrite step that uses chat history to produce a standalone query naming the specific plan, optionally fanned out into query variants.
The query contains an **unresolved reference** ('the second one'), and only a history-aware rewrite resolves it. The rewrite costs an extra model call and can occasionally resolve the reference wrongly. HyDE without that resolution just hallucinates a generic SSO answer. Embedding the whole history dilutes the vector with earlier topics. Skip the rewrite for self-contained first-turn queries.
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?
- 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?
- 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?