Back to Mem0

Configure the OSS Stack

docs/open-source/configuration.mdx

2.0.125.3 KB
Original Source

Mem0 OSS works out of the box with OpenAI defaults. Point it at your own LLM, embedder, and vector store by passing a config when you create Memory. The Python SDK also supports a reranker and graph memory.

<Info> **Prerequisites** - Python 3.10+ (`pip`) or Node.js 18+ (`npm`) - A running vector store such as Qdrant or Postgres + pgvector (Python's default Qdrant and Node's in-memory store need nothing extra) - API keys for your chosen LLM and embedder providers </Info> <Tip> New to Mem0 OSS? Run the <Link href="/open-source/python-quickstart">Python</Link> or <Link href="/open-source/node-quickstart">Node.js</Link> quickstart first, then come back to swap in your own providers. </Tip>

Install dependencies

<CodeGroup> ```bash pip pip install mem0ai ```
bash
npm install mem0ai
</CodeGroup>

Using Qdrant as your vector store? Install its Python client (the Node SDK talks to Qdrant over REST) and run the server locally:

bash
pip install qdrant-client   # Python only
docker run -p 6333:6333 qdrant/qdrant

Define your configuration

Each component takes a provider and a config. Keys are snake_case in Python and camelCase in TypeScript. Pass the config when you create Memory:

<CodeGroup> ```python Python from mem0 import Memory

config = { "vector_store": { "provider": "qdrant", "config": {"host": "localhost", "port": 6333}, }, "llm": { "provider": "openai", "config": {"model": "gpt-5-mini", "temperature": 0.1}, }, "embedder": { "provider": "openai", "config": {"model": "text-embedding-3-small"}, }, "reranker": { "provider": "cohere", "config": {"model": "rerank-v3.5"}, }, }

memory = Memory.from_config(config)


```ts Node.js
import { Memory } from "mem0ai/oss";

const memory = new Memory({
  llm: {
    provider: "openai",
    config: { apiKey: process.env.OPENAI_API_KEY || "", model: "gpt-5-mini", temperature: 0.1 },
  },
  embedder: {
    provider: "openai",
    config: { apiKey: process.env.OPENAI_API_KEY || "", model: "text-embedding-3-small" },
  },
  vectorStore: {
    provider: "qdrant",
    config: { host: "localhost", port: 6333, collectionName: "memories" },
  },
});
</CodeGroup>

Set your provider keys as environment variables:

bash
export OPENAI_API_KEY="..."
export COHERE_API_KEY="..."   # Python reranker only
<Note> The TypeScript OSS SDK configures the LLM, embedder, vector store, and history store. Reranker and graph memory are Python-only today. </Note>

Prefer a config file? Load YAML into Python's from_config:

python
import yaml
from mem0 import Memory

with open("config.yaml") as f:
    config = yaml.safe_load(f)

memory = Memory.from_config(config)
<Info icon="check"> Verify it works: add a memory and search it back. `memory.add(...)` followed by `memory.search(...)` should populate your vector store and return the memory as a top hit. </Info>

Available providers

Change the provider string to switch backends. The most common options:

ComponentPythonTypeScript
LLMopenai, anthropic, gemini, groq, ollama, aws_bedrock, azure_openai, litellmopenai, anthropic, gemini, groq, ollama, aws_bedrock, azure_openai, mistral, deepseek
Embedderopenai, gemini, azure_openai, ollama, huggingface, vertexai, aws_bedrockopenai, gemini, azure_openai, ollama
Vector storeqdrant, pgvector, chroma, pinecone, redis, weaviate, milvus, elasticsearchmemory, qdrant, pgvector, redis, supabase, azure-ai-search, vectorize, milvus

See the full catalog in <Link href="/components/llms/overview">Components</Link>.

Tune component settings

<AccordionGroup> <Accordion title="Vector store collections"> Name collections explicitly in production (`collection_name` / `collectionName`) to isolate tenants and enable per-tenant retention policies. </Accordion> <Accordion title="LLM extraction temperature"> Keep extraction temperature at or below 0.2 so memories stay deterministic. Raise it only when you see facts being missed. </Accordion> <Accordion title="Reranker depth (Python)"> Limit `top_k` to 10 to 20 results. Sending more adds latency without meaningful gains. </Accordion> </AccordionGroup> <Warning> Mixing managed and self-hosted components? Make sure every outbound provider call has a secure network path. Managed rerankers and embedders often require outbound internet even if your vector store is on-prem. </Warning>

Quick recovery

  • Qdrant connection errors: confirm port 6333 is exposed and the API key (if set) matches.
  • Empty search results: verify the embedder model name. A mismatch causes dimension errors.
  • Unknown reranker (Python): upgrade the SDK with pip install --upgrade mem0ai to load the latest provider registry.
  • Cannot find module (Node): import from the OSS entry point, import { Memory } from "mem0ai/oss", not "mem0ai".
<CardGroup cols={2}> <Card title="Pick Providers" description="Browse the LLM, vector store, embedder, and reranker catalogs." icon="sitemap" href="/components/llms/overview" /> <Card title="Deploy with Docker Compose" description="Follow the end-to-end OSS deployment walkthrough." icon="server" href="/open-source/features/rest-api" /> </CardGroup>