Skip to content

Add Voyage AI embedding provider#437

Open
Marshall2HD wants to merge 1 commit intoplastic-labs:mainfrom
Marshall2HD:feat/voyage-embedding-provider
Open

Add Voyage AI embedding provider#437
Marshall2HD wants to merge 1 commit intoplastic-labs:mainfrom
Marshall2HD:feat/voyage-embedding-provider

Conversation

@Marshall2HD
Copy link
Copy Markdown

Adds Voyage AI as an embedding provider.
VECTOR_STORE_DIMENSIONS was being silently ignored before because dimensions were hardcoded. That actually works now.

Changes:

  • Voyage as a new embedding provider with dimension validation (256/512/1024/2048)
  • All providers now pass dimensions through to their API calls instead of hardcoding them
  • Migration to resize vector columns when dimensions change
  • 18 unit tests + verified against live Voyage API

Set LLM_EMBEDDING_PROVIDER=voyage and LLM_VOYAGE_API_KEY=... to use it.

@cameronbergh
Copy link
Copy Markdown

hardcoded embedding size is silly.

@malaiwah
Copy link
Copy Markdown

Chiming in as another data point for this fix. We're running Honcho on a local vLLM setup using Qwen3-Embedding (1024 dimensions) behind an OpenAI-compatible endpoint, and hit exactly the same wall described in #443.

Before this PR we had to manually patch three files to get it working:

  • src/models.py — two Vector(1536) column definitions changed to Vector(1024)
  • src/embedding_client.py — three places where the dimension is hardcoded to 1536
  • Dropped and recreated the database since there was no automated migration path

The VECTOR_STORE_DIMENSIONS config key existed but was silently ignored, which made the failure mode confusing — embeddings would generate fine, then fail on insert with a dimension mismatch.

One note on the "no manual DB wipe" framing: the Alembic migration here doesn't eliminate re-embedding — it NULLs the existing vectors, resizes the column, and lets the reconciler re-embed asynchronously. The actual message and conclusion data is preserved, which is the important part. The re-embedding cost is still there, just handled automatically rather than requiring a manual DB rebuild.

Happy to test this against our vLLM + OpenAI-compatible path (not Voyage) if a pre-merge test would be useful.

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

Labels

None yet

3 participants