EmbedFlow
Progressive embedding-model migration over existing vector indexes.
EmbedFlow lets a new embedding model serve over candidates from an existing vector index while target document vectors are materialized progressively. It supports migration analysis, persistent caching, background work, FAISS, Qdrant, a CLI, and FastAPI.
The full project README and architecture diagram are on https://github.com/arnsri33/embedflow.
Install
python -m pip install embedflow
For FAISS and the dashboard:
python -m pip install "embedflow[faiss,dashboard]"
Qdrant and model-runtime extras are documented in the
installation guide.
For model-backed analysis, install embedflow[faiss,models,dashboard].
Why EmbedFlow?
Embedding-model upgrades usually mean re-embedding the corpus and building a second index before the new model can serve. EmbedFlow tests whether the existing retriever can remain useful during that transition.
Different representation spaces can still preserve useful retrieval neighborhoods. EmbedFlow retrieves a bounded source candidate set, scores those candidates with the target model, and fills a persistent target-vector cache in the background.
Try it
The deterministic demo needs no paid service or model download. From a source checkout, run:
./scripts/run_demo.sh
Open http://127.0.0.1:8000/. The first search can be COLD or PARTIAL;
repeated traffic becomes WARM as target vectors are materialized.
Analyze a migration
embedflow analyze \
--documents ./documents.jsonl \
--index ./legacy.index \
--source-model sentence-transformers/all-MiniLM-L6-v2 \
--target-model Qwen/Qwen3-Embedding-0.6B \
--probe-queries ./probe_queries.jsonl \
--device cuda \
--output-dir ./analysis
The report includes the frozen T2-v1 diagnostic (SAFE, EXPAND, or
UNSAFE_OR_UNCERTAIN), a recommended initial candidate depth, and ANN health.
SAFE is an empirical deployment signal; validate important migrations on the
target corpus.
Start progressive serving with:
embedflow serve --config ./analysis/embedflow.analysis.yaml --device cuda
Known migration evidence
EmbedFlow ships a versioned registry of measured results from the research study. Matching model contracts provide useful starting depths and show what was observed on earlier corpora; a new corpus still receives its own analysis.
embedflow registry list
embedflow registry show \
--source Qwen/Qwen3-Embedding-4B \
--target Qwen/Qwen3-Embedding-8B
Selected core records (nDCG@10, G(50)):
| Source | Target | Evaluation | G(50) |
Observed depth |
|---|---|---|---|---|
| MiniLM-L6-v2 | Qwen3-8B | BRIGHT, 413K | 0.03665 | — |
| Qwen3-0.6B | Qwen3-8B | BRIGHT, 413K | 0.01465 | 200 |
| Qwen3-4B | Qwen3-8B | BRIGHT, 413K | 0.00347 | 20 |
| MiniLM-L6-v2 | Qwen3-8B | Natural Questions, 1M | 0.03255 | 500 |
| Qwen3-4B | Qwen3-8B | Natural Questions, 1M | -0.00043 | 20 |
See the registry documentation for matching levels, contract fingerprints, and provenance.
Research
For candidate depth K, EmbedFlow measures:
G(K) = M_T - M_{T|S_K}
Lower G(K) means the source candidate pool recovers more of native target
retrieval quality. Containment reports neighborhood overlap separately. The
study includes 63 development settings, frozen BRIGHT validation, and Natural
Questions scale experiments through 1M documents.
Read the concepts and methodology for definitions and reproduction details.
Integrations
| Backend | Status |
|---|---|
| FAISS | Supported |
| Qdrant | Supported |
See the FAISS guide and Qdrant guide.
CLI
embedflow --help
embedflow analyze --help
embedflow serve --config ./embedflow.yaml
embedflow status --config ./embedflow.yaml
embedflow registry list
embedflow economics --corpus-size 1000000000 --docs-per-second 106.98 --gpu-price 3.29
embedflow doctor --config ./embedflow.yaml
The CLI reference and API reference cover the remaining commands and endpoints.
Status
EmbedFlow v0.1.0 is an alpha release for research and early real-world testing. T2-v1 is an empirical finite-tail diagnostic, partial rankings can differ from fully warm target reranking, and ANN fidelity needs a reference comparison to audit.
Links
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file embedflow-0.1.0.tar.gz.
File metadata
- Download URL: embedflow-0.1.0.tar.gz
- Upload date:
- Size: 139.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5a39d687ac59429a20a527180695c83818afb7f3dc0911844e6ce4b7d80605f3
|
|
| MD5 |
ef674a1b5323293436445d4a5c215f5f
|
|
| BLAKE2b-256 |
4d625fe2515a255682052d4d225b2b235ebac3fa1d05795dcea6d51da3423ab1
|
File details
Details for the file embedflow-0.1.0-py3-none-any.whl.
File metadata
- Download URL: embedflow-0.1.0-py3-none-any.whl
- Upload date:
- Size: 125.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a1dde4a56792ae65fbdb5e8a573b515bdd6bb1e4a6cf24e5fb2dee4ded826f18
|
|
| MD5 |
1c1a851bd17d1b1eaf892776c967969e
|
|
| BLAKE2b-256 |
8ffd05cd663135764a19cf008be78a02551bb83d6b67aa5a532e1554d446c6c7
|