Move a corpus between embedding models without re-embedding it. Given a text chunk's embedding in Model A's space, a Queryn adapter returns the equivalent vector in Model B's space — so a vector index built with one model can be served against another after a lightweight transform instead of a full, expensive backfill.
The Queryn Embedding Adapters collection —
one small ONNX model per directed model pair (queryn-adapter-<source>_to_<target>).
Each repo contains:
model.onnx — the adapter, opset 17, dynamic batch axis. Runs anywhere
onnxruntime runs; no PyTorch needed.model.safetensors — the same weights, for retraining / inspection.config.json — dimensions, the I/O contract, and provenance.Every adapter L2-normalizes its input and output internally, so you feed raw embeddings straight in and get unit vectors back.
import numpy as np, onnxruntime as ort
from huggingface_hub import hf_hub_download
repo = "QuerynAi/queryn-adapter-ada-002_to_bge-m3"
sess = ort.InferenceSession(hf_hub_download(repo, "model.onnx"),
providers=["CPUExecutionProvider"])
src = np.random.rand(8, 1536).astype(np.float32) # your ada-002 embeddings
tgt = sess.run(["target_embedding"], {"source_embedding": src})[0]
# tgt: (8, 1024) unit vectors in bge-m3 space
1 − mean cosine similarity with Adam and LR scheduling.| Model | Dim | Role in v1 |
|---|---|---|
ada-002 |
1536 | source only (deprecated as a target) |
te3-small |
1536 | source + target |
qwen3-emb-8b |
4096 | source + target |
bge-m3 |
1024 | source + target |
me5-large |
1024 | source + target |
pplx-embed-1 |
1024 | source + target |
nemotron-1b-free |
2048 | source + target |
fastembed-bge-small |
384 | source + target |
49 directed pairs in the current (v1) generation.
Adapter models: MIT. The Queryn codebase: Apache-2.0. Training data keeps
each source corpus's own license — see the dataset's LICENSE manifest.
An independent research project on practical embedding-space alignment. Issues and findings welcome via the repo; the adapters are provided as-is.