Overview
60db’s Memory system gives your AI applications a long-term, searchable memory. It stores user preferences, conversation history, knowledge base documents, and arbitrary facts, then retrieves the most relevant ones on demand using hybrid semantic + keyword search. Built on a multi-layer retrieval architecture combining vector search with a knowledge graph, Memory enables:- Personalized AI chat — the SLM remembers user preferences across sessions
- Knowledge base Q&A — ingest docs and retrieve grounded answers
- Multi-user collaboration — shared “team” memory collections
- Graph-aware recall — find related concepts through knowledge-graph traversal
Hybrid Search
Semantic (vector) + keyword (BM25) scoring with configurable weights
Context Assembly
One-shot endpoint returns an LLM-ready context string for any query
Graph Relationships
Extracted facts link together as a knowledge graph
Multi-Collection
Personal, team, knowledge, and hive (cross-collection) memory types
Document Upload
Upload PDFs, Office docs, and scanned images — text extraction + OCR built in
91+ Formats
PDF, DOCX, XLSX, PPTX, EML, MSG, HTML, scanned images with built-in OCR
Core concepts
Memory collections
Memories live in collections scoped to your workspace. Each collection is one of:
Your personal collection is created automatically the first time you use Memory. Team/knowledge/hive collections are created by owners/admins.
Memory types
When you store a memory, you specify its type:user— private, user-scoped facts. Auto-extracted from conversations or manually entered.knowledge— reference content (docs, policies, FAQs). Read by all members.hive— workspace-wide shared facts that appear in every user’s search results.
Two search modes
- Fast — single-query hybrid search. Returns in ~100ms. Default.
- Thinking — multi-query expansion with reranking. Better recall quality, slower (~1-2s).
Storing memories
- JavaScript
- Python
- cURL
Response
GET /memory/:id/status to check if ingestion is complete.
Uploading documents
For longer-form content — PDFs, Word docs, spreadsheets, scanned pages, emails — usePOST /memory/documents/extract. The server handles format detection, OCR, and chunking for you, so you just upload the raw file and 60db does the rest.
Under the hood, 60db runs your file through its document extraction engine (91+ formats with built-in OCR for scanned documents), splits the extracted text into overlapping chunks, and ingests each chunk as a knowledge-type memory in one batch.
- JavaScript
- Python
- cURL
What you can upload
Max file size: 200 MB. Max chunks per document: 100 (tune
chunk_size for larger docs).
Response
Chunking controls
Two optional form fields tune how text is split:
See the API reference for a tuning table by document type.
Searching memories
- JavaScript
- Python
- cURL
Tuning search
Context assembly (RAG for SLM chat)
The/memory/context endpoint is purpose-built for retrieval-augmented generation. Given a user query, it fetches the most relevant memories, recent events, and graph relationships, and returns a pre-formatted context string ready to prepend to your LLM prompt.
- JavaScript
- Python
Built-in SLM Chat integration
When using 60db’s UI at/app/slm-chat, there’s a Memory toggle next to Auto-clear. When enabled, every message you send is pre-processed:
- Your message is sent to
/memory/contextwith your session ID - Relevant memories and recent events are fetched (semantic + keyword + temporal)
- The returned
prompt_readystring is prepended to the system message - The enriched prompt goes to the SLM
Collections management
Role-based access
Memory operations are gated by your workspace role:API key access
To use Memory via an API key (for programmatic access), the key must have thememory scope. When creating an API key in Settings → Developers, check the “Memory & RAG” box.
Pricing
Memory is pay-as-you-go — no subscription, no seat pricing, no minimum commitment. You pay only for the operations you run, deducted from a single workspace wallet you top up via Stripe, Razorpay, or Dodo Payments.
Real-world cost examples:
- A knowledge base with 100 MB of docs + 10,000 searches/month → ~$23/month
- A personal assistant with 1,000 user memories + 500 searches/day → ~$5/month
- A support bot with 1 GB of docs + 100,000 searches/month → ~$53/month
transaction_log. No support tickets required.
Never billed — listing collections, creating collections, checking memory status, deleting memories, and GET /memory/usage are always free so you can still manage your data when the wallet is empty.
See the full Pricing & Billing reference for rate details, refund policy, and the complete header/error reference.
Handling insufficient credits
When the wallet runs out, billable endpoints return HTTP 402:error_code === "INSUFFICIENT_CREDITS" and prompt the user to top up. Here’s a pattern for the search endpoint:
Tracking usage
CallGET /memory/usage to get a monthly spend breakdown by operation type. This is what powers the Spend this month card on the 60db Memory dashboard.
Failure handling
The Memory service is designed to degrade gracefully:- If the memory layer is temporarily unreachable,
POST /memory/ingestqueues your memory in a retry table, returns202 Accepted, and automatically refunds the charge so you aren’t billed for work that didn’t happen. POST /memory/contextreturns an empty prompt on outage — your SLM chat still works, just without memory context. No charge when context is empty.POST /memory/searchreturns503— the UI shows a “Memory temporarily unavailable” banner without blocking other features. Auto-refunded.POST /memory/documents/extractauto-refunds the extract fee if extraction fails (corrupt file, empty PDF, OCR error). If extraction succeeds but the wallet can’t cover the post-extraction ingest fee, the extract fee is refunded and a402is returned.
Limits
- Ingest batch: Up to 100 memories per request
- Memory text: Max 100,000 characters per entry
- Query length: Max 2,000 characters
- Results: Max 50 per search (refine query for more precise results)
- Context length: Max 16,000 tokens assembled per request
- Document upload: Max 200 MB per file, max 100 chunks per document
- Rate limit: 30 ingests/min per workspace