Skip to main content

Edda - a lightweight vector search engine

Project description

logo

edda

License: MIT Python 3.10+ Zig 0.15.2

[!WARNING] Edda is in early development (v0.1). The API will change between versions.

Edda is a lightweight embedded vector search engine written in Zig with Python bindings. Unlike server-based vector databases (Qdrant, Weaviate, Milvus), Edda runs in-process. No daemon, no network, no infrastructure. Unlike pure-C++ libraries (FAISS, hnswlib), it ships with a clean Python API and zero compile-time dependencies for end users. Useful for prototyping RAG pipelines, embedding small-to-medium collections in applications, or learning how vector search works under the hood.

Named after the Poetic Edda.

Installation

pip install pyedda

Supported platforms (prebuilt wheels):

  • Linux x86_64
  • macOS arm64 (Apple Silicon)
  • Windows x86_64

On other platforms pip install will build from source, which requires Zig 0.15.2+ to be installed.

Quickstart

import numpy as np
from edda import IndexFlat

# In a real pipeline these vectors come from an embedding model
# (OpenAI, sentence-transformers, BGE, etc.)
vectors = np.array([
    [0.1, 0.2, 0.3],
    [0.9, 0.1, 0.0],
    [0.1, 0.3, 0.28],
], dtype=np.float32)

idx = IndexFlat(dim=3, metric="cosine")
idx.add(vectors, ids=np.array([10, 20, 30], dtype=np.int64))
print(len(idx))  # 3

query = np.array([[0.1, 0.2, 0.3]], dtype=np.float32)
result = idx.search(query, k=2)
print("Top ids:", result.ids[0])
print("Scores:", result.scores[0])

# Persistence
idx.save("my_index.edda")
loaded = IndexFlat.load("my_index.edda")
print(len(loaded))  # 3

See examples/ for more usage scenarios.

Roadmap

  • v0.1 (current) brute-force flat index, persistence, Python bindings, save/load.
  • v0.2 HNSW index for sub-linear search, benchmarks against hnswlib and FAISS on standard ANN datasets.
  • v0.3 filtered search with metadata, batch deletions.
  • Later MCP server (rebuild after API stabilizes), additional distance metrics, multi-threading.

Development

Requires Zig 0.15.2+, uv, and just.

Setup

git clone https://github.com/dmitryglhf/edda.git
cd edda
just build              # compiles the Zig core into the Python package
uv pip install -e .     # installs pyedda in editable mode

After modifying Zig code, run just build again to rebuild the native library.

Testing

just test               # runs both Zig unit tests and Python tests

Or run them separately:

zig build test          # Zig unit tests only
uv run pytest           # Python tests only

Releasing

Releases are automated via GitHub Actions. Two flows are available:

Dev release to TestPyPI for iterating on a version before the final release:

just bump-dev 0.1.3 1   # creates version 0.1.3.dev1
just release            # pushes commit and tag, triggers TestPyPI workflow
just test-install 0.1.3.dev1   # installs from TestPyPI in a fresh venv and smoke-tests

Production release to PyPI for the final stable version:

just bump 0.1.3         # creates version 0.1.3
just release            # pushes commit and tag, triggers PyPI workflow
just test-install-prod 0.1.3

License

MIT

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

pyedda-0.1.2.tar.gz (78.8 kB view details)

Uploaded Source

Built Distributions

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

pyedda-0.1.2-cp313-cp313-win_amd64.whl (182.4 kB view details)

Uploaded CPython 3.13Windows x86-64

pyedda-0.1.2-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (674.7 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64manylinux: glibc 2.5+ x86-64

pyedda-0.1.2-cp313-cp313-macosx_11_0_arm64.whl (108.3 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

pyedda-0.1.2-cp312-cp312-win_amd64.whl (182.4 kB view details)

Uploaded CPython 3.12Windows x86-64

pyedda-0.1.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (674.7 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64manylinux: glibc 2.5+ x86-64

pyedda-0.1.2-cp312-cp312-macosx_11_0_arm64.whl (108.3 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

pyedda-0.1.2-cp311-cp311-win_amd64.whl (182.4 kB view details)

Uploaded CPython 3.11Windows x86-64

pyedda-0.1.2-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (674.7 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64manylinux: glibc 2.5+ x86-64

pyedda-0.1.2-cp311-cp311-macosx_11_0_arm64.whl (108.3 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

pyedda-0.1.2-cp310-cp310-win_amd64.whl (182.4 kB view details)

Uploaded CPython 3.10Windows x86-64

pyedda-0.1.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (674.7 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64manylinux: glibc 2.5+ x86-64

pyedda-0.1.2-cp310-cp310-macosx_11_0_arm64.whl (108.3 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

File details

Details for the file pyedda-0.1.2.tar.gz.

File metadata

  • Download URL: pyedda-0.1.2.tar.gz
  • Upload date:
  • Size: 78.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pyedda-0.1.2.tar.gz
Algorithm Hash digest
SHA256 ab06f30506e46f32c02319d02b424e83ab1c12cae3b0d547df550ede8faf0ac4
MD5 5b3da5a30ab3610b69c54e3b1259e8c8
BLAKE2b-256 c813eaeaf69e6fd344ba2fb6700d12d43b48611cbf5874ac5c21817a90c07d74

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyedda-0.1.2.tar.gz:

Publisher: release.yml on dmitryglhf/edda

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

File details

Details for the file pyedda-0.1.2-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: pyedda-0.1.2-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 182.4 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pyedda-0.1.2-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 bc3be19cc7b0c212838e711fe48bd4feef0e69a83bf825534278397edaa9e8bf
MD5 a3e2232f8d80157cc73c7d7ba0248623
BLAKE2b-256 6d95f77f197d23441f4dc3d5fe062cab880f02edcbd7ba011b4ad2e0ad3b1e42

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyedda-0.1.2-cp313-cp313-win_amd64.whl:

Publisher: release.yml on dmitryglhf/edda

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

File details

Details for the file pyedda-0.1.2-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pyedda-0.1.2-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 1d10bb2f2d2950a6bfc89d061a0f4a7a33fe77bd8ef46d85c567e5828049a8e6
MD5 852cd9a2200bd9baf23980db34fe98e9
BLAKE2b-256 ac46a979a28f7dbc1ca1b3bf06d39d7860b1f0d67b1cdda78b273fcd4ab1dd0f

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyedda-0.1.2-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on dmitryglhf/edda

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

File details

Details for the file pyedda-0.1.2-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyedda-0.1.2-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0ab49573700a8d5122b092a4f2fa048caa03b0c08b3a6e2e41164bfb850c9dd1
MD5 a1d0dee6cf799e7dc6cd9858c37bf142
BLAKE2b-256 b6e757b069d3c60fb8ec46a8f04edf066989066d807bc96b96d54324239ddb52

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyedda-0.1.2-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: release.yml on dmitryglhf/edda

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

File details

Details for the file pyedda-0.1.2-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: pyedda-0.1.2-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 182.4 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pyedda-0.1.2-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 98c5a332d104722f4249d5e3d529ccbd2485875b48d2eb6ba12cefcf35207162
MD5 f3246d8debe9685108498c68bc58e2d9
BLAKE2b-256 e05d3e1fe1e74c643f635c3c43f66f58a090e8affb1a2dca02cb511cfc244de6

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyedda-0.1.2-cp312-cp312-win_amd64.whl:

Publisher: release.yml on dmitryglhf/edda

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

File details

Details for the file pyedda-0.1.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pyedda-0.1.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6a5075520ebf6a6fd1ee002d59e321c281139182dbbd8b34c9d0bd38d5c7b6dc
MD5 464510d754f0d2caf580e8c826b6aeeb
BLAKE2b-256 d07b27791ff7f22d7f571ab3e49f3b94fcb5d7226a08b2d00e0c435e24381693

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyedda-0.1.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on dmitryglhf/edda

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

File details

Details for the file pyedda-0.1.2-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyedda-0.1.2-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d89b9da059fb53cd70e7481d4217ef03645d1c520c53a3f81184acccd276028b
MD5 a8709e5285b4fe4f6bf555abc1112f91
BLAKE2b-256 4f524db27ea12afb546a4c30316adc8c5e168405dc2fe6a993bcc28f94e0dd26

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyedda-0.1.2-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: release.yml on dmitryglhf/edda

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

File details

Details for the file pyedda-0.1.2-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: pyedda-0.1.2-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 182.4 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pyedda-0.1.2-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 2a95f304c23d009dcc7dc7e9eb124592c6db34d4f3e5547046a822abbcb2e5fe
MD5 5f19d5fafa6b1101845a230a63333b3e
BLAKE2b-256 83c3e9b873ab6f3136e58748e0db29886eeb5e0231ada48d8c1f47efb848a5a5

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyedda-0.1.2-cp311-cp311-win_amd64.whl:

Publisher: release.yml on dmitryglhf/edda

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

File details

Details for the file pyedda-0.1.2-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pyedda-0.1.2-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6bf354936478fe2da1af342f3817ee959c1621204e838f7dacaf457900be12ab
MD5 3458c985e13ea9f8c9cb3b084d84ccdd
BLAKE2b-256 5906108aa58ee73a653d15895fca28a1e50e65d024285edcbb6fec54a2e2f03c

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyedda-0.1.2-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on dmitryglhf/edda

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

File details

Details for the file pyedda-0.1.2-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyedda-0.1.2-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d6d70e13ae13abbe141468d640924c5910177467de1a7e865542a5e746ebf2ab
MD5 e697944454766cb333ef330f5e9c43c7
BLAKE2b-256 612b5fbc6511a319f075c8cb74aed5c93fd10536b16c266f7ce0a78eac248a34

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyedda-0.1.2-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: release.yml on dmitryglhf/edda

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

File details

Details for the file pyedda-0.1.2-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: pyedda-0.1.2-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 182.4 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pyedda-0.1.2-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 e40672605fd68b23ebce4a13e29464357e26363165874daa80f96fa5fd6824e6
MD5 caf121433e14be00491992df6a0ab59a
BLAKE2b-256 fc1a2e3558119b0b832a36587fb3c6728c8d5cdc1f4f5e1781977d0bd0be7b9b

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyedda-0.1.2-cp310-cp310-win_amd64.whl:

Publisher: release.yml on dmitryglhf/edda

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

File details

Details for the file pyedda-0.1.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pyedda-0.1.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c13ff4bfe6806c3110b402f65857c497ff604e7df93f7a6ec6e945bc2434019c
MD5 f13d3850ef78ccc53dc55d5758482fee
BLAKE2b-256 b26cf87d6bfa8d822fe2c25ff1a8780aee18631320326478511bb2a224a1bb30

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyedda-0.1.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on dmitryglhf/edda

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

File details

Details for the file pyedda-0.1.2-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyedda-0.1.2-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 fca251d0a3473228c65b0afb9e7829aca2cfe335e1159774541145638583453c
MD5 a9d5bb609aa13cc98d3e5c8518aa6807
BLAKE2b-256 85b4fc2123d530da7085acb8482ddd1313dd77997b2e3d8967fbd754df2b6b90

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyedda-0.1.2-cp310-cp310-macosx_11_0_arm64.whl:

Publisher: release.yml on dmitryglhf/edda

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