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) }