Home

giogio / openez-graph

public
Overview Code History Branches Pull requestsIssuesInsights
main
HomeOverview Code PRsIssues

fix(embeddings): store provider/model in vec0 table to prevent cross-model ranking

3 months ago

0cda296
Authored
asta-nguyen8/8/2026, 6:54:20 AM
embeddings_vec had only chunk_id as primary key, so INSERT OR REPLACE
discarded model identity. When a workspace had vectors from multiple
providers/models, the vec table kept only the last-inserted vector
per chunk — ANN retrieval could rank against the wrong model's vectors.

Fix:
- Add provider and model metadata columns to embeddings_vec schema
- Include provider/model in INSERT OR REPLACE
- Filter KNN query on embeddings_vec.provider/model directly (remove
  the join to embeddings table for filtering — vec0 metadata columns
  support WHERE clause filtering)
- Delete remains chunk_id-based (correct — deletes all models for
  the chunk)

Typecheck 8/8, tests 144 pass.

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>

Parentbb91bbf

3 files changed
  • packages/core/src/retrieval.ts+4−12
  • packages/db/src/sqlite/embedding-repository.ts+6−2
  • packages/db/src/sqlite/workspace-db.ts+5−1