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.2.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.2.0
File Size Uploaded
wmilvus-0.2.0.tar.gz 602.8 kB Details

Built distribution (wheel)

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

Total release size: 618.1 kB

Release files / wmilvus-0.2.0.tar.gz

Download URL wmilvus-0.2.0.tar.gz
Size 602.8 kB
Tags Source
SHA-256 checksum
How to use checksums
97e5e1e575e45caf71e5399b124014069c239ab514d23eb9df39bce985da2f03
BLAKE2b-256 checksum
How to use checksums
beade653a9897d5838e0025633f292aa6e578f635529fc5e80ab74f0ad995ae7
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.2.0-py3-none-any.whl

Download URL wmilvus-0.2.0-py3-none-any.whl
Size 15.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
2d7956a0fd289b3dfd4ed9b71cc308184258f0e54b25063164d8a609605889cf
BLAKE2b-256 checksum
How to use checksums
2f156ee6a4d8076ff440cdbfa15bac91da36cbf634547eecd023349e1dbf75ea
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

0.3.0

2 release files

This release

0.2.0 This release

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