Skip to main content

Local-first, privacy-by-default embedded vector database. Your data never leaves your machine.

Project description

LodeDB

License: Apache 2.0 Python 3.11+

A fast, exact embedded vector database for local RAG: in-process, on-disk, no server.

Built by Egoist Machines, Inc. - efficient full-stack infrastructure for reliable AI systems.

Most embedded vector databases stop at the CPU. LodeDB runs the same on-disk index on the GPU when you have one: batched search hits 24k queries/sec on an A10 and 50k qps on an L40S, 2.8× to 4.8× the all-CPU ceiling, with recall unchanged. It also persists changed rows incrementally, so a commit stays sub-millisecond even at 1M vectors.

Fast on a laptop. Faster on a GPU. Exact every time. Never phones home.

  • GPU-resident batch search: an fp16 copy of the index lives on the GPU, scored with a tiled GEMM plus a streaming top-k ([gpu], Linux/CUDA). How it works.
  • O(changed) persistence: commits only the rows that changed, 173× to 1,308× faster than a full rewrite. How it works.
  • Compact storage: the MIT TurboVec core packs vectors into 2/4-bit codes and scans them with SIMD CPU kernels.
  • In-process, on-disk (.tvim/.tvd/.jsd): no daemon, no account, no API key.
  • Private by default: text, ids, and vectors stay local; telemetry is metrics-only (counts, bytes, latency), never raw payloads.
  • Local embeddings: sentence-transformers on CUDA, MPS, or CPU.
  • Batteries included: a lodedb CLI, a loopback dev server, an MCP server, and a LangChain VectorStore adapter.

🏢 Enterprise The LodeDB core is Apache-2.0 and free to use. Enterprise licensing is available for commercial support, managed and at-scale serving, and on-prem / BYOC deployment. Contact sales@egoistmachines.com.

Install

pip install lodedb

That's it. Prebuilt wheels cover Linux, macOS (Apple Silicon and Intel), and Windows on Python 3.11+, and bundle the TurboVec (Rust) core, so there's nothing to compile. Confirm the install with lodedb doctor. Optional extras:

pip install "lodedb[gpu]"            # GPU-resident scan (Linux/CUDA)
pip install "lodedb[mcp,langchain]"  # MCP server + LangChain adapter
Build from source (contributors, or a platform without a wheel)

Needs a Rust toolchain and a CBLAS provider (Accelerate on macOS, libopenblas-dev on Linux). uv builds and bundles the core for you:

git clone https://github.com/Egoist-Machines/LodeDB && cd LodeDB
uv sync                                 # builds + bundles the TurboVec core via maturin
uv sync --extra mcp --extra langchain   # + MCP server, LangChain adapter
uv sync --extra gpu                     # + GPU-resident scan (Linux/CUDA)

Run with uv run (e.g. uv run lodedb doctor).

Quickstart

from lodedb import LodeDB

db = LodeDB(path="./data", model="minilm")   # "minilm" (fast) | "bge" (quality)

fox = db.add("the quick brown fox jumps", metadata={"topic": "animals"})
db.add("a lazy dog sleeps all day", metadata={"topic": "animals"})

for score, doc_id, meta in db.search("fox", k=5):
    print(score, doc_id, meta)

for hits in db.search_many(["fox", "dog"], k=5):   # batched; the GPU can serve this
    print([(h.score, h.id, h.metadata) for h in hits])

db.get(fox)     # -> "the quick brown fox jumps"  (text retained by default)
db.persist()    # durable .tvim/.tvd/.jsd snapshot; replays on reopen

Reopen with LodeDB(path="./data"); no migration step. Original text is kept in a .tvtext sidecar for db.get; pass store_text=False to keep none. Presets are minilm (384-dim) and bge (768-dim), with weights pulled from Hugging Face on first use. More in examples/.

GPU-resident index

With the [gpu] extra on a CUDA host, LodeDB reconstructs the compact index into an fp16 matrix resident on the GPU and scores batched search_many with a tiled GEMM plus a streaming top-k. It is opt-in and lazy: single queries, non-CUDA hosts, and GPU-memory rejection fall back to the CPU scan, which stays the source of truth.

GPU throughput climbs with batch size while the CPU scan is flat. Same 4-bit index (d=1536, 100K), same host, only the scoring step differs. Crossover is around batch 50:

query batch A10 GPU L40S GPU
1 261 q/s 432 q/s
16 3,531 5,562
64 11,463 18,175
256 19,998 39,449
1024 24,037 50,326

Vanilla TurboVec CPU (all threads) on the same boxes: 8,497 q/s (A10 host), 10,420 q/s (L40S host). At batch 1024 the GPU is 2.8× / 4.8× that, and it scales with GPU class.

GPU throughput vs batch size: A10 and L40S vs the vanilla CPU scan

Recall is unchanged: the GPU scores the exact 4-bit reconstruction, so R@1 tracks the CPU scan across datasets and bit-widths, and edges ahead on GloVe-200 where quantization error is largest.

Recall: vanilla CPU scan vs GPU fp16 reconstruction

Other in-process vector databases stay CPU-bound. Alibaba's zvec reports about 8.4k q/s (VectorDBBench, 16-vCPU CPU, Cohere 768-dim): the same class as the TurboVec CPU scan, and a different regime from ours, so read it as the CPU-class baseline. The GPU-resident path is what clears it.

Scope. GPU search is Linux/CUDA-only and opt-in ([gpu]). macOS scans on the CPU (the MPS scan is experimental). See docs/benchmarks.md and docs/architecture.md.

Delta persistence

Most embedded indexes rewrite the whole file on every change (O(N)). LodeDB writes only the rows that changed (O(changed)), so a 1,000-row commit stays sub-millisecond at any size:

corpus full rewrite delta export speedup
100K 42.4 ms 0.25 ms 173×
500K 190.4 ms 0.24 ms 782×
1M 404.9 ms 0.31 ms 1,308×

Persist time: full rewrite vs delta export

The GPU path makes reads fast; the delta makes writes cheap. The on-disk format stays a plain snapshot that replays on reopen.

Benchmarks

All artifacts are metrics-only (counts, bytes, latency), never payloads. Full methodology and the complete figure set are in docs/benchmarks.md; each benchmarks/ folder has a README and a one-line reproduction command.

Local is the common case. On an Apple M1 (MiniLM, 20K docs) the CPU scan is ~0.25 ms p50, and end-to-end single-query latency is 5.7 ms p50.

Single-query latency on a laptop

CLI

lodedb doctor      # capability report: embedding / GPU / TurboVec backend
lodedb index ...   # build / add to an on-disk index
lodedb query ...   # search
lodedb serve       # loopback dev server (127.0.0.1, no auth)
lodedb mcp         # stdio MCP server for agent memory
lodedb benchmark   # local, metrics-only benchmark

Limitations

  • Exact scan, no ANN. Built for small-to-mid corpora where exact recall matters, not billion-scale.
  • GPU is Linux/CUDA-only and opt-in ([gpu]). macOS scans on the CPU; the MPS scan is experimental and was slower than NEON on the hardware tested.
  • Single queries run on the CPU; the GPU serves batched search_many.
  • Model weights download from Hugging Face on first use, then cache locally.

TurboVec

The compact core is the upstream MIT TurboVec project (© Ryan Codrai), vendored under third_party/turbovec/ with its license preserved. LodeDB's lifecycle patches (encoded-row export/import, upsert_with_ids, calibration) are Apache-2.0. See NOTICE.

License

Apache-2.0 (LICENSE). The bundled TurboVec core is MIT (NOTICE, third_party/turbovec/LICENSE). "LodeDB" and "Egoist Machines" are trademarks; Apache-2.0 grants no trademark rights (§6).

Enterprise licensing and commercial support are available from Egoist Machines, Inc.: contact sales@egoistmachines.com.

Contributing & security

PRs welcome; see CONTRIBUTING.md. Report security issues privately per SECURITY.md, not in public issues. Other bugs and requests go to the issue tracker.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

lodedb-0.1.1.tar.gz (272.9 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

lodedb-0.1.1-cp39-abi3-win_amd64.whl (790.6 kB view details)

Uploaded CPython 3.9+Windows x86-64

lodedb-0.1.1-cp39-abi3-manylinux_2_28_x86_64.whl (13.2 MB view details)

Uploaded CPython 3.9+manylinux: glibc 2.28+ x86-64

lodedb-0.1.1-cp39-abi3-macosx_11_0_arm64.whl (925.1 kB view details)

Uploaded CPython 3.9+macOS 11.0+ ARM64

lodedb-0.1.1-cp39-abi3-macosx_10_12_x86_64.whl (855.6 kB view details)

Uploaded CPython 3.9+macOS 10.12+ x86-64

File details

Details for the file lodedb-0.1.1.tar.gz.

File metadata

  • Download URL: lodedb-0.1.1.tar.gz
  • Upload date:
  • Size: 272.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for lodedb-0.1.1.tar.gz
Algorithm Hash digest
SHA256 c0702f9789e60c6110fb2892e1ec0e81d2dc7f4bae88eff1965607ff3e1fdd5d
MD5 a70565fd53835cf7552a0b076cf8688f
BLAKE2b-256 109c7137309945ab7032c9377ca6454d1f7ed51e3da483cc4b85ed53c725e2e5

See more details on using hashes here.

Provenance

The following attestation bundles were made for lodedb-0.1.1.tar.gz:

Publisher: release.yml on Egoist-Machines/LodeDB

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file lodedb-0.1.1-cp39-abi3-win_amd64.whl.

File metadata

  • Download URL: lodedb-0.1.1-cp39-abi3-win_amd64.whl
  • Upload date:
  • Size: 790.6 kB
  • Tags: CPython 3.9+, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for lodedb-0.1.1-cp39-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 769b700140e31cd7bc32c166104f25719e9a90084473a603e07f7fc6f6b630c0
MD5 22b1248842d9686d6596a8ea08c3f12a
BLAKE2b-256 eaba9e47a1ab3911650e72db5e78803650a51a209089ba9377b45443cb713143

See more details on using hashes here.

Provenance

The following attestation bundles were made for lodedb-0.1.1-cp39-abi3-win_amd64.whl:

Publisher: release.yml on Egoist-Machines/LodeDB

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file lodedb-0.1.1-cp39-abi3-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for lodedb-0.1.1-cp39-abi3-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 627441d2625f6b0d9e6d8935566f03bcea3f37e138d9061f95cf37c0b34d26ef
MD5 f842c3cb031c00ed8240ba72ee6fddc7
BLAKE2b-256 ec74f8e6bba57a5f3096323ae2a687a2e748a97975433888084fda2ad9ab8b80

See more details on using hashes here.

Provenance

The following attestation bundles were made for lodedb-0.1.1-cp39-abi3-manylinux_2_28_x86_64.whl:

Publisher: release.yml on Egoist-Machines/LodeDB

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file lodedb-0.1.1-cp39-abi3-macosx_11_0_arm64.whl.

File metadata

  • Download URL: lodedb-0.1.1-cp39-abi3-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 925.1 kB
  • Tags: CPython 3.9+, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for lodedb-0.1.1-cp39-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a454d33de4960b95382dd3bd3693d551ff9d5674af354bd83c5dfd2c86edf66d
MD5 8deaed7ca5ff733ac61a5b4157795d80
BLAKE2b-256 b7f7213667b5cc658c705951340683d996bcae992834a7696244023b725775ea

See more details on using hashes here.

Provenance

The following attestation bundles were made for lodedb-0.1.1-cp39-abi3-macosx_11_0_arm64.whl:

Publisher: release.yml on Egoist-Machines/LodeDB

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file lodedb-0.1.1-cp39-abi3-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for lodedb-0.1.1-cp39-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 0ddc56db63ccf5dcbdc0a7af8faa134646d2502c290a1fb7b646a7a09c02c8a4
MD5 49c8e1be18148bc3ff5d25ca349a9aba
BLAKE2b-256 983430484c0732fb45a31e464fbd026eacb4cb074b6e74687d4ebfb69ef26247

See more details on using hashes here.

Provenance

The following attestation bundles were made for lodedb-0.1.1-cp39-abi3-macosx_10_12_x86_64.whl:

Publisher: release.yml on Egoist-Machines/LodeDB

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page