Summary
PR #648 (LatticeEmbedding in crates/ruvector-core) and PR #651 (LatticeWasmEmbeddings in npm/packages/ruvector-extensions) both add a "Lattice"-backed bge-small embedding provider, but they disagree on whether the model is symmetric or asymmetric:
Same declared model, same 384 dimensions, different vector spaces. A user who indexes a corpus with one Lattice provider and queries with the other gets no error — just silently degraded retrieval, since query vectors and passage vectors won't be prefixed consistently.
Suggested fix
Reconcile which convention is authoritative for bge-small/bge-small-en-v1.5 across both providers — likely by matching whatever the upstream lattice-embed crate does natively for this model — so the two "Lattice embeddings" surfaces stay interchangeable for users who expect a shared name to mean a shared embedding space.
Secondary, non-blocking notes from review (bundle in if convenient)
cc @ohdearquant — thanks again for both PRs, just want to make sure the two surfaces stay safely interchangeable before folks build on them.
Summary
PR #648 (
LatticeEmbeddingincrates/ruvector-core) and PR #651 (LatticeWasmEmbeddingsinnpm/packages/ruvector-extensions) both add a "Lattice"-backedbge-smallembedding provider, but they disagree on whether the model is symmetric or asymmetric:bge-smallas symmetric — no query-side instruction prefix is applied.bge-small-en-v1.5as asymmetric — applies BGE's retrieval-instruction prefix inembed_query.Same declared model, same 384 dimensions, different vector spaces. A user who indexes a corpus with one Lattice provider and queries with the other gets no error — just silently degraded retrieval, since query vectors and passage vectors won't be prefixed consistently.
Suggested fix
Reconcile which convention is authoritative for
bge-small/bge-small-en-v1.5across both providers — likely by matching whatever the upstreamlattice-embedcrate does natively for this model — so the two "Lattice embeddings" surfaces stay interchangeable for users who expect a shared name to mean a shared embedding space.Secondary, non-blocking notes from review (bundle in if convenient)
bge-small), Optional LatticeEmbedding provider for ruvector-core (feature: lattice-embeddings) #648 delegates tolattice-embed'sFromStrtable (bge-small-en-v1.5) — an id valid in one throws "unknown model" in the other.cc @ohdearquant — thanks again for both PRs, just want to make sure the two surfaces stay safely interchangeable before folks build on them.