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). - 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. - 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+ |
| 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/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.0
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.0.tar.gz | 628.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| wmilvus-0.3.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 645.8 kB
Release files / wmilvus-0.3.0.tar.gz
| Download URL | wmilvus-0.3.0.tar.gz |
|---|---|
| Size | 628.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
3ab537ef9319d73fcf8a1b9a49554171ec8fed61fefd9b1f333b77e4300c82b6
|
|
BLAKE2b-256 checksum How to use checksums |
08833051b194cd496ac7cba8f3b49493e70037282e4ffe16efbde6fb18431a7d
|
| 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.0-py3-none-any.whl
| Download URL | wmilvus-0.3.0-py3-none-any.whl |
|---|---|
| Size | 16.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
4d2f11f0ae9aa75ed9a778351c667c57be858adca209db38e0f79bd1e1d9f5d8
|
|
BLAKE2b-256 checksum How to use checksums |
7eacf397d8b1536bdbdfa9d4b598259724673da79d80d7d3222796222f6c8873
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.5
|