Skip to content

Support configurable embedding dimensions for OpenAI-compatible providers#147

Closed
sunyanliang2026 wants to merge 2 commits intogarrytan:masterfrom
sunyanliang2026:feat/pglite-embedding-dims-siliconflow
Closed

Support configurable embedding dimensions for OpenAI-compatible providers#147
sunyanliang2026 wants to merge 2 commits intogarrytan:masterfrom
sunyanliang2026:feat/pglite-embedding-dims-siliconflow

Conversation

@sunyanliang2026
Copy link
Copy Markdown

@sunyanliang2026 sunyanliang2026 commented Apr 16, 2026

Summary

  • add OpenAI-compatible endpoint support in embedding client (OPENAI_BASE_URL / OPENAI_API_BASE and GBRAIN_OPENAI_* envs)
  • make embedding model configurable via GBRAIN_EMBEDDING_MODEL
  • make PGLite embedding vector dimension configurable via GBRAIN_EMBEDDING_DIMENSIONS
  • validate returned embedding length against configured dimensions to fail fast on mismatch
  • align chunk model defaults in engines with active embedding model

Why

Some OpenAI-compatible providers (for example siliconflow) expose embedding models that are not 1536 dimensions. Before this change, gbrain was pinned to vector(1536), which blocked semantic indexing on those providers even when /embeddings was otherwise working.

Implementation Notes

  • PGLite schema SQL is now generated via pgliteSchemaSql() and reads model/dim defaults from env.
  • Existing DBs keep their current schema; changing dimensions requires rebuilding index DB or explicit migration.
  • Existing defaults remain unchanged (text-embedding-3-large, 1536) when env vars are not set.

Validation

  • bun test test/pglite-engine.test.ts -t "searchVector returns empty when no embeddings"
  • end-to-end local check against siliconflow-compatible setup:
    • sync/import succeeded
    • embed completed with Qwen/Qwen3-Embedding-0.6B + GBRAIN_EMBEDDING_DIMENSIONS=1024
    • gbrain stats showed full embedding coverage

@sunyanliang2026
Copy link
Copy Markdown
Author

Closing at author request; keeping changes only in personal fork.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant