From 31bc2cc202879d39f4fbdaf1c2f1d0834e9312f5 Mon Sep 17 00:00:00 2001 From: scotthuang Date: Tue, 3 Mar 2026 01:59:06 +0800 Subject: [PATCH] fix(memory-lancedb): pass dimensions to embedding API call - Add dimensions parameter to Embeddings constructor - Pass dimensions to OpenAI embeddings.create() API call - Fixes dimension mismatch when using custom embedding models like DashScope text-embedding-v4 --- extensions/memory-lancedb/index.ts | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/extensions/memory-lancedb/index.ts b/extensions/memory-lancedb/index.ts index e45f00fbb57..f02115b1bf6 100644 --- a/extensions/memory-lancedb/index.ts +++ b/extensions/memory-lancedb/index.ts @@ -167,15 +167,20 @@ class Embeddings { apiKey: string, private model: string, baseUrl?: string, + private dimensions?: number, ) { this.client = new OpenAI({ apiKey, baseURL: baseUrl }); } async embed(text: string): Promise { - const response = await this.client.embeddings.create({ + const params: { model: string; input: string; dimensions?: number } = { model: this.model, input: text, - }); + }; + if (this.dimensions) { + params.dimensions = this.dimensions; + } + const response = await this.client.embeddings.create(params); return response.data[0].embedding; } } @@ -298,7 +303,7 @@ const memoryPlugin = { const vectorDim = dimensions ?? vectorDimsForModel(model); const db = new MemoryDB(resolvedDbPath, vectorDim); - const embeddings = new Embeddings(apiKey, model, baseUrl); + const embeddings = new Embeddings(apiKey, model, baseUrl, dimensions); api.logger.info(`memory-lancedb: plugin registered (db: ${resolvedDbPath}, lazy init)`);