[!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
Metadata
Release files for pyedda 0.1.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| pyedda-0.1.2.tar.gz | 78.8 kB | Details |
Built distributions (wheels)
Total release size: 3.9 MB
Release files / pyedda-0.1.2.tar.gz
| Download URL | pyedda-0.1.2.tar.gz |
|---|---|
| Size | 78.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
ab06f30506e46f32c02319d02b424e83ab1c12cae3b0d547df550ede8faf0ac4
|
|
BLAKE2b-256 checksum How to use checksums |
c813eaeaf69e6fd344ba2fb6700d12d43b48611cbf5874ac5c21817a90c07d74
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 7, 2026.
Transparency logRelease files / pyedda-0.1.2-cp313-cp313-win_amd64.whl
| Download URL | pyedda-0.1.2-cp313-cp313-win_amd64.whl |
|---|---|
| Size | 182.4 kB |
| Tags | CPython 3.13 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
bc3be19cc7b0c212838e711fe48bd4feef0e69a83bf825534278397edaa9e8bf
|
|
BLAKE2b-256 checksum How to use checksums |
6d95f77f197d23441f4dc3d5fe062cab880f02edcbd7ba011b4ad2e0ad3b1e42
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 7, 2026.
Transparency logRelease files / pyedda-0.1.2-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | pyedda-0.1.2-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 674.7 kB |
| Tags | CPython 3.13 Linux glibc 2.17+ x86-64 Linux glibc 2.5+ x86-64 |
|
SHA-256 checksum How to use checksums |
1d10bb2f2d2950a6bfc89d061a0f4a7a33fe77bd8ef46d85c567e5828049a8e6
|
|
BLAKE2b-256 checksum How to use checksums |
ac46a979a28f7dbc1ca1b3bf06d39d7860b1f0d67b1cdda78b273fcd4ab1dd0f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 7, 2026.
Transparency logRelease files / pyedda-0.1.2-cp313-cp313-macosx_11_0_arm64.whl
| Download URL | pyedda-0.1.2-cp313-cp313-macosx_11_0_arm64.whl |
|---|---|
| Size | 108.3 kB |
| Tags | CPython 3.13 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
0ab49573700a8d5122b092a4f2fa048caa03b0c08b3a6e2e41164bfb850c9dd1
|
|
BLAKE2b-256 checksum How to use checksums |
b6e757b069d3c60fb8ec46a8f04edf066989066d807bc96b96d54324239ddb52
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 7, 2026.
Transparency logRelease files / pyedda-0.1.2-cp312-cp312-win_amd64.whl
| Download URL | pyedda-0.1.2-cp312-cp312-win_amd64.whl |
|---|---|
| Size | 182.4 kB |
| Tags | CPython 3.12 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
98c5a332d104722f4249d5e3d529ccbd2485875b48d2eb6ba12cefcf35207162
|
|
BLAKE2b-256 checksum How to use checksums |
e05d3e1fe1e74c643f635c3c43f66f58a090e8affb1a2dca02cb511cfc244de6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 7, 2026.
Transparency logRelease files / pyedda-0.1.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | pyedda-0.1.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 674.7 kB |
| Tags | CPython 3.12 Linux glibc 2.17+ x86-64 Linux glibc 2.5+ x86-64 |
|
SHA-256 checksum How to use checksums |
6a5075520ebf6a6fd1ee002d59e321c281139182dbbd8b34c9d0bd38d5c7b6dc
|
|
BLAKE2b-256 checksum How to use checksums |
d07b27791ff7f22d7f571ab3e49f3b94fcb5d7226a08b2d00e0c435e24381693
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 7, 2026.
Transparency logRelease files / pyedda-0.1.2-cp312-cp312-macosx_11_0_arm64.whl
| Download URL | pyedda-0.1.2-cp312-cp312-macosx_11_0_arm64.whl |
|---|---|
| Size | 108.3 kB |
| Tags | CPython 3.12 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
d89b9da059fb53cd70e7481d4217ef03645d1c520c53a3f81184acccd276028b
|
|
BLAKE2b-256 checksum How to use checksums |
4f524db27ea12afb546a4c30316adc8c5e168405dc2fe6a993bcc28f94e0dd26
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 7, 2026.
Transparency logRelease files / pyedda-0.1.2-cp311-cp311-win_amd64.whl
| Download URL | pyedda-0.1.2-cp311-cp311-win_amd64.whl |
|---|---|
| Size | 182.4 kB |
| Tags | CPython 3.11 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
2a95f304c23d009dcc7dc7e9eb124592c6db34d4f3e5547046a822abbcb2e5fe
|
|
BLAKE2b-256 checksum How to use checksums |
83c3e9b873ab6f3136e58748e0db29886eeb5e0231ada48d8c1f47efb848a5a5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 7, 2026.
Transparency logRelease files / pyedda-0.1.2-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | pyedda-0.1.2-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 674.7 kB |
| Tags | CPython 3.11 Linux glibc 2.17+ x86-64 Linux glibc 2.5+ x86-64 |
|
SHA-256 checksum How to use checksums |
6bf354936478fe2da1af342f3817ee959c1621204e838f7dacaf457900be12ab
|
|
BLAKE2b-256 checksum How to use checksums |
5906108aa58ee73a653d15895fca28a1e50e65d024285edcbb6fec54a2e2f03c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 7, 2026.
Transparency logRelease files / pyedda-0.1.2-cp311-cp311-macosx_11_0_arm64.whl
| Download URL | pyedda-0.1.2-cp311-cp311-macosx_11_0_arm64.whl |
|---|---|
| Size | 108.3 kB |
| Tags | CPython 3.11 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
d6d70e13ae13abbe141468d640924c5910177467de1a7e865542a5e746ebf2ab
|
|
BLAKE2b-256 checksum How to use checksums |
612b5fbc6511a319f075c8cb74aed5c93fd10536b16c266f7ce0a78eac248a34
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 7, 2026.
Transparency logRelease files / pyedda-0.1.2-cp310-cp310-win_amd64.whl
| Download URL | pyedda-0.1.2-cp310-cp310-win_amd64.whl |
|---|---|
| Size | 182.4 kB |
| Tags | CPython 3.10 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
e40672605fd68b23ebce4a13e29464357e26363165874daa80f96fa5fd6824e6
|
|
BLAKE2b-256 checksum How to use checksums |
fc1a2e3558119b0b832a36587fb3c6728c8d5cdc1f4f5e1781977d0bd0be7b9b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 7, 2026.
Transparency logRelease files / pyedda-0.1.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | pyedda-0.1.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 674.7 kB |
| Tags | CPython 3.10 Linux glibc 2.17+ x86-64 Linux glibc 2.5+ x86-64 |
|
SHA-256 checksum How to use checksums |
c13ff4bfe6806c3110b402f65857c497ff604e7df93f7a6ec6e945bc2434019c
|
|
BLAKE2b-256 checksum How to use checksums |
b26cf87d6bfa8d822fe2c25ff1a8780aee18631320326478511bb2a224a1bb30
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 7, 2026.
Transparency logRelease files / pyedda-0.1.2-cp310-cp310-macosx_11_0_arm64.whl
| Download URL | pyedda-0.1.2-cp310-cp310-macosx_11_0_arm64.whl |
|---|---|
| Size | 108.3 kB |
| Tags | CPython 3.10 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
fca251d0a3473228c65b0afb9e7829aca2cfe335e1159774541145638583453c
|
|
BLAKE2b-256 checksum How to use checksums |
85b4fc2123d530da7085acb8482ddd1313dd77997b2e3d8967fbd754df2b6b90
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 7, 2026.
Transparency log