docs/components/vectordbs/dbs/pgvector.mdx
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.
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"})
```typescript TypeScript
import { Memory } from 'mem0ai/oss';
const config = {
vectorStore: {
provider: 'pgvector',
config: {
collectionName: 'memories',
embeddingModelDims: 1536,
user: 'test',
password: '123',
host: '127.0.0.1',
port: 5432,
dbname: 'vector_store', // Optional; TypeScript OSS defaults to `vector_store` when omitted
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" } });
Here are the parameters available for configuring pgvector:
| Parameter | Description | Default Value |
|---|---|---|
dbname | The name of the database | postgres |
collection_name | The name of the collection | mem0 |
embedding_model_dims | Dimensions of the embedding model | 1536 |
user | User name to connect to the database | None |
password | Password to connect to the database | None |
host | The host where the Postgres server is running | None |
port | The port where the Postgres server is running | None |
diskann | Whether to use diskann for vector similarity search (requires pgvectorscale) | True |
hnsw | Whether to use hnsw for vector similarity search | False |
sslmode | SSL mode for PostgreSQL connection (e.g., 'require', 'prefer', 'disable') | None |
connection_string | PostgreSQL connection string (overrides individual connection parameters) | None |
connection_pool | psycopg2 connection pool object (overrides connection string and individual parameters) | None |
Note (TypeScript OSS): If you omit dbname, the TypeScript client uses the database name vector_store. Python defaults to postgres for dbname, as in the table above.
Note: The connection parameters have the following priority:
connection_pool (highest priority)connection_stringuser, password, host, port, sslmode)