Recall Is Not One Search
Hindsight's recall operation answers a narrower question than reflect: which stored memories are relevant evidence for this query? The difficulty is that relevance can mean several things at once. A query may express an idea, an exact name, an indirect relationship, or a time window. This chapter follows how Hindsight combines those signals, then explains how ranking and token budgets turn a large candidate set into the bounded context an agent actually receives.
Four questions, four retrieval arms
A single vector similarity search is good at one kind of match: finding text whose meaning resembles the query. That is useful when a user asks, “What does Alice do?” and the stored fact says that Alice works as a software engineer. It is less reliable when the query contains a proper name, a historical window, or a relationship that is not stated in similar words. Hindsight therefore runs four complementary retrieval strategies when they are enabled.
Semantic retrieval compares the query's meaning with the meaning of stored facts. It can bridge paraphrases and related concepts. “The service became unreliable under load” may lead to a fact about repeated timeout errors even when the two sentences share few terms. Semantic similarity is a useful general path, but it can also return a conceptually related fact that is not the precise entity, event, or condition the question requires.
Keyword retrieval provides the opposite discipline. Hindsight uses a BM25 or compatible full-text path to find exact names, technical terms, identifiers, and phrases. If the query asks for “Project Atlas,” “PostgreSQL,” or a particular request identifier, lexical matching can protect the result from being diluted by broadly similar language. The keyword arm is not a lesser version of semantic search. Exactness is its job.
Graph retrieval follows links between entities and memory units. It can start from a fact about Alice, move through Project Atlas, and reach a Kubernetes outage even if the wording of the outage is not semantically close to the original question. It is especially useful for multi-hop questions: which projects a person touched, what a team's manager's projects achieved, or which event is connected to a decision through a shared object. Because the graph is built from extraction and resolution, it inherits their judgment and should be treated as a route to candidates, not proof by itself.
Temporal retrieval responds to phrases such as “last spring,” “in 2023,” or “what happened before the rollout?” Hindsight parses the query into a date window, finds memories whose event or mention times overlap it, and spreads selected candidates across the window. This avoids a common failure in time-aware search: returning a dense cluster from the end of the period simply because those facts are newest. Selection begins with relevance inside the window and then tries to represent the window's populated sections.
The four arms rescue different failures in the same incident scenario. Semantic retrieval can connect “latency regression” with “timeouts under load.” Keyword retrieval can find the exact retry-policy name or request ID. Graph retrieval can connect the policy to the Atlas API and its deployment.