diff --git a/docs/src/pages/docs/reference/rag/pg.mdx b/docs/src/pages/docs/reference/rag/pg.mdx index 0f0543f759..685a2d1542 100644 --- a/docs/src/pages/docs/reference/rag/pg.mdx +++ b/docs/src/pages/docs/reference/rag/pg.mdx @@ -43,6 +43,74 @@ It provides robust vector similarity search capabilities within your existing Po defaultValue: "cosine", description: "Distance metric for similarity search", }, + { + name: "indexConfig", + type: "IndexConfig", + isOptional: true, + description: "Index configuration", + }, + ]} +/> + +#### IndexConfig + + @@ -138,10 +206,17 @@ Returns an array of index names as strings. Returns: ```typescript copy -interface IndexStats { +interface PGIndexStats { dimension: number; count: number; metric: "cosine" | "euclidean" | "dotproduct"; + type: "flat" | "hnsw" | "ivfflat"; + config: { + m?: number; + efConstruction?: number; + lists?: number; + probes?: number; + }; } ``` diff --git a/stores/pg/README.md b/stores/pg/README.md index 1d77861302..670fb7a521 100644 --- a/stores/pg/README.md +++ b/stores/pg/README.md @@ -56,7 +56,7 @@ const store = new PostgresStore({ port: 5432, database: 'mastra', user: 'postgres', - password: 'postgres' + password: 'postgres', }); // Create a thread @@ -64,17 +64,19 @@ await store.saveThread({ id: 'thread-123', resourceId: 'resource-456', title: 'My Thread', - metadata: { key: 'value' } + metadata: { key: 'value' }, }); // Add messages to thread -await store.saveMessages([{ - id: 'msg-789', - threadId: 'thread-123', - role: 'user', - type: 'text', - content: [{ type: 'text', text: 'Hello' }] -}]); +await store.saveMessages([ + { + id: 'msg-789', + threadId: 'thread-123', + role: 'user', + type: 'text', + content: [{ type: 'text', text: 'Hello' }], + }, +]); // Query threads and messages const savedThread = await store.getThread('thread-123'); @@ -97,14 +99,18 @@ Connection pool settings: ## Features ### Vector Store Features + - Vector similarity search with cosine, euclidean, and dot product metrics - Advanced metadata filtering with MongoDB-like query syntax - Minimum score threshold for queries - Automatic UUID generation for vectors - Table management (create, list, describe, delete, truncate) -- Uses pgvector's IVFFLAT indexing with 100 lists +- Uses pgvector's IVFFLAT indexing with 100 lists by default +- Supports HNSW indexing with configurable parameters +- Supports flat indexing ### Storage Features + - Thread and message storage with JSON support - Atomic transactions for data consistency - Efficient batch operations diff --git a/stores/pg/src/vector/types.ts b/stores/pg/src/vector/types.ts index 4c3d185569..0f225f78fe 100644 --- a/stores/pg/src/vector/types.ts +++ b/stores/pg/src/vector/types.ts @@ -8,7 +8,6 @@ interface IVFConfig { interface HNSWConfig { m?: number; // Max number of connections (default: 16) efConstruction?: number; // Build-time complexity (default: 64) - ef?: number; // Search-time complexity (default: 40) } export interface IndexConfig {