Skip to main content

wmilvus

PyPI version Python versions License

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).
  • Dynamic Vector Fields & Auto-ID — Native payload generation supporting custom vector attribute names (embedding, face_vec, etc.) and automated INT64 primary key generation without requiring manual IDs.
  • Universal Primary Key Support — Full compatibility with both auto-increment integer (INT64) and string (VARCHAR) primary keys across all CRUD, filtering, and search routines.
  • Collection Partitioning & Multi-Tenancy — Route insertions, queries, and searches to specific Milvus partitions (partition_name / partition_names).
  • High-Scale Streaming Iterators (iter_all) — Memory-efficient batch streaming across millions of vectors using native Milvus query iterators.
  • Typed Filter Query Builder (filter_by) — Declarative keyword querying with comparison operators (age__gte=18, status__in=[1, 2], dni='00000000P').
  • Vector Similarity & Range Search — KNN similarity search (search_similar), similarity distance scores (search_similar_with_scores), and similarity range threshold search (search_range) with customizable search index parameters (search_params).
  • Batch & Expression Deletion — Flexible record removal via single ID (delete), batch IDs (delete_batch), or scalar filter expressions (delete_by_expr).
  • Multi-Vector & Hybrid Search Rankers — Dense + scalar hybrid search with direct support for Milvus rerankers (RRFRanker, WeightedRanker).
  • Bulk Vector Ingestion — High-performance chunked bulk insertion (insert_batch) with automatic payload chunking and ID propagation.
  • Async Client Support (AsyncWMilvus) — Full non-blocking async mirror with async with context manager for FastAPI and asyncio applications.
  • Schema Verification (verify_schema) — Verification of Pydantic model vector dimensions against active Milvus collection schemas.
  • 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 tracking INSERT, UPDATE, SOFT_DELETE, and HARD_DELETE operations for models inheriting from ForensicModel.
  • SQLite Vector Backup & Import (wsqlite) — Native ORM-based backup export (export_to_sqlite) and restoration (import_from_sqlite) powered by wsqlite.
  • 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/:

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.4.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for wmilvus 0.4.0
File Size Uploaded
wmilvus-0.4.0.tar.gz 42.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for wmilvus 0.4.0
File Interpreter ABI Platform
wmilvus-0.4.0-py3-none-any.whl Python 3 none any Details

Total release size: 61.9 kB

Release files / wmilvus-0.4.0.tar.gz

Download URL wmilvus-0.4.0.tar.gz
Size 42.3 kB
Tags Source
SHA-256 checksum
How to use checksums
bcbbe9ddce18bb05c54e013a4a542e32f98d7f44d6326b4b8fbba0d9900417e4
BLAKE2b-256 checksum
How to use checksums
f38e2ae3f1ad890ecd9a3af1c44b2fd53f767fa22112dc577311f0b51bfae74f
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.4.0-py3-none-any.whl

Download URL wmilvus-0.4.0-py3-none-any.whl
Size 19.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
98631252b37891db16c8f339779b17ae2f0975a19fdd8e7850ff67c45ae32404
BLAKE2b-256 checksum
How to use checksums
7340a35649c5fbc4b1a3fc15bcd0203f398597e4abb0014ee45ea4320ca5b88e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.5

Release history Release notifications | RSS feed

This release

0.4.0 This release

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page