Grounding on a document store inherits every contradiction in those documents.
Most grounding projects fail in the same place. The retrieval works, the citations look right, and the answers are still wrong in ways that take a domain expert to notice. The cause is rarely the pipeline. It is that the material the system was grounded on never agreed with itself.
Grounding means constraining a model's answers to a specific body of material rather than letting it draw on whatever it absorbed in training. In practice the model is given relevant content at question time and instructed to answer from that content.
The word does a lot of quiet work. Grounding a model in your data makes its answers traceable to something. It does not make them correct, because correctness depends on whether the thing it was grounded in was right, and in an enterprise, "right" is frequently contested rather than merely unknown.
RAG is a way of doing grounding. Retrieval-augmented generation is the mechanism: search a store, take the top results, put them in the prompt. Grounding is the goal that mechanism serves.
The distinction matters because it is possible to have excellent RAG and poor grounding. If your retrieval reliably finds the most relevant paragraph, and that paragraph contains a definition three teams disagree with, you have ground the model in a contested claim with high precision. Treating RAG quality as a proxy for grounding quality is the most common way projects spend six months optimizing the wrong layer.
Start from the questions, not the systems. Write down the twenty questions the system is supposed to answer, then trace each one to where its answer currently comes from.
Expect two unpleasant discoveries. Some answers come from nowhere: they live in a person's head, and the reason nobody automated this already is that the knowledge was never written down. Others come from several places that disagree, and the organization has been quietly reconciling them by hand for years.
Both are findings, not blockers. They tell you what the next step has to decide.
This is the step that gets skipped, and skipping it is why grounding projects stall.
Not everything needs to be agreed. Most of your estate can be inferred perfectly well, because most fields are not contested by anyone and a good automated description of them is entirely sufficient. What needs an actual decision is the small set of terms and rules where two competent people would answer differently and both could defend it.
Go through the inventory and mark each item: inferred is fine, or this one has to be decided. The second list should be short. If it is long, you are probably marking things that are merely undocumented rather than genuinely contested.
For the items that have to be authoritative, write down two things.
References are the core concepts and their canonical identifiers, so the same thing means the same thing everywhere it appears: which records resolve to one customer, which SKUs are one product, which entities roll up to one legal parent.
Relationships are how those concepts connect. A customer places an order; an order contains products; a product belongs to a family. Modelled properly this captures how the business actually thinks rather than how a particular database happened to be normalized, and it lets the system traverse from a contract to an entity to an entitlement without being told the route.
Get someone with the standing to decide to approve both. An unsigned model is a proposal, and a proposal cannot settle anything later.
This is the architectural move that separates grounded-and-correct from grounded-and-confident.
Retrieval should not simply find text. When a question involves a governed term, the system should resolve that term against the approved definition first, then retrieve. Ask "how many active customers in EMEA" and the system should look up what active customer means here before it goes looking for numbers.
The practical requirement is that governed context is reachable programmatically at query time, over an interface the retrieval layer can call without a human in the loop, and fast enough that calling it is cheaper than reasoning around it. A system under latency pressure routes around anything slow, and then you are back to inference.
Build a set of questions where you already know the correct answer and, more importantly, where you know why it is correct. Include the contested ones deliberately: the questions two departments answer differently are the ones that prove whether the governed definitions are actually being applied.
Run it before launch and keep running it. This set is also your regression test for step 5 of the next section.
Start with one decision the business already argues about. A term that has caused two meetings this quarter is a term worth an hour of somebody's authority, and it proves the whole path (decide, publish, consume) on something people care about. Starting with a comprehensive inventory instead is how these programmes reach month four with a thorough spreadsheet and nothing in production.
Version the context, not just the data. Reproducing an answer you gave in March means being able to retrieve the definition that was in force in March. If your context has no version history, every past answer becomes undefendable the moment a definition changes.
Keep a human approval gate on definitions. Let inference draft. Let it propose, cluster and surface contradictions, which is work machines are better at. Publish nothing to the governed set without a named person approving it. The approval is the thing that makes the definition worth more than the inference it started as.
Carry access policy with the context. Resolve permissions at the point the context is resolved, so the same question from two different callers can correctly return two different answers.
Grounding on a document store inherits every contradiction in those documents. This is the big one. A corpus is not a source of truth, it is a pile of assertions made at different times by people with different assumptions. Retrieval will surface the most relevant assertion, not the correct one, and it has no way to tell you that a contradicting document exists three folders away.
Access policy has to travel with the context or the agent will leak. If permissions live in the application layer and the context resolves underneath it, eventually a path exists that returns governed content to someone who should not see it. The failure is silent and it is usually discovered in an audit rather than in testing.
Untracked definition changes break answers silently. When a definition changes and nothing re-validates against it, the system keeps answering (confidently, in the same format, with the same citations) and the answers are now wrong. Nothing alerts, because nothing failed.
A better model will not fix a contested definition. Every upgrade cycle produces a round of hope that the new model will clear the remaining errors. It produces a more articulate version of the same wrong answer, because the error was never in the generation.
For the discipline underneath all of this, see context management. For why an inferred definition cannot settle a disagreement no matter how good the inference is, see inferred context. If the system is already in production and the problem is answers that were right last quarter, keeping context from going stale is the next piece.