Project releases
RuVector reaches Python: local vector search, a CLI and clearer validation
RuVector 0.1.1 brings Python arrays to a local search collection, with explicit value and ID validation and optional MCP tools.
GitHub activity: · Published:
From arrays to ranked results
Validate the arrays first; search and persistence are separate, explicit steps.
Explanatory diagram · not live telemetryNumPy vectors
Existing float32 arrays
Validate values + IDs
Reject NaN, infinity and duplicates
Rust search index
Validated vectors enter search
Malformed input
Stops at the validation gate
Ranked results
Data and settings determine quality
Explicit save / reload
Collection persistence, not embeddings
What changed
RuVector now has a published Python SDK, command-line tools and an optional MCP server. Python and NumPy connect to the Rust search core; collections keep vector IDs and metadata together and can be saved locally. You can start with existing embedding arrays without putting a separate database service between your application and its vectors.
PyPI 0.1.0 arrived late on October 9; 0.1.1 followed early on October 10. The patch rejects non-finite vector values and duplicate IDs at the native index boundary, clarifies dtype errors and returns validation failures to MCP clients. It also removes an overbroad recall guarantee. This is an alpha package: published wheels establish availability, not search quality on your data.
Get started
Use an isolated Python >=3.9 environment and existing float32 vectors. The empty collection commands should produce a local file and collection information.
Documentation-verified only. We did not install this release, execute these commands or reproduce the maintainers’ tests.
pip install ruvector==0.1.1
ruvector --help
ruvector create --path example.rbpx --dim 128
ruvector info --path example.rbpx
pip install 'ruvector[mcp]==0.1.1'
ruvector serve --read-only
MCP is optional. The pinned README documents stdio via ruvector serve; no public endpoint or npx skills setup is required for this path.
Use it today
Use the pinned Collection.from_vectors / search / save / load example with your existing float32 embeddings. After reload, compare IDs and metadata with the saved collection. Inserting text does not generate meaningful embeddings for you.
Experimental commentary — acceptance test
For your own held-out vectors, compare approximate search with exact nearest neighbours and report recall and latency together. Acceptance: the application’s stated recall target holds after save/reload; invalid values and duplicate IDs fail clearly. The built-in benchmark has no external comparator and does not yet print recall@k.
Limits and verification
- Python >=3.9. Five wheels cover macOS x86_64/arm64, Linux manylinux_2_28 x86_64/aarch64 and Windows amd64, plus a source archive; none was installed here.
- Metadata filtering in the documented Collection path is client-side. No universal recall or speed claim is supported.
- Off-loopback HTTP requires a non-empty bearer token. The read-only flag hides create/insert/delete tools; it does not rule out every local side effect.
Read the original on PyPI ruvector 0.1.1