Why Does RAG Retrieve Outdated Documents Even After You Update Them?
The 0.94 similarity trap: why vector search has zero concept of time or validity.
Standard RAG retrieves outdated documents because vector databases only measure semantic similarity, not temporal validity. An old policy document with high cosine similarity (0.94) will beat a newly revised policy that uses slightly different wording. Exogram enforces temporal admissibility, filtering out superseded documents before context enters the model.
What Actually Happened in the Real World
A multinational airline updated its pet travel policy in August 2026. However, its customer service AI bot continued quoting the 2024 policy because the old document contained the exact phrases passengers were searching for, giving it a higher similarity score in the vector database.
Why Polite Prompts Like “Please Don't Do This” Fail
Telling an LLM "only use the most recent document" fails when the retrieval pipeline only passes the 2024 document into the prompt. The model cannot choose a newer document it was never given.
The Sub-Millisecond Code Fix
Exogram replaces blind vector search with an admissibility layer that verifies active document states, revocation timestamps, and authority markers before context is admitted into the model context window.
from exogram import ExogramRetriever
retriever = ExogramRetriever(index="company_kb")
# Retrieve only documents with active, unrevoked temporal admissibility
valid_context = retriever.query_admissible(
query="pet travel restrictions in cabin",
must_be_valid_at="current_timestamp",
exclude_superseded=True
)Frequently Asked Questions
Why don't vector databases automatically delete old documents?
Unless you manually purge older embeddings, both old and new documents remain in the index. Vector similarity algorithms have no native understanding of date stamps or superseded clauses.
Related Diagnostic Answers
Comparison Guides
Stop AI Mistakes Before They Execute
Exogram sits directly between your AI model and your tools. Set up in 10 seconds inside Claude, Cursor, ChatGPT, or your own code.