Back to Mem0

Qdrant

docs/components/vectordbs/dbs/qdrant.mdx

2.0.154.0 KB
Original Source

Qdrant is an open-source vector search engine. It is designed to work with large-scale datasets and provides a high-performance search engine for vector data.

Usage

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

os.environ["OPENAI_API_KEY"] = "sk-xx"

config = { "vector_store": { "provider": "qdrant", "config": { "collection_name": "test", "host": "localhost", "port": 6333, } } }

m = Memory.from_config(config) messages = [ {"role": "user", "content": "I'm planning to watch a movie tonight. Any recommendations?"}, {"role": "assistant", "content": "How about thriller movies? They can be quite engaging."}, {"role": "user", "content": "I’m not a big fan of thriller movies but I love sci-fi movies."}, {"role": "assistant", "content": "Got it! I'll avoid thriller recommendations and suggest sci-fi movies in the future."} ] m.add(messages, user_id="alice", metadata={"category": "movies"})


```typescript TypeScript
import { Memory } from 'mem0ai/oss';

const config = {
  vectorStore: {
    provider: 'qdrant',
    config: {
      collectionName: 'memories',
      dimension: 1536,
      host: 'localhost',
      port: 6333,
    },
  },
};

const memory = new Memory(config);
const messages = [
    {"role": "user", "content": "I'm planning to watch a movie tonight. Any recommendations?"},
    {"role": "assistant", "content": "How about thriller movies? They can be quite engaging."},
    {"role": "user", "content": "I’m not a big fan of thriller movies but I love sci-fi movies."},
    {"role": "assistant", "content": "Got it! I'll avoid thriller recommendations and suggest sci-fi movies in the future."}
]
await memory.add(messages, { userId: "alice", metadata: { category: "movies" } });
</CodeGroup>

Mem0 blends semantic similarity with BM25 keyword scoring. On the TypeScript SDK, Qdrant computes the BM25 vectors server-side, which requires Qdrant 1.15.2 or newer with inference enabled. Qdrant Cloud enables inference by default only for clusters created after 2025-07-07; older clusters must activate it from the Cluster Detail page. The Python SDK encodes BM25 locally instead and needs the fastembed package, so scores are not numerically comparable between the two SDKs.

When BM25 is unavailable, or when the collection was created before hybrid search was added, Mem0 logs a warning and falls back to semantic-only search. Writes are unaffected. To enable keyword scoring on an older collection, use a fresh collection name.

Config

Let's see the available parameters for the qdrant config:

<Tabs> <Tab title="Python"> | Parameter | Description | Default Value | | --- | --- | --- | | `collection_name` | The name of the collection to store the vectors | `mem0` | | `embedding_model_dims` | Dimensions of the embedding model | `1536` | | `client` | Custom client for qdrant | `None` | | `host` | The host where the qdrant server is running | `None` | | `port` | The port where the qdrant server is running | `None` | | `path` | Path for the qdrant database | `/tmp/qdrant` | | `url` | Full URL for the qdrant server | `None` | | `api_key` | API key for the qdrant server | `None` | | `https` | Whether to force HTTPS on or off. `None` lets the client decide; set `False` for plain HTTP Qdrant with API key authentication. | `None` | | `on_disk` | For enabling persistent storage | `False` | </Tab> <Tab title="TypeScript"> | Parameter | Description | Default Value | | --- | --- | --- | | `collectionName` | The name of the collection to store the vectors | `mem0` | | `dimension` | Dimensions of the embedding model | `1536` | | `host` | The host where the Qdrant server is running | `None` | | `port` | The port where the Qdrant server is running | `None` | | `path` | Path for the Qdrant database | `/tmp/qdrant` | | `url` | Full URL for the Qdrant server | `None` | | `apiKey` | API key for the Qdrant server | `None` | | `onDisk` | For enabling persistent storage | `False` | </Tab> </Tabs>