* feat(examples): add custom HTTP embedding example for LM Studio / Ollama
* feat(extension): promote HTTPDenseEmbedding to first-class extension
Move the HTTP embedding implementation from the example script into
python/zvec/extension/ as HTTPDenseEmbedding, inheriting from
DenseEmbeddingFunction. The example now imports from zvec.extension
instead of defining the class inline.
Signed-off-by: Maxime <maxime@cluster2600.com>
Signed-off-by: Maxime Grenu <maxime.grenu@gmail.com>
* fix(examples): resolve ruff lint errors in HTTP embedding example
Move zvec imports to top-level, add noqa for print statements,
replace os.path.exists with pathlib, fix import sorting.
Signed-off-by: Maxime <maxime@cluster2600.com>
Signed-off-by: Maxime Grenu <maxime.grenu@gmail.com>
* style: apply ruff formatter
Signed-off-by: Maxime <maxime@cluster2600.com>
Signed-off-by: Maxime Grenu <maxime.grenu@gmail.com>
* ci: retrigger CI (flaky macOS C++ test)
The vector_column_indexer_test failure is a known flaky assertion in
hnsw_streamer_entity.h, unrelated to Python-only changes in this PR.
Signed-off-by: Maxime <maxime@cluster2600.com>
Signed-off-by: Maxime Grenu <maxime.grenu@gmail.com>
* chore: remove custom HTTP embedding example
Per maintainer feedback, examples requiring an external LLM server
belong in the zvec-web project rather than in this repository.
Signed-off-by: Maxime Grenu <maxime.grenu@gmail.com>
---------
Signed-off-by: Maxime <maxime@cluster2600.com>
Signed-off-by: Maxime Grenu <maxime.grenu@gmail.com>
* feat: add Python 3.13 and 3.14 support
- Add Python 3.13 and 3.14 classifiers to pyproject.toml
- Add cp313 and cp314 cibuildwheel build targets
- Add Python 3.13 and 3.14 to CI test matrix
- Enable allow-prereleases for setup-python (required for 3.14 alpha)
Signed-off-by: Maxime Grenu <maxime.grenu@gmail.com>
* ci: retrigger (flaky Int4SquaredEuclideanMetric tolerance on linux-x64)
Signed-off-by: Maxime Grenu <maxime.grenu@gmail.com>
* fix: widen Int4 distance matrix test tolerance from 1e-4 to 5e-4
Int4 quantization uses only 16 levels per dimension (vs 256 for Int8),
resulting in larger rounding errors in distance computations. The
previous 1e-4 absolute tolerance was too tight and caused flaky
failures (observed diff: 1.22e-4 on values ~523.77). The Int8 test
already has this EXPECT_NEAR commented out, relying solely on the
relative IsAlmostEqual check.
Signed-off-by: Maxime Grenu <maxime.grenu@gmail.com>
* fix: remove allow-prereleases flag for Python 3.14
Python 3.14 is now a stable release (v3.14.3, released Oct 2025),
so allow-prereleases: true is no longer needed in setup-python.
Signed-off-by: Maxime Kawawa-Beaudan <maxkb@meta.com>
Signed-off-by: Maxime Grenu <maxime.grenu@gmail.com>
---------
Signed-off-by: Maxime Grenu <maxime.grenu@gmail.com>
Signed-off-by: Maxime Kawawa-Beaudan <maxkb@meta.com>
Reduces key lookup in get_id() from O(log N) to O(1) average, and index
load time from O(N log N) to O(N). Also lowers per-entry memory usage by
eliminating the three tree-node pointers (parent/left/right).
Co-authored-by: ZeFeng Yin <yinzefeng.yzf@alibaba-inc.com>
CMake 3.31+ has removed support for the OLD behavior of policies
CMP0042, CMP0045, CMP0054, and CMP0059. This causes a hard
configuration error when building from source with newer CMake versions.
Changing these to NEW resolves the build failure. The NEW behavior has
been the default since CMake 3.0/3.3 and does not affect functionality.
Fixes#144
* feat: linux ci with github runner
* fix: add CFLAGS with -march=native
* fix: fix linux x86 ci
* fix: with zen3 in x86 ci
* feat: nightly report with github-runner
* feat: refactor ci workflow
* feat: rename workflow
* feat: rename job
* feat: update ci badge
* feat: remove python coverage
- README.md: remove spurious space in align=" center" → align="center"
(logo was not centered on GitHub due to invalid HTML attribute value)
- CONTRIBUTING.md: correct Python prerequisite from '>= 3.9' to '3.10 - 3.12'
to match pyproject.toml classifiers and CI matrix (cp310, cp312)
The underly core module only support a fixed-size segment due to the index file format where the section of segments meta limit the max num of data segments. This commit makes the meta section dynamically allocated and organized in a link-table manner to support much more segments.
* revert local_builder's meta cap setting
* feat: auto scalable segment meta section of mmap files
* Revert "feat: auto scalable segment meta section of mmap files"
This reverts commit 82c11e451544b912b901be33fae79e964a487b1f.
* v2: don't change to absolute offset