Zenaique

In a chat, 'what about its pricing?' returns junk from retrieval: diagnose the failure and fix it

Short answer·Medium·4.0 · 0·~3 min·Asked atFireworks AiPinterestTurbopuffer
Attempt it

Your conversational RAG assistant works fine for standalone questions, but when a user follows up with 'what about its pricing?', retrieval comes back with irrelevant chunks. Explain precisely why retrieval fails on this turn, and describe the fix.

Free · 2 AI evals / day
TL;DR

The follow-up is embedded literally with 'its' unresolved, so the query vector is near-meaningless. Fix it by rewriting the turn into a standalone query before retrieval — query contextualization.

Memory aid
Sign in to see the mnemonic that makes this stick.
Easy to grasp

Imagine texting a librarian who can only read your latest message, never the chat above it. You ask 'What's the population of France?' and get a great answer. Then you text 'what about its capital?' — but the librarian, seeing only that one line, has no idea what 'its' means. So she fetches random books. The problem is she never saw the France message. The fix is to clean up your follow-up before sending it: rewrite 'what about its capital?' into 'What is the capital of France?' so it makes sense on its own. A conversational search assistant works the same way — it has to rewrite a dependent follow-up into a complete question before it searches, because the search only sees the words you hand it.

Concept explanation~2 min read

Everything you need to truly understand this topic: intuition, mechanics, step by step explanation, code, formulas, and worked example. Click to expand.

Conversational RAG looks deceptively close to single-turn RAG. You embed the user's question, retrieve, and generate. The gap that bites teams is that human conversation is full of references that only make sense in context — pronouns, ellipsis, 'that one,' 'the second option.' A retriever, by contrast, is stateless: it sees the string you hand it and nothing else.

This question is a clean instance of that mismatch. 'What about its pricing?' is a perfectly natural follow-up, but the word that carries its meaning — 'its' — points at something said earlier, and the retriever never saw that turn. The result is not an error message; it is silent garbage, which is worse, because the system keeps answering, just from the wrong context.

This deep dive nails the exact mechanism of the failure, locates the fix at the precise point in the pipeline where it must go, explains why the popular wrong fixes (reranking, history-stuffing) do not work, and covers the real-world failure modes of the rewriting step so you can talk about it like someone who has shipped it.

The exact mechanism: a pronoun with no referent in the vector

Trace what happens to 'what about its pricing?' Step one, the system embeds the string. Step two, it searches the index for nearest neighbors. Step three, it feeds whatever came back to the generator.

The failure is entirely in step one. An embedding model maps a string to a point in space based on the string's content. 'What about its pricing?' has a real chunk of content — pricing — but the entity that pricing belongs to is hidden behind the pronoun 'its.' The model cannot resolve 'its' because the antecedent is in a previous turn that is not in the string. So the embedding effectively encodes 'something about pricing,' an entity-less query.

An entity-less query lands in a diffuse region of the space. There is no single product, plan, or document that 'something about pricing' is closest to; it is roughly equidistant from every pricing-related chunk in the corpus. Top-k over that point returns whatever happens to be marginally nearest, which is noise relative to what the user meant.

The critical insight is that nothing downstream is broken. The embedding model worked, the vector search worked, the generator worked. The query simply did not contain the information needed to retrieve correctly, because the human relied on conversational context the retriever cannot see.

Why the retriever cannot see the conversation
The fix: query contextualization before retrieval
Why reranking and history-stuffing both fail
Production reality: latency, wrong referents, and detection
Sign in to unlock the full deep dive.

Situations where this technique stops working.

Sign in to see when this approach fails.

2–4 min · Everything important, quickly.

Sign in to see the quick scan of the deep dive.

Real products, models, and research that use this idea.

  • LangChain's condense-question chain rewrites a follow-up into a standalone query using chat history before retrieval.
  • LlamaIndex's CondenseQuestion chat engine performs the same rewrite step ahead of the retriever.
Sign in to see more production examples.

What an interviewer would ask next. Try answering before peeking at the approach.

QWhat can go wrong with the rewriting step itself, and how do you guard against it?
A

The rewriter is an LLM and can bind the pronoun to the wrong entity on ambiguous history, or over-specify and narrow retrieval too far. Discuss passing only the last few turns to limit confusion, low-confidence fallback to the raw query plus history, logging rewrites for evaluation, and the per-turn latency cost of the extra LLM hop.

2 more follow-ups an interviewer would ask next. Sign in to reveal them.

Red flags & common mistakes

The phrases that signal junior thinking. Click to expand.

Most common mistake

Trying to fix this by filtering or reranking retrieved chunks. The query vector was already meaningless, so there is nothing good in the candidate set to rerank toward.

Sign in to see all red flags and common mistakes.

60 second bullets to scan on the way to the call.

  • Diagnose the unresolved pronoun and why it empties the query of content

  • Explain that the retriever is stateless and sees only the current string

Sign in to unlock the revision sheet.

Primary sources. Browse if you want the original framing.

Similar questions

Same topic, related formats. Practice these next.

4 curated
Next question
Which metric best measures whether a RAG answer is grounded in the retrieved context?
MCQ·Medium