lodedb 1.3.0__tar.gz → 1.3.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {lodedb-1.3.0 → lodedb-1.3.2}/Cargo.toml +1 -1
- {lodedb-1.3.0 → lodedb-1.3.2}/PKG-INFO +46 -3
- {lodedb-1.3.0 → lodedb-1.3.2}/README.md +43 -2
- {lodedb-1.3.0 → lodedb-1.3.2}/crates/lodedb-core/examples/write_generation_fixture.rs +1 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/crates/lodedb-core/examples/write_wal_fixture.rs +1 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/crates/lodedb-core/src/engine/mod.rs +1606 -257
- {lodedb-1.3.0 → lodedb-1.3.2}/crates/lodedb-core/src/lib.rs +1 -1
- {lodedb-1.3.0 → lodedb-1.3.2}/crates/lodedb-core/src/storage/commit_manifest.rs +6 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/crates/lodedb-core/src/storage/mod.rs +59 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/crates/lodedb-core/src/storage/multivec_store.rs +1 -20
- lodedb-1.3.2/crates/lodedb-core/src/storage/tvvf_store.rs +2088 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/crates/lodedb-core/src/storage/util.rs +86 -3
- {lodedb-1.3.0 → lodedb-1.3.2}/crates/lodedb-core/src/storage/wal.rs +220 -10
- {lodedb-1.3.0 → lodedb-1.3.2}/crates/lodedb-core/src/types.rs +32 -1
- {lodedb-1.3.0 → lodedb-1.3.2}/crates/lodedb-core/src/vector/turbovec.rs +8 -0
- lodedb-1.3.2/crates/lodedb-core/tests/block_skip_layout.rs +55 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/crates/lodedb-core/tests/core_engine.rs +1882 -16
- lodedb-1.3.2/crates/lodedb-core/tests/operator_observability.rs +216 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/crates/lodedb-core/tests/storage_fixtures.rs +7 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/pyproject.toml +8 -2
- {lodedb-1.3.0 → lodedb-1.3.2}/src/lodedb/__init__.py +3 -1
- lodedb-1.3.2/src/lodedb/_native_core.py +77 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/src/lodedb/engine/embedding_backends.py +319 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/src/lodedb/engine/native_adapter.py +42 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/src/lodedb/local/__init__.py +2 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/src/lodedb/local/backends.py +74 -6
- {lodedb-1.3.0 → lodedb-1.3.2}/src/lodedb/local/cli.py +10 -2
- {lodedb-1.3.0 → lodedb-1.3.2}/src/lodedb/local/db.py +436 -45
- lodedb-1.3.2/src/lodedb/local/doctor.py +729 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/src/lodedb/local/integrations/__init__.py +13 -2
- lodedb-1.3.2/src/lodedb/local/integrations/cognee.py +689 -0
- lodedb-1.3.2/src/lodedb/local/integrations/kotaemon.py +604 -0
- lodedb-1.3.2/src/lodedb/local/segments.py +187 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/src/lodedb/local/server.py +52 -1
- {lodedb-1.3.0 → lodedb-1.3.2}/third_party/turbovec/Cargo.lock +2 -2
- {lodedb-1.3.0 → lodedb-1.3.2}/third_party/turbovec/turbovec/src/error.rs +31 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/third_party/turbovec/turbovec/src/id_map.rs +40 -1
- {lodedb-1.3.0 → lodedb-1.3.2}/third_party/turbovec/turbovec/src/lib.rs +64 -1
- {lodedb-1.3.0 → lodedb-1.3.2}/third_party/turbovec/turbovec/tests/id_map.rs +133 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/third_party/turbovec/turbovec-python/src/lib.rs +334 -80
- lodedb-1.3.0/src/lodedb/_native_core.py +0 -35
- lodedb-1.3.0/src/lodedb/local/doctor.py +0 -298
- {lodedb-1.3.0 → lodedb-1.3.2}/LICENSE +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/NOTICE +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/crates/lodedb-core/Cargo.toml +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/crates/lodedb-core/examples/filter_planner_bench.rs +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/crates/lodedb-core/examples/turbovec_adapter_smoke.rs +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/crates/lodedb-core/src/error.rs +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/crates/lodedb-core/src/filter/ast.rs +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/crates/lodedb-core/src/filter/doc_set.rs +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/crates/lodedb-core/src/filter/field_index.rs +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/crates/lodedb-core/src/filter/mod.rs +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/crates/lodedb-core/src/filter/predicate.rs +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/crates/lodedb-core/src/filter/resolve.rs +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/crates/lodedb-core/src/filter/validate.rs +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/crates/lodedb-core/src/lexical/bm25.rs +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/crates/lodedb-core/src/lexical/mod.rs +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/crates/lodedb-core/src/lexical/rrf.rs +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/crates/lodedb-core/src/lexical/tokenize.rs +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/crates/lodedb-core/src/storage/legacy.rs +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/crates/lodedb-core/src/storage/lexical_store.rs +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/crates/lodedb-core/src/storage/lsn.rs +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/crates/lodedb-core/src/storage/state_journal.rs +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/crates/lodedb-core/src/storage/text_store.rs +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/crates/lodedb-core/src/storage/tvann_store.rs +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/crates/lodedb-core/src/storage/tvim_delta.rs +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/crates/lodedb-core/src/text/chunk.rs +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/crates/lodedb-core/src/text/hash.rs +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/crates/lodedb-core/src/text/mod.rs +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/crates/lodedb-core/src/vector/ann.rs +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/crates/lodedb-core/src/vector/index.rs +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/crates/lodedb-core/src/vector/math.rs +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/crates/lodedb-core/src/vector/mod.rs +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/crates/lodedb-core/src/vector/stable_id.rs +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/crates/lodedb-core/src/version.rs +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/crates/lodedb-core/tests/ann_build_bench.rs +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/crates/lodedb-core/tests/filter_plan_fixtures.rs +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/crates/lodedb-core/tests/identity_fixtures.rs +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/crates/lodedb-core/tests/lexical_fixtures.rs +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/crates/lodedb-core/tests/predicate_fixtures.rs +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/crates/lodedb-core/tests/turbovec_adapter.rs +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/crates/lodedb-gpu/Cargo.toml +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/crates/lodedb-gpu/src/lib.rs +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/src/lodedb/__main__.py +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/src/lodedb/config.py +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/src/lodedb/engine/__init__.py +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/src/lodedb/engine/_atomic_io.py +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/src/lodedb/engine/_commit_manifest.py +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/src/lodedb/engine/_filelock.py +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/src/lodedb/engine/_lexical.py +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/src/lodedb/engine/_predicate.py +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/src/lodedb/engine/core.py +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/src/lodedb/engine/gpu_turbovec.py +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/src/lodedb/engine/route_profiles.py +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/src/lodedb/engine/route_registry.py +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/src/lodedb/engine/runtime_policy.py +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/src/lodedb/engine/state_journal_store.py +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/src/lodedb/engine/turbovec_delta_store.py +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/src/lodedb/engine/turbovec_index.py +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/src/lodedb/graph/__init__.py +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/src/lodedb/graph/_store.py +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/src/lodedb/graph/knowledge_graph.py +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/src/lodedb/local/appender.py +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/src/lodedb/local/benchmark.py +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/src/lodedb/local/checkpointer.py +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/src/lodedb/local/collection.py +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/src/lodedb/local/integrations/langchain.py +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/src/lodedb/local/integrations/llama_index.py +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/src/lodedb/local/integrations/llama_index_graph.py +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/src/lodedb/local/integrations/mem0.py +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/src/lodedb/local/integrations/privategpt.py +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/src/lodedb/local/late_interaction.py +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/src/lodedb/local/mcp_install.py +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/src/lodedb/local/mcp_server.py +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/src/lodedb/local/migrate/__init__.py +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/src/lodedb/local/migrate/cli.py +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/src/lodedb/local/migrate/detect.py +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/src/lodedb/local/migrate/plan.py +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/src/lodedb/local/migrate/report.py +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/src/lodedb/local/migrate/runner.py +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/src/lodedb/local/migrate/sources/__init__.py +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/src/lodedb/local/migrate/sources/base.py +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/src/lodedb/local/migrate/sources/langchain_inmemory.py +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/src/lodedb/local/migrate/sources/llama_index_simple.py +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/src/lodedb/local/migrate/sources/mem0_qdrant.py +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/src/lodedb/local/migrate/sources/pgvector.py +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/src/lodedb/local/onnx_artifacts.py +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/src/lodedb/local/presets.py +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/src/lodedb/py.typed +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/third_party/turbovec/Cargo.toml +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/third_party/turbovec/turbovec/Cargo.toml +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/third_party/turbovec/turbovec/README.md +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/third_party/turbovec/turbovec/build.rs +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/third_party/turbovec/turbovec/examples/dump_state.rs +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/third_party/turbovec/turbovec/examples/kernel_xtest.rs +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/third_party/turbovec/turbovec/src/codebook.rs +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/third_party/turbovec/turbovec/src/encode.rs +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/third_party/turbovec/turbovec/src/io.rs +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/third_party/turbovec/turbovec/src/maxsim.rs +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/third_party/turbovec/turbovec/src/pack.rs +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/third_party/turbovec/turbovec/src/rotation.rs +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/third_party/turbovec/turbovec/src/search.rs +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/third_party/turbovec/turbovec/tests/codebook.rs +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/third_party/turbovec/turbovec/tests/concurrent_search.rs +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/third_party/turbovec/turbovec/tests/distortion.rs +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/third_party/turbovec/turbovec/tests/encode.rs +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/third_party/turbovec/turbovec/tests/encoded_rows.rs +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/third_party/turbovec/turbovec/tests/filtering.rs +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/third_party/turbovec/turbovec/tests/input_validation.rs +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/third_party/turbovec/turbovec/tests/io_versioning.rs +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/third_party/turbovec/turbovec/tests/kernel_correctness.rs +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/third_party/turbovec/turbovec/tests/lazy_init.rs +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/third_party/turbovec/turbovec/tests/reconstruction.rs +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/third_party/turbovec/turbovec/tests/rotation.rs +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/third_party/turbovec/turbovec/tests/state_sequences.rs +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/third_party/turbovec/turbovec/tests/swap_remove.rs +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/third_party/turbovec/turbovec/tests/tqplus_calibration.rs +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/third_party/turbovec/turbovec-python/Cargo.toml +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/third_party/turbovec/turbovec-python/README.md +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/third_party/turbovec/turbovec-python/build.rs +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/third_party/turbovec/turbovec-python/python/turbovec/__init__.py +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/third_party/turbovec/turbovec-python/python/turbovec/_dedup.py +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/third_party/turbovec/turbovec-python/python/turbovec/_persist.py +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/third_party/turbovec/turbovec-python/python/turbovec/agno.py +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/third_party/turbovec/turbovec-python/python/turbovec/haystack.py +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/third_party/turbovec/turbovec-python/python/turbovec/langchain.py +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/third_party/turbovec/turbovec-python/python/turbovec/llama_index.py +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/third_party/turbovec/turbovec-python/tests/test_agno.py +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/third_party/turbovec/turbovec-python/tests/test_dedup.py +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/third_party/turbovec/turbovec-python/tests/test_filtering.py +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/third_party/turbovec/turbovec-python/tests/test_haystack.py +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/third_party/turbovec/turbovec-python/tests/test_id_map.py +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/third_party/turbovec/turbovec-python/tests/test_index.py +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/third_party/turbovec/turbovec-python/tests/test_langchain.py +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/third_party/turbovec/turbovec-python/tests/test_llama_index.py +0 -0
- {lodedb-1.3.0 → lodedb-1.3.2}/third_party/turbovec/turbovec-python/tests/test_security.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: lodedb
|
|
3
|
-
Version: 1.3.
|
|
3
|
+
Version: 1.3.2
|
|
4
4
|
Classifier: Development Status :: 4 - Beta
|
|
5
5
|
Classifier: Intended Audience :: Developers
|
|
6
6
|
Classifier: Programming Language :: Python :: 3 :: Only
|
|
@@ -10,6 +10,7 @@ Requires-Dist: numpy>=2.0.0,<3
|
|
|
10
10
|
Requires-Dist: typer>=0.12.0
|
|
11
11
|
Requires-Dist: pyyaml>=6.0.0
|
|
12
12
|
Requires-Dist: lodedb[embeddings,torch,image,mcp,langchain,llama-index,mem0] ; extra == 'all'
|
|
13
|
+
Requires-Dist: cognee>=1.1.0,<2 ; python_full_version < '3.15' and extra == 'cognee'
|
|
13
14
|
Requires-Dist: pytest>=8.3.0 ; extra == 'dev'
|
|
14
15
|
Requires-Dist: ruff==0.15.17 ; extra == 'dev'
|
|
15
16
|
Requires-Dist: onnxruntime>=1.20.0,<2 ; extra == 'embeddings'
|
|
@@ -24,6 +25,7 @@ Requires-Dist: mem0ai>=2.0.0 ; extra == 'mem0'
|
|
|
24
25
|
Requires-Dist: optimum[exporters]>=1.23.0,<2.0.0 ; extra == 'onnx-export'
|
|
25
26
|
Requires-Dist: sentence-transformers>=3.0.0,<5 ; extra == 'torch'
|
|
26
27
|
Provides-Extra: all
|
|
28
|
+
Provides-Extra: cognee
|
|
27
29
|
Provides-Extra: dev
|
|
28
30
|
Provides-Extra: embeddings
|
|
29
31
|
Provides-Extra: gpu
|
|
@@ -115,7 +117,8 @@ stays **sub-millisecond even at 1M vectors**.
|
|
|
115
117
|
[How it works](#multimodal--bring-your-own-vectors).
|
|
116
118
|
- **Batteries included**: a `lodedb` CLI, a loopback/private-network dev server, an
|
|
117
119
|
[MCP server](#use-as-an-mcp-server), LangChain, LlamaIndex, and mem0 adapters
|
|
118
|
-
(`VectorStore`s, plus a LlamaIndex `PropertyGraphStore`),
|
|
120
|
+
(`VectorStore`s, plus a LlamaIndex `PropertyGraphStore`), a
|
|
121
|
+
[cognee](https://github.com/topoteretes/cognee) vector-DB provider, and a one-line
|
|
119
122
|
[PrivateGPT](https://github.com/zylon-ai/private-gpt) vector-store provider built on the
|
|
120
123
|
LlamaIndex adapter.
|
|
121
124
|
- **Swift / iOS bindings**: a native Swift package for macOS and iOS over the same Rust
|
|
@@ -156,8 +159,9 @@ pip install "lodedb[embeddings,torch]" # + PyTorch fallback, CLIP,
|
|
|
156
159
|
pip install "lodedb[gpu]" # GPU-resident scan (Linux/CUDA)
|
|
157
160
|
pip install "lodedb[image]" # image + text (CLIP) embedding (model="clip")
|
|
158
161
|
pip install "lodedb[mcp,langchain,llama-index,mem0]" # MCP server + LangChain/LlamaIndex/mem0 adapters
|
|
162
|
+
pip install "lodedb[cognee]" # register LodeDB as a cognee vector_db_provider
|
|
159
163
|
pip install "lodedb[onnx-export]" # export ONNX for a custom model (Optimum); presets need no export
|
|
160
|
-
pip install "lodedb[all]" # everything above
|
|
164
|
+
pip install "lodedb[all]" # everything above (except gpu/onnx-export/cognee)
|
|
161
165
|
```
|
|
162
166
|
|
|
163
167
|
Using LodeDB as memory for a coding assistant? After installing the `mcp,embeddings` extras,
|
|
@@ -384,6 +388,42 @@ db.search("turbine fault", k=5) # nearest cluste
|
|
|
384
388
|
`ann_clusters` (partitions) defaults to about `sqrt(n)` and `ann_nprobe` (clusters probed per
|
|
385
389
|
query) to about `sqrt(clusters)`. ANN is a create-time choice persisted with the index and works
|
|
386
390
|
for text and bring-your-own-vector indexes alike; keep the exact default for small-to-mid corpora.
|
|
391
|
+
On reopen, `ann_nprobe` is a session-only override, so benchmark handles can change probe breadth
|
|
392
|
+
without rebuilding; the algorithm and partition count remain the persisted configuration.
|
|
393
|
+
|
|
394
|
+
For large corpora, these are useful starting ranges to measure, not recall or latency promises:
|
|
395
|
+
|
|
396
|
+
| Knob | Useful range | Trade-off |
|
|
397
|
+
| --- | --- | --- |
|
|
398
|
+
| `ann_nprobe` | 64 to 256 clusters | More probes raise recall and scan work; probing every cluster is exact. |
|
|
399
|
+
| `rescore_oversample` | 2 to 8 times `k` | More candidates improve the chance that fp32 re-ranking repairs compact-code errors, at more sidecar reads. |
|
|
400
|
+
</details>
|
|
401
|
+
|
|
402
|
+
<details>
|
|
403
|
+
<summary><b>Two-stage rescore (`rescore="original"`)</b></summary>
|
|
404
|
+
|
|
405
|
+
TurboVec's compact 4-bit scan is fast, but its quantized first-stage ranking can put close
|
|
406
|
+
neighbors in the wrong order. Enable rescore at creation to retain each input vector in a separate
|
|
407
|
+
original-precision sidecar, then re-score the first-stage candidate pool with fp32 dot products:
|
|
408
|
+
|
|
409
|
+
```python
|
|
410
|
+
db = LodeDB(
|
|
411
|
+
path="./data",
|
|
412
|
+
ann="cluster",
|
|
413
|
+
ann_clusters=1024,
|
|
414
|
+
rescore="original",
|
|
415
|
+
rescore_dtype="float16", # default; about 2 bytes per dimension per vector
|
|
416
|
+
rescore_oversample=4,
|
|
417
|
+
)
|
|
418
|
+
```
|
|
419
|
+
|
|
420
|
+
`float16` sidecars add about 2 bytes per dimension per vector (`float32` adds 4; `int8` adds 1).
|
|
421
|
+
They let the final ordering rise above the practical 4-bit ranking ceiling while retaining the
|
|
422
|
+
compact index for candidate generation. Re-scored candidate scores are exact fp32 dots, but the
|
|
423
|
+
overall result can still be approximate when ANN or a too-small candidate pool excludes a true
|
|
424
|
+
neighbor. Rescore is a create-time capture choice: originals are not recoverable after a normal
|
|
425
|
+
store's first ingest, so enabling it later requires a rebuild. On a rescore-enabled reopen,
|
|
426
|
+
`rescore_oversample` is a session-only override; mode and dtype must match the persisted sidecar.
|
|
387
427
|
</details>
|
|
388
428
|
|
|
389
429
|
## Multimodal & bring-your-own vectors
|
|
@@ -533,6 +573,9 @@ lodedb mcp # stdio MCP server for agent memory
|
|
|
533
573
|
lodedb benchmark # local, metrics-only benchmark
|
|
534
574
|
```
|
|
535
575
|
|
|
576
|
+
Use `lodedb serve` as a local OpenAI-compatible embeddings provider; see [LodeDB as a local
|
|
577
|
+
embeddings provider](docs/integrations.md#lodedb-as-a-local-embeddings-provider).
|
|
578
|
+
|
|
536
579
|
## Use as an MCP server
|
|
537
580
|
|
|
538
581
|
LodeDB ships a [Model Context Protocol](https://modelcontextprotocol.io) server, so an agent
|
|
@@ -66,7 +66,8 @@ stays **sub-millisecond even at 1M vectors**.
|
|
|
66
66
|
[How it works](#multimodal--bring-your-own-vectors).
|
|
67
67
|
- **Batteries included**: a `lodedb` CLI, a loopback/private-network dev server, an
|
|
68
68
|
[MCP server](#use-as-an-mcp-server), LangChain, LlamaIndex, and mem0 adapters
|
|
69
|
-
(`VectorStore`s, plus a LlamaIndex `PropertyGraphStore`),
|
|
69
|
+
(`VectorStore`s, plus a LlamaIndex `PropertyGraphStore`), a
|
|
70
|
+
[cognee](https://github.com/topoteretes/cognee) vector-DB provider, and a one-line
|
|
70
71
|
[PrivateGPT](https://github.com/zylon-ai/private-gpt) vector-store provider built on the
|
|
71
72
|
LlamaIndex adapter.
|
|
72
73
|
- **Swift / iOS bindings**: a native Swift package for macOS and iOS over the same Rust
|
|
@@ -107,8 +108,9 @@ pip install "lodedb[embeddings,torch]" # + PyTorch fallback, CLIP,
|
|
|
107
108
|
pip install "lodedb[gpu]" # GPU-resident scan (Linux/CUDA)
|
|
108
109
|
pip install "lodedb[image]" # image + text (CLIP) embedding (model="clip")
|
|
109
110
|
pip install "lodedb[mcp,langchain,llama-index,mem0]" # MCP server + LangChain/LlamaIndex/mem0 adapters
|
|
111
|
+
pip install "lodedb[cognee]" # register LodeDB as a cognee vector_db_provider
|
|
110
112
|
pip install "lodedb[onnx-export]" # export ONNX for a custom model (Optimum); presets need no export
|
|
111
|
-
pip install "lodedb[all]" # everything above
|
|
113
|
+
pip install "lodedb[all]" # everything above (except gpu/onnx-export/cognee)
|
|
112
114
|
```
|
|
113
115
|
|
|
114
116
|
Using LodeDB as memory for a coding assistant? After installing the `mcp,embeddings` extras,
|
|
@@ -335,6 +337,42 @@ db.search("turbine fault", k=5) # nearest cluste
|
|
|
335
337
|
`ann_clusters` (partitions) defaults to about `sqrt(n)` and `ann_nprobe` (clusters probed per
|
|
336
338
|
query) to about `sqrt(clusters)`. ANN is a create-time choice persisted with the index and works
|
|
337
339
|
for text and bring-your-own-vector indexes alike; keep the exact default for small-to-mid corpora.
|
|
340
|
+
On reopen, `ann_nprobe` is a session-only override, so benchmark handles can change probe breadth
|
|
341
|
+
without rebuilding; the algorithm and partition count remain the persisted configuration.
|
|
342
|
+
|
|
343
|
+
For large corpora, these are useful starting ranges to measure, not recall or latency promises:
|
|
344
|
+
|
|
345
|
+
| Knob | Useful range | Trade-off |
|
|
346
|
+
| --- | --- | --- |
|
|
347
|
+
| `ann_nprobe` | 64 to 256 clusters | More probes raise recall and scan work; probing every cluster is exact. |
|
|
348
|
+
| `rescore_oversample` | 2 to 8 times `k` | More candidates improve the chance that fp32 re-ranking repairs compact-code errors, at more sidecar reads. |
|
|
349
|
+
</details>
|
|
350
|
+
|
|
351
|
+
<details>
|
|
352
|
+
<summary><b>Two-stage rescore (`rescore="original"`)</b></summary>
|
|
353
|
+
|
|
354
|
+
TurboVec's compact 4-bit scan is fast, but its quantized first-stage ranking can put close
|
|
355
|
+
neighbors in the wrong order. Enable rescore at creation to retain each input vector in a separate
|
|
356
|
+
original-precision sidecar, then re-score the first-stage candidate pool with fp32 dot products:
|
|
357
|
+
|
|
358
|
+
```python
|
|
359
|
+
db = LodeDB(
|
|
360
|
+
path="./data",
|
|
361
|
+
ann="cluster",
|
|
362
|
+
ann_clusters=1024,
|
|
363
|
+
rescore="original",
|
|
364
|
+
rescore_dtype="float16", # default; about 2 bytes per dimension per vector
|
|
365
|
+
rescore_oversample=4,
|
|
366
|
+
)
|
|
367
|
+
```
|
|
368
|
+
|
|
369
|
+
`float16` sidecars add about 2 bytes per dimension per vector (`float32` adds 4; `int8` adds 1).
|
|
370
|
+
They let the final ordering rise above the practical 4-bit ranking ceiling while retaining the
|
|
371
|
+
compact index for candidate generation. Re-scored candidate scores are exact fp32 dots, but the
|
|
372
|
+
overall result can still be approximate when ANN or a too-small candidate pool excludes a true
|
|
373
|
+
neighbor. Rescore is a create-time capture choice: originals are not recoverable after a normal
|
|
374
|
+
store's first ingest, so enabling it later requires a rebuild. On a rescore-enabled reopen,
|
|
375
|
+
`rescore_oversample` is a session-only override; mode and dtype must match the persisted sidecar.
|
|
338
376
|
</details>
|
|
339
377
|
|
|
340
378
|
## Multimodal & bring-your-own vectors
|
|
@@ -484,6 +522,9 @@ lodedb mcp # stdio MCP server for agent memory
|
|
|
484
522
|
lodedb benchmark # local, metrics-only benchmark
|
|
485
523
|
```
|
|
486
524
|
|
|
525
|
+
Use `lodedb serve` as a local OpenAI-compatible embeddings provider; see [LodeDB as a local
|
|
526
|
+
embeddings provider](docs/integrations.md#lodedb-as-a-local-embeddings-provider).
|
|
527
|
+
|
|
487
528
|
## Use as an MCP server
|
|
488
529
|
|
|
489
530
|
LodeDB ships a [Model Context Protocol](https://modelcontextprotocol.io) server, so an agent
|