pgvector - Mem0
Documentation Index
Fetch the complete documentation index at: /llms.txt
Use this file to discover all available pages before exploring further.
pgvector
is an open-source vector similarity search extension for Postgres. After connecting to Postgres, run CREATE EXTENSION IF NOT EXISTS vector; to create the vector extension.
Usage
Python
import os
from mem0 import Memory
os.environ["OPENAI_API_KEY"] = "sk-xx"
config = {
"vector_store": {
"provider": "pgvector",
"config": {
"user": "test",
"password": "123",
"host": "127.0.0.1",
"port": "5432",
},
}
}
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"})
import { Memory } from "mem0ai/oss";
const config = {
vectorStore: {
provider: "pgvector",
config: {
collectionName: "memories",
embeddingModelDims: 1536,
connectionString: "postgresql://test:123@localhost:5432/vector_store",
diskann: false, // Optional, requires pgvectorscale extension
hnsw: false, // Optional, for HNSW indexing
},
},
};
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" } });
Config
Here are the parameters available for configuring pgvector:
| Parameter | SDK | Description | Default Value |
|---|---|---|---|
connectionString |
TypeScript OSS | PostgreSQL connection string for direct connections. When set, Mem0 connects to the target database directly and skips the bootstrap postgres database flow. |
None |
ssl |
TypeScript OSS | SSL option passed directly to pg, either true or an SSL config object, for both connectionString and split-field connections. |
None |
dbname |
TypeScript OSS | Split-field database name. This is only used when connectionString is absent. |
vector_store |
collectionName |
TypeScript OSS | Collection name. | memories |
embeddingModelDims |
TypeScript OSS | Dimensions of the embedding model. | Required |
user |
TypeScript OSS + Python | Database user for split-field connections. | None |
password |
TypeScript OSS + Python | Database password for split-field connections. | None |
host |
TypeScript OSS + Python | Database host for split-field connections. | None |
port |
TypeScript OSS + Python | Database port for split-field connections. | None |
diskann |
TypeScript OSS + Python | Whether to use DiskANN for vector similarity search, requires pgvectorscale. | False |
hnsw |
TypeScript OSS + Python | Whether to use HNSW for vector similarity search. | TypeScript OSS: False, Python: True |
connection_string |
Python only | PostgreSQL connection string, overrides individual connection parameters. | None |
sslmode |
Python only | SSL mode for PostgreSQL connections, such as require, prefer, or disable. |
None |
connection_pool |
Python only | psycopg connection pool object, overrides connection string and individual connection parameters. | None |
TypeScript OSS: Use connectionString plus optional ssl for managed Postgres setups. If you omit connectionString, Mem0 falls back to split fields and uses dbname, user, password, host, port, and optional ssl.Python: The Python SDK uses snake_case keys such as connection_string, sslmode, collection_name, and embedding_model_dims.Python connection priority:
connection_pool(highest priority)connection_string- Individual connection parameters (
user,password,host,port,sslmode)