From 316dc67a0a8bedf357b4ab07d9101b575898506f Mon Sep 17 00:00:00 2001 From: Himanshu <104683257+Himanshu-Sangshetti@users.noreply.github.com> Date: Mon, 23 Mar 2026 18:52:19 +0530 Subject: [PATCH] fix(ts-oss): register pgvector in VectorStoreFactory (#3367) (#4502) --- docs/components/vectordbs/dbs/pgvector.mdx | 4 +++- mem0-ts/src/oss/src/vector_stores/pgvector.ts | 3 ++- mem0-ts/src/oss/tests/factory.unit.test.ts | 6 ++++++ 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/docs/components/vectordbs/dbs/pgvector.mdx b/docs/components/vectordbs/dbs/pgvector.mdx index df6315c69..9f59d7ebb 100644 --- a/docs/components/vectordbs/dbs/pgvector.mdx +++ b/docs/components/vectordbs/dbs/pgvector.mdx @@ -48,7 +48,7 @@ const config = { password: '123', host: '127.0.0.1', port: 5432, - dbname: 'vector_store', // Optional, defaults to 'postgres' + dbname: 'vector_store', // Optional; TypeScript OSS defaults to `vector_store` when omitted diskann: false, // Optional, requires pgvectorscale extension hnsw: false, // Optional, for HNSW indexing }, @@ -85,6 +85,8 @@ Here are the parameters available for configuring pgvector: | `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: 1. `connection_pool` (highest priority) 2. `connection_string` diff --git a/mem0-ts/src/oss/src/vector_stores/pgvector.ts b/mem0-ts/src/oss/src/vector_stores/pgvector.ts index 9c1b00343..d99e78999 100644 --- a/mem0-ts/src/oss/src/vector_stores/pgvector.ts +++ b/mem0-ts/src/oss/src/vector_stores/pgvector.ts @@ -1,4 +1,4 @@ -import { Client, Pool } from "pg"; +import { Client } from "pg"; import { VectorStore } from "./base"; import { SearchFilters, VectorStoreConfig, VectorStoreResult } from "../types"; @@ -35,6 +35,7 @@ export class PGVector implements VectorStore { host: config.host, port: config.port, }); + this.initialize().catch(console.error); } async initialize(): Promise { diff --git a/mem0-ts/src/oss/tests/factory.unit.test.ts b/mem0-ts/src/oss/tests/factory.unit.test.ts index efac4e497..9884de723 100644 --- a/mem0-ts/src/oss/tests/factory.unit.test.ts +++ b/mem0-ts/src/oss/tests/factory.unit.test.ts @@ -118,6 +118,11 @@ jest.mock("../src/vector_stores/azure_ai_search", () => ({ .fn() .mockImplementation((config) => ({ type: "azure-ai-search", config })), })); +jest.mock("../src/vector_stores/pgvector", () => ({ + PGVector: jest + .fn() + .mockImplementation((config) => ({ type: "pgvector", config })), +})); jest.mock("../src/storage/SupabaseHistoryManager", () => ({ SupabaseHistoryManager: jest .fn() @@ -236,6 +241,7 @@ describe("VectorStoreFactory", () => { ["langchain"], ["vectorize"], ["azure-ai-search"], + ["pgvector"], ])("creates vector store for provider '%s'", (provider) => { expect(() => VectorStoreFactory.create(provider, dummyVSConfig),