wmilvus
wmilvus is an enterprise-grade, type-safe Milvus Vector Database client wrapper for Python designed with high-level Pydantic ORM model mapping, vector search, multi-collection routing, async support, and audit trail features.
Key Features
- Pydantic Model Declarations — Define collections as standard Pydantic models with vector annotations (
FieldVector,MetricType,IndexType). - Vector Similarity & Range Search — KNN similarity search (
search_similar), similarity distance scores (search_similar_with_scores), and similarity range threshold search (search_range). - Universal Primary Key Support — Full compatibility with both
INT64(auto-increment) andVARCHARprimary keys inget_all(),get_by_field(), and audit queries. - Bulk Vector Ingestion — High-performance chunked bulk insertion (
insert_batch) with configurable payload size limits. - Async Client Support (
AsyncWMilvus) — Non-blocking async client withasync withcontext manager for FastAPI and asyncio applications. - Schema Verification (
verify_schema) — Verification of Pydantic model vector dimensions against active Milvus collection schemas. - Hybrid Search (
search_hybrid) — Multi-modal search combining dense vector embeddings with text/scalar metadata filter expressions. - Single & Multi-Collection ORM Routing — Automatic collection creation and routing by model class (
db[Model]), attribute (db.modelname), or main client auto-routing (db.insert(instance)). - Enterprise Ghost Audit Log (
_forensic_audit_log) — Global audit trail trackingINSERT,UPDATE,SOFT_DELETE, andHARD_DELETEoperations for models inheriting fromForensicModel. - SQLite Vector Backup & Import (
wsqlite) — Native ORM-based backup export (export_to_sqlite) and restoration (import_from_sqlite) powered bywsqlite. - Dockerized Test Runner & Coverage — Out-of-the-box support for isolated container testing (
run_tests_docker.sh) and HTML coverage reports (run_coverage.sh).
Technical Stack
| Component | Technology |
|---|---|
| Language | Python 3.9+ |
| Vector Engine | Milvus 2.3+ |
| SDK Core | pymilvus 2.3+ |
| Backup Storage | wsqlite 1.5+ |
| Data Validation | Pydantic 2.x |
| Numerical Core | NumPy |
| Logging | Loguru |
| CLI Framework | Click |
| Testing Framework | pytest, pytest-cov |
Quick Start
from typing import List
from pydantic import BaseModel
from wmilvus import FieldVector, MetricType, WMilvus
class UserFace(BaseModel):
id: str
name: str
face_embedding: List[float] = FieldVector(dim=128, metric_type=MetricType.COSINE)
# Context Manager Usage
with WMilvus(UserFace, uri="http://localhost:19530") as db:
# 1. Insert Pydantic record
user = UserFace(id="u_001", name="William Rodriguez", face_embedding=[0.1] * 128)
db.insert(user)
# 2. Vector Similarity Search returning typed Pydantic instances
matches = db.search_similar(vector=[0.1] * 128, top_k=5)
print(f"Top match: {matches[0].name}")
# 3. Vector Search with Similarity Scores
matches_with_scores = db.search_similar_with_scores(vector=[0.1] * 128, top_k=5)
print(f"Score: {matches_with_scores[0].distance:.4f}")
Async Quick Start
import asyncio
from wmilvus import AsyncWMilvus, FieldVector, MetricType
from pydantic import BaseModel
class Telemetry(BaseModel):
id: str
vector: List[float] = FieldVector(dim=4, metric_type=MetricType.COSINE)
async def main():
async with AsyncWMilvus(Telemetry, uri="http://localhost:19530") as db:
await db.insert(Telemetry(id="t1", vector=[0.5, 0.5, 0.0, 0.0]))
results = await db.search_similar(vector=[0.5, 0.5, 0.1, 0.0], top_k=1)
print(results[0].id)
asyncio.run(main())
Organized Examples
The repository includes organized example scripts in examples/:
examples/01_crud/example.py— Single-collection CRUD operations.examples/02_vector_search/example.py— Vector similarity KNN search, distance scores, and scalar metadata filtering.examples/03_range_search/example.py— Similarity range threshold search (radius filtering).examples/04_batch_ingestion/example.py— Bulk vector ingestion with automatic payload chunking (insert_batch).examples/05_async_client/example.py— Async non-blocking client (AsyncWMilvus) for asyncio/FastAPI.examples/06_schema_verification/example.py— Milvus collection schema verification (verify_schema).examples/07_hybrid_search/example.py— Hybrid similarity search (search_hybrid).examples/08_sqlite_backup/example.py— SQLite vector backup export and import powered bywsqlite.examples/16_forensic_fields/example.py— Forensic field tracking (create_by,create_in,update_by).examples/17_multi_table/example.py— Multi-collection management & repository routing.examples/18_ghost_table_audit/example.py— Enterprise global audit trail (_forensic_audit_log).
Running Tests
Execute unit tests inside an isolated Docker container:
./run_tests_docker.sh
Calculate code coverage locally:
./run_coverage.sh
Metadata
Release files for wmilvus 0.3.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 | |
|---|---|---|---|
| wmilvus-0.3.2.tar.gz | 38.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| wmilvus-0.3.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 55.6 kB
Release files / wmilvus-0.3.2.tar.gz
| Download URL | wmilvus-0.3.2.tar.gz |
|---|---|
| Size | 38.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
df82f8f28843716fd6d6038e058eead4883cd8db32e1539dd0f0b69495d268cb
|
|
BLAKE2b-256 checksum How to use checksums |
500dc03a83ce38ea9dbf7d85f79a43b34cff2e2e4da12a359f7d21a2b9446bbe
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.5
|
Release files / wmilvus-0.3.2-py3-none-any.whl
| Download URL | wmilvus-0.3.2-py3-none-any.whl |
|---|---|
| Size | 17.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
3ef7607548cd92c7739ca35432d18b5c371d48cc828d814fd84088e0af6ce6ae
|
|
BLAKE2b-256 checksum How to use checksums |
bc819207eeeb21c01426b62a00640ff070be61bd3103c3fc5c45b65be07aa5ab
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.5
|