From 111ad598bef00823f38e82a6d0ae12c64a7e7c39 Mon Sep 17 00:00:00 2001 From: Aska Date: Sun, 6 Sep 2026 11:30:26 +0800 Subject: [PATCH] =?UTF-8?q?fix(vector):=20New=20=E5=9C=A8=20embedder=20?= =?UTF-8?q?=E7=BB=B4=E5=BA=A6=E6=9C=AA=E7=9F=A5(API=20=E9=A6=96=E8=AF=B7?= =?UTF-8?q?=E6=B1=82=E5=89=8D=E4=B8=BA0)=E6=97=B6=E5=85=88=20probe=20?= =?UTF-8?q?=E4=B8=80=E6=AC=A1=E5=AD=A6=E7=9C=9F=E5=AE=9E=E7=BB=B4=E5=BA=A6?= =?UTF-8?q?=EF=BC=8C=E9=81=BF=E5=85=8D=20PG=20=E5=90=91=E9=87=8F=E7=B4=A2?= =?UTF-8?q?=E5=BC=95=20fallback?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/runtime/memory/vector/index.go | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/internal/runtime/memory/vector/index.go b/internal/runtime/memory/vector/index.go index 0fdd8c1..508181d 100644 --- a/internal/runtime/memory/vector/index.go +++ b/internal/runtime/memory/vector/index.go @@ -98,6 +98,15 @@ func New(cfg config.DBConfig, embedder embedding.Embedder, log *slog.Logger) (In return nil, ErrNoEmbedder } dim := embedder.Dim() + if dim <= 0 { + // API-backed embedders do not know their vector dimension until the first + // successful response. Probe once so the index is built with the real + // dimension instead of erroring out and falling back to in-memory. + if _, err := embedder.Embed(context.Background(), []string{"probe"}); err != nil { + return nil, fmt.Errorf("memory/vector: probe embedder dim: %w", err) + } + dim = embedder.Dim() + } if dim <= 0 { return nil, fmt.Errorf("memory/vector: %w (got %d)", ErrInvalidDim, dim) }