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.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.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:- Fast mode results
- Accurate mode results
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.
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
Use fast for…
Use fast for…
- 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.
Upgrade to accurate for…
Upgrade to accurate for…
- 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: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.