Skip to main content

A lightweight version of Milvus wrapped with Python.

Project description

A lightweight version of Milvus

Introduction

Milvus Lite is the lightweight version of Milvus, a high-performance vector database that powers AI applications with vector similarity search. This repo contains the core components of Milvus Lite.

With Milvus Lite, you can start building an AI application with vector similarity search within minutes! Milvus Lite is good for running in the following environment:

  • Jupyter Notebook / Google Colab
  • Laptops
  • Edge Devices

Milvus Lite can be imported into your Python application, providing the core vector search functionality of Milvus. Milvus Lite is already included in the Python SDK of Milvus. It can be simply deployed with pip install pymilvus.

Milvus Lite shares the same API with Milvus Standalone and Distributed, and covers most of the features such as vector data persistence and management, vector CRUD operations, sparse and dense vector search, metadata filtering, multi-vector and hybrid_search. Together, they provide a consistent experience across different types of environments, from edge devices to clusters in cloud, fitting use cases of different size. With the same client-side code, you can run GenAI apps with Milvus Lite on a laptop or Jupyter Notebook, or Milvus Standalone on Docker container, or Milvus Distributed on massive scale Kubernetes cluster serving billions of vectors in production.

Requirements

Milvus Lite currently supports the following environmnets:

  • Ubuntu >= 20.04 (x86_64 and arm64)
  • MacOS >= 11.0 (Apple Silicon M1/M2 and x86_64)

Please note that Milvus Lite is only suitable for small scale vector search use cases. For a large scale use case, we recommend using Milvus Standalone or Milvus Distributed. You can also consider the fully-managed Milvus on Zilliz Cloud.

Installation

pip install -U pymilvus

We recommend using pymilvus. Since milvus-lite is included in pymilvus version 2.4.2 or above, you can pip install with -U to force update to the latest version and milvus-lite is automatically installed.

If you want to explicitly install milvus-lite package, or you have installed an older version of milvus-lite and would like to update it, you can do pip install -U milvus-lite.

Usage

In pymilvus, specify a local file name as uri parameter of MilvusClient will use Milvus Lite.

from pymilvus import MilvusClient
client = MilvusClient("./milvus_demo.db")

NOTE: Note that the same API also applies to Milvus Standalone, Milvus Distributed and Zilliz Cloud, the only difference is to replace local file name to remote server endpoint and credentials, e.g. client = MilvusClient(uri="http://localhost:19530", token="username:password").

Examples

Following is a simple demo showing how to use Milvus Lite for text search. There are more comprehensive examples for using Milvus Lite to build applications such as RAG, image search, and using Milvus Lite in popular RAG framework such as LangChain and LlamaIndex!

from pymilvus import MilvusClient
import numpy as np

client = MilvusClient("./milvus_demo.db")
client.create_collection(
    collection_name="demo_collection",
    dimension=384  # The vectors we will use in this demo has 384 dimensions
)

# Text strings to search from.
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.",
]
# For illustration, here we use fake vectors with random numbers (384 dimension).

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)) ]
res = client.insert(
    collection_name="demo_collection",
    data=data
)

# This will exclude any text in "history" subject despite close to the query vector.
res = client.search(
    collection_name="demo_collection",
    data=[vectors[0]],
    filter="subject == 'history'",
    limit=2,
    output_fields=["text", "subject"],
)
print(res)

# a query that retrieves all entities matching filter expressions.
res = client.query(
    collection_name="demo_collection",
    filter="subject == 'history'",
    output_fields=["text", "subject"],
)
print(res)

# delete
res = client.delete(
    collection_name="demo_collection",
    filter="subject == 'history'",
)
print(res)

Supported Features

Known Limitations

Milvus Lite only supports FLAT index type. It uses FLAT type regardless of the specified index type in collection.

Milvus Lite does not support partitions, users/roles/RBAC, alias. To use those features, please choose other Milvus deployment types such as Standalone, Distributed or Zilliz Cloud (fully-managed Milvus).

Migrating data from Milvus Lite

All data stored in Milvus Lite can be easily exported and loaded into other types of Milvus deployment, such as Milvus Standalone on Docker, Milvus Distributed on K8s, or fully-managed Milvus on Zilliz Cloud.

Milvus Lite provides a command line tool that can dump data into a json file, which can be imported into milvus and Zilliz Cloud(the fully managed cloud service for Milvus). The milvus-lite command will be installed together with milvus-lite python package

# Install
pip install -U "pymilvus[bulk_writer]"

milvus-lite dump -h

usage: milvus-lite dump [-h] [-d DB_FILE] [-c COLLECTION] [-p PATH]

optional arguments:
  -h, --help            show this help message and exit
  -d DB_FILE, --db-file DB_FILE
                        milvus lite db file
  -c COLLECTION, --collection COLLECTION
                        collection that need to be dumped
  -p PATH, --path PATH  dump file storage dir

The following example dumps all data from demo_collection collection that's stored in ./milvus_demo.db (Milvus Lite database file)

To export data:

milvus-lite dump -d ./milvus_demo.db -c demo_collection -p ./data_dir
# ./milvus_demo.db: milvus lite db file
# demo_collection: collection that need to be dumped
#./data_dir : dump file storage dir

With the dump file, you can upload data to Zilliz Cloud via Data Import, or upload data to Milvus servers via Bulk Insert.

Contributing

If you want to contribute to Milvus Lite, please read the Contributing Guide first.

Report a bug

For any bug or feature request, please report it by submitting an issue in milvus-lite repo.

License

Milvus Lite is under the Apache 2.0 license. See the LICENSE file for details. p

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

milvus_lite-2.4.10-py3-none-macosx_11_0_arm64.whl (19.9 MB view details)

Uploaded Python 3 macOS 11.0+ ARM64

milvus_lite-2.4.10-py3-none-macosx_10_9_x86_64.whl (22.3 MB view details)

Uploaded Python 3 macOS 10.9+ x86-64

File details

Details for the file milvus_lite-2.4.10-py3-none-manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for milvus_lite-2.4.10-py3-none-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 211d2e334a043f9282bdd9755f76b9b2d93b23bffa7af240919ffce6a8dfe325
MD5 f52c67ef40ea1059d3f8c6502d828fc3
BLAKE2b-256 8465639cb552c892ba5fef73301f878b2e7cabb59c918e0c49c9cf3026d49447

See more details on using hashes here.

File details

Details for the file milvus_lite-2.4.10-py3-none-manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for milvus_lite-2.4.10-py3-none-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 240c7386b747bad696ecb5bd1f58d491e86b9d4b92dccee3315ed7256256eddc
MD5 97a482e270f863ce905af17131fca290
BLAKE2b-256 348e7858d12d89bf9e84302c6ffd5faf776d7b2de4372a07461f726ce6f9929e

See more details on using hashes here.

File details

Details for the file milvus_lite-2.4.10-py3-none-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for milvus_lite-2.4.10-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 74a8e07c5e3b057df17fbb46913388e84df1dc403a200f4e423799a58184c800
MD5 b87e3a87488a0d4c5a8b8a8702010cd7
BLAKE2b-256 17209054ace78c61d64a6c24b8e3d6c8a73b23b447028e43c4d1e6c878e8294a

See more details on using hashes here.

File details

Details for the file milvus_lite-2.4.10-py3-none-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for milvus_lite-2.4.10-py3-none-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 fc4246d3ed7d1910847afce0c9ba18212e93a6e9b8406048436940578dfad5cb
MD5 e251242c8cbdc238ba145046e74bb753
BLAKE2b-256 7c0b262997e63e2eaaf5d9f93d73c9d3e75499c6ec058bd1307864be7efb6704

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page