What RAG is good at
Retrieval-augmented generation is a strong fit for unstructured text. If the answer lives in a runbook, a design document or a support thread, semantic search can find the relevant passage and a model can summarize it. The unit of retrieval is a chunk of text, and similarity is the ranking signal.
That works because the question is also about text. "How do I rotate the Stripe key?" is answered by a procedure. The retriever does not need to know who owns the service or when the procedure changed.
Where text similarity breaks
Ownership, impact and history are not similarity problems. The answer depends on a relationship and a date. Three failures show up repeatedly:
- A departed engineer still ranks highest because their commits are the most similar to the service name.
- A superseded document ranks alongside the decision that replaced it, because both mention the same providers.
- A three-hop dependency cascade is not present in any single chunk, so retrieval cannot assemble it reliably.
The hybrid that works
Use the graph for structure and text search at the leaves. The graph resolves the entity, follows the typed edge, and applies the date. Text search finds the document that the graph then marks as current or superseded.
This is the model Helio uses. The language model interprets the question and phrases the response, but it does not choose the owner. The traversal returns the owner, or returns nothing.
A simple decision rule
If the answer is a passage, use RAG. If the answer is a relationship, a count or a date, use a graph. If the answer needs both, retrieve the passage but resolve the entity and the date in the graph first.
The rule is not anti-RAG. It is about choosing the representation that matches the question instead of forcing every question through a text index.
Worked example: Stripe or Adyen?
A March document says "single provider, Stripe." Decision D-19 (2026-05-06) says "dual provider, Adyen primary, Stripe fallback" and supersedes the earlier document. A text retriever returns both passages because both are about payment providers.
A graph query follows the SUPERSEDES edge and returns D-19 as current, with the March document marked obsolete. The answer can still quote both, but it does not present them as equally valid.