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

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.1
File Size Uploaded
wmilvus-0.3.1.tar.gz 625.9 kB Details

Built distribution (wheel)

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

Total release size: 642.8 kB

Release files / wmilvus-0.3.1.tar.gz

Download URL wmilvus-0.3.1.tar.gz
Size 625.9 kB
Tags Source
SHA-256 checksum
How to use checksums
e84fc8468916ae7ebcead2b9870e668d718f768b6a0db2d25d648904ee2151e1
BLAKE2b-256 checksum
How to use checksums
dcbd35f42b7a92fb31a5131666b14b25e8426a1bebd733b1290f60ef66a08a74
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.1-py3-none-any.whl

Download URL wmilvus-0.3.1-py3-none-any.whl
Size 16.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
5c1b50cfcd7f894359686b101d0200c2f1e07df8d20b9aa1add54a71f251fd0c
BLAKE2b-256 checksum
How to use checksums
c27e83bc8c35bd658ac0a60877cb4d72a474d49559a368a2f8c459ea8ed39a88
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

This release

0.3.1 This release

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