* 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)