or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

cli-tools.mdindex.mdmulti-instance.mdpymilvus-integration.mdserver-management.md
tile.json

tessl/pypi-milvus-lite

A lightweight version of Milvus wrapped with Python for vector similarity search in AI applications

Workspace
tessl
Visibility
Public
Created
Last updated
Describes
pypipkg:pypi/milvus-lite@2.5.x

To install, run

npx @tessl/cli install tessl/pypi-milvus-lite@2.5.0

index.mddocs/

Milvus Lite

A lightweight version of Milvus wrapped with Python for AI applications requiring vector similarity search. Milvus Lite provides the core vector search functionality of Milvus in a compact, embedded form suitable for development environments, prototyping, and edge devices.

Package Information

  • Package Name: milvus-lite
  • Language: Python
  • Installation: pip install milvus-lite (or pip install pymilvus which includes milvus-lite)

Core Imports

# Import through pymilvus (recommended approach)
from pymilvus import MilvusClient

# Direct imports (advanced usage)
from milvus_lite.server import Server
from milvus_lite.server_manager import server_manager_instance

# Package version
import milvus_lite
print(milvus_lite.__version__)

Basic Usage

from pymilvus import MilvusClient
import numpy as np

# Create client with local database file (this activates milvus-lite)
client = MilvusClient("./milvus_demo.db")

# Create a collection with vector dimension
client.create_collection(
    collection_name="demo_collection",
    dimension=384  # Vector dimension
)

# Prepare sample data
docs = [
    "Artificial intelligence was founded as an academic discipline in 1956.",
    "Alan Turing was the first person to conduct substantial research in AI.",
    "Born in Maida Vale, London, Turing was raised in southern England.",
]

# Generate vectors (in practice, use actual embedding models)
vectors = [[np.random.uniform(-1, 1) for _ in range(384)] for _ in range(len(docs))]
data = [{"id": i, "vector": vectors[i], "text": docs[i], "subject": "history"} for i in range(len(vectors))]

# Insert data
client.insert(collection_name="demo_collection", data=data)

# Perform vector search
results = client.search(
    collection_name="demo_collection",
    data=[vectors[0]],  # Query vector
    filter="subject == 'history'",
    limit=2,
    output_fields=["text", "subject"]
)
print(results)

# Query with filters
results = client.query(
    collection_name="demo_collection", 
    filter="subject == 'history'",
    output_fields=["text", "subject"]
)
print(results)

Architecture

Milvus Lite is a hybrid Python-C++ implementation that provides embedded vector database functionality:

  • Python Layer: High-level API through pymilvus SDK with automatic milvus-lite activation for local files
  • Server Management: Thread-safe server lifecycle management with file locking and resource cleanup
  • C++ Core: Native milvus binary providing high-performance vector operations
  • Process Communication: Unix Domain Sockets (UDS) for IPC or TCP for remote connections
  • Data Persistence: File-based storage with database files containing vector data and metadata
  • Platform Support: Native binaries for Linux (x86_64/arm64) and macOS (Intel/Apple Silicon)

This architecture enables seamless development workflows where the same API works from local prototyping with milvus-lite to production deployment with Milvus Standalone or Distributed.

Capabilities

Primary Usage via PyMilvus

The recommended way to use milvus-lite through the pymilvus client interface, which automatically activates milvus-lite when using local file URIs. This provides the complete Milvus API surface including collections, vector operations, indexing, and querying.

from pymilvus import MilvusClient

client = MilvusClient(uri="./database.db")  # Activates milvus-lite
# Full Milvus API available through client

PyMilvus Integration

Direct Server Management

Advanced server lifecycle management for custom integrations and process control. Provides direct access to the underlying milvus server process with configuration options for networking, logging, and resource management.

class Server:
    def __init__(self, db_file: str, address: Optional[str] = None): ...
    def init(self) -> bool: ...
    def start(self) -> bool: ...
    def stop(self) -> None: ...
    
    @property
    def uds_path(self) -> str: ...
    @property  
    def args(self) -> List[str]: ...

Server Management

Multi-Instance Management

Thread-safe management of multiple milvus-lite server instances with automatic lifecycle handling and resource cleanup. Useful for applications managing multiple independent databases or multi-tenant scenarios.

class ServerManager:
    def start_and_get_uri(self, path: str, args=None) -> Optional[str]: ...
    def release_server(self, path: str) -> None: ...
    def release_all(self) -> None: ...

server_manager_instance: ServerManager  # Global singleton

Multi-Instance Management

Command Line Tools

Data export and migration utilities for moving data between milvus-lite and other Milvus deployments. Includes collection dumping with support for various vector types and bulk data operations.

milvus-lite dump -d DB_FILE -c COLLECTION -p PATH

Command Line Tools

Types

from typing import Optional, List, Dict, Any, Union

# Package-level exports
__version__: str  # Package version string

# Constants
BIN_PATH: str  # Path to directory containing milvus binary and libraries

# Core types used across the API  
PathType = str  # File system path to database file
AddressType = Optional[str]  # Network address (host:port) or None for UDS
URIType = str  # Connection URI (file path for milvus-lite)

Error Handling

Milvus Lite raises specific exceptions for different error conditions:

  • RuntimeError: Invalid database names, path issues, server startup failures
  • BlockingIOError: Database file locked by another process
  • subprocess.TimeoutExpired: Server process management timeouts
  • FileNotFoundError: Missing binary files or database files

Platform Requirements

  • Linux: Ubuntu >= 20.04 (x86_64, arm64)
  • macOS: >= 11.0 (Intel x86_64, Apple Silicon M1/M2)
  • Windows: Not supported

Database Constraints

  • Database filename must match regex: ^[a-zA-Z0-9.\-_]+$
  • Maximum filename length: 36 characters
  • Suitable for datasets up to ~1 million vectors
  • File locking prevents concurrent access from multiple processes