Skip to main content
mode= appears on two different axes. Label which one you mean:
The retrieval mode is the one that changes results. The ingestion mode is accepted by the server, but nothing downstream reads it, so fast and long-range extract the same memories at the same speed. See Ingestion mode below and Types and enums.

Quick comparison

The two modes are not mutually exclusive. Use fast for the hot path of a live conversation and switch to accurate for specific high-value queries, all within the same application and the same Synap Instance.
Building a real-time chatbot or voice agent? Start with fast retrieval, then switch specific queries to accurate as needed, no architecture change required.

Fast mode

The recommended default for real-time, conversational agents where low latency matters more than exhaustive search.

Fast retrieval

Fast retrieval searches the vector store only. It never traverses the knowledge graph, and it skips the LLM-driven subquery decomposition and reranking that accurate mode adds. That keeps latency low for the hot path of real-time conversations.
1

Query embedding

The query is converted into a vector embedding, consistent with the embeddings created during ingestion.
2

Vector similarity search

The embedding is compared against stored memory embeddings using cosine similarity, scoped to the applicable scope levels (user, customer, client) based on the provided user_id and customer_id.
3

Ranking

Results are ranked by cosine similarity. No LLM-driven decomposition or reranking pass is applied.
4

Return

The top-k results (per the configured budget) are returned as structured context.
conversation_id must be a valid UUID. Generate one with str(uuid.uuid4()) and reuse it for every turn in the same conversation.
What fast retrieval skips, relative to accurate: graph traversal (following relationship edges from the entities in the best matches to connected facts), LLM subquery decomposition (breaking a complex query into focused sub-queries to widen coverage) and reranking (an extra pass that reorders candidates for relevance). Broad, multi-part questions may therefore retrieve less complete context: those are the cases to send to accurate mode.

Accurate mode

Prioritizes thoroughness and quality over speed. It adds LLM-driven refinement on retrieval, producing richer, more connected context.

Accurate retrieval

Accurate retrieval starts from the same vector search as fast and adds three steps: graph traversal, LLM-driven subquery decomposition and reranking, together with multi-signal ranking.
1

Query embedding & vector search

Same as fast mode: embed the query, find candidates by cosine similarity.
2

LLM subquery decomposition and graph traversal

Every search query you send is searched (up to 5 per fetch); the first one is also the query the sub-queries are written from. The query is decomposed into focused sub-queries that expand the entities and angles explored. Entities from the query and top vector results seed graph traversal, following relationship edges to connected entities, related facts, and context. Querying “Project Atlas” reaches Sarah Chen, James, the database migration, the Q3 deadline, and Maria’s budget approval.
3

Cross-engine merging

Vector and graph results are merged into one candidate set; duplicates removed, scores normalized to a common scale.
4

Multi-signal ranking

Candidates are ranked on semantic similarity, recency, graph centrality, and extraction confidence, weighted into a final relevance score.
5

Return

The top-k results are returned as structured context, enriched with entity and relationship metadata.

What graph traversal adds

The same query, fast vs accurate:
Returns memories that directly mention “Project Atlas”:
Useful, but limited to direct mentions.
The relationship edges that accurate retrieval can follow depend on what extraction found in your content, not on the ingestion mode: fast and long-range writes go through the same pipeline.

Ingestion mode

memories.create, memories.batch_create (on each document) and memories.create_from_file take a mode of long-range (the default) or fast. In the current release the server accepts either value and nothing downstream reads it, so both run the same ingestion pipeline: the choice does not change what is extracted, how deeply entities are resolved or how long a write takes. You can leave mode out.
Extraction reads the conversation and produces entities (Sarah Chen, James, Maria, Project Atlas), relationships (Sarah —[concerned_about]—> Atlas timeline; Maria —[approved]—> budget) and facts (migration incomplete, three-week estimate, Q3 flagged infeasible). A write is not available for retrieval until it finishes; track it with memories.status.

Precision level

mode isn’t the only retrieval knob. Context fetch also accepts an optional precision_level parameter: a second, independent axis that controls how tightly results are filtered before they’re returned. The refinement pass filters candidates rather than finding them, so dropping to medium never shrinks what’s searched. What changes is how precisely the output is filtered: expect an occasional loosely-related item in exchange for a faster response. precision_level is orthogonal to mode: combine it with either fast or accurate. For real latency on your instance, see Dashboard → Usage.

Choosing a mode

  • Real-time conversations where the user is waiting: fast retrieval is rarely the bottleneck; LLM generation dominates response time.
  • Single-topic queries answerable from one memory chunk (“What is our refund policy?”, “When is Alice’s birthday?”).
  • High-frequency retrieval on every message, at scale: the lower compute cost matters.
  • Latency-sensitive apps: voice agents, real-time collaboration.
  • Complex, multi-entity queries: “Summarize everything about Project Atlas, who’s involved, and what’s been decided.”
  • Relationship queries: “How is Sarah connected to the infrastructure migration?”
  • Comprehensive summaries / briefings that must not miss context (latency is acceptable since they aren’t time-sensitive).
  • High-value interactions: escalations, renewals, executive conversations.

Mixing modes in practice

Most production apps read with fast by default and switch to accurate for the queries that justify it:
A simple keyword heuristic is a reasonable starting point for automatic selection (tune it to your query patterns, or use a lightweight classifier):

Next steps

Context Fetch SDK

Full SDK reference for retrieval methods and mode selection.

Runtime Ingestion

How runtime ingestion fits into the agent loop.

Memory Architecture

Configure ingestion and retrieval defaults in your memory architecture.

Entity Resolution

How extraction resolves entities and builds the knowledge graph.