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).
  • 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 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.
  • 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 tracking INSERT, UPDATE, SOFT_DELETE, and HARD_DELETE operations for models inheriting from ForensicModel.
  • 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/:

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)

Source distribution for wmilvus 0.3.0
File Size Uploaded
wmilvus-0.3.0.tar.gz 628.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for wmilvus 0.3.0
File Interpreter ABI Platform
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

Release history Release notifications | RSS feed

0.4.0

2 release files

0.3.2

2 release files

0.3.1

2 release files

This release

0.3.0 This release

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