feat(index): add optional Milvus derived index backend#332
Conversation
70476b6 to
c7db5bd
Compare
|
Pushed a small follow-up that normalizes Milvus COSINE and BM25 score semantics across Milvus Lite and Zilliz Cloud. Milvus Lite reports COSINE as distance while Zilliz Cloud reports similarity through the same field, so the backend now normalizes both to the LanceDB-style distance contract expected by the recall layer. BM25 scores are also normalized to positive higher-is-better values. Additional validation:
|
c7db5bd to
b184fad
Compare
Signed-off-by: Cheney Zhang <chen.zhang@zilliz.com>
b184fad to
9758ba2
Compare
|
Pushed a follow-up to narrow the COSINE score workaround to Milvus Lite 3.0 / 3.0.0 only, with a link to the upstream Milvus Lite tracking issue: milvus-io/milvus-lite#343 For Milvus server, Zilliz Cloud, and future Milvus Lite versions, the backend now treats COSINE raw distance as similarity and converts it to the LanceDB-style distance contract expected by the recall layer. Re-ran the Lite + Zilliz smoke and the focused test suite after the change. |
|
Pushed one follow-up fix commit after running a larger Milvus smoke matrix. Changes:
Validation run:
|
Summary
everos[milvus]and[index] backend = "milvus".<root>/.index/milvus/milvus.db, plus Milvus server or Zilliz Cloud via[milvus] uri,token, anddb_name.MilvusClient, explicit schemas,AUTOINDEX, native BM25 functions, dense COSINE search, and backend-specific filter rendering.Design Notes
subject_vectorrecall falls back to the main episode vector on Milvus because the Milvus backend stores one dense vector field per row.Docs
[index]/[milvus]configuration and the local Lite default.Tests
uv run python -m compileall -q src/everosuv run ruff check src/everos/infra/persistence/milvus/repository.py src/everos/memory/search/filters.py tests/unit/test_memory/test_search/test_recall_episode.py tests/unit/test_memory/test_search/test_recall_knowledge_topic.py tests/unit/test_memory/test_search/test_manager.py tests/unit/test_memory/test_get/test_manager.pyuv run lint-importsgit diff --checkuv run pytest tests/unit/test_config/test_settings.py tests/unit/test_core/test_persistence/test_memory_root.py tests/unit/test_memory/test_search/test_filters.py tests/unit/test_infra/test_milvus/test_repo.py tests/unit/test_memory/test_search/test_recall_episode.py tests/unit/test_memory/test_search/test_recall_knowledge_topic.py tests/unit/test_memory/test_search/test_recall_profile.py tests/unit/test_memory/test_search/test_recall_atomic_fact.py tests/unit/test_memory/test_search/test_recall_agent_skill.py tests/unit/test_memory/test_get/test_manager.py tests/unit/test_memory/test_search/test_manager.py tests/unit/test_scripts/test_check_datetime_discipline.py::test_real_repo_passes_discipline_gateuv run pytest tests/unit: 1483 passed, 20 failed due to Python 3.14 rejecting invalid escape sequences in the installedjiebapackage during tokenizer import.Related to #326.