Milvus Lite是Milvus的轻量级版本,Milvus是一个开源的向量数据库,支持通过向量嵌入和相似性搜索来服务AI应用程序。本文将介绍如何使用Milvus Lite在本地运行Milvus。
一、概述
Milvus Lite 可以被导入到 Python 应用程序中,提供 Milvus 的核心向量搜索功能。它已经包含在 Milvus 的 Python SDK 中,只需通过以下命令进行安装:
pip install pymilvus
使用Milvus Lite可以在几分钟内开始构建具有向量相似性搜索功能的 AI 应用程序!Milvus Lite 适合在以下环境中运行:
- Jupyter 笔记本/Google Colab
- 笔记本电脑
- 边缘设备
Milvus Lite 与 Milvus Standalone 和 Distributed 共享相同的 API,涵盖了向量数据的持久化和管理、向量 CRUD 操作、稀疏和密集向量搜索、元数据过滤、多向量和混合搜索等大部分功能。这些不同的环境在使用上提供了一致的体验,可以使用相同的客户端代码在不同平台上运行 Milvus,从而满足不同规模的使用案例。
二、环境
Milvus Lite 目前支持以下环境:
- Ubuntu >= 20.04(x86_64 和 arm64)
- MacOS >= 11.0(适用于 Apple Silicon M1/M2 和 x86_64)
请注意,Milvus Lite 适合小规模的向量搜索用例。对于更大规模的使用场景,建议使用 Milvus Standalone 或 Milvus Distributed。也可以考虑使用 Zilliz Cloud 上的完全托管 Milvus。
三、设置Milvus Lite
安装 Milvus Lite 的命令如下:
pip install -U pymilvus
建议安装 2.4.2 或更高版本,因为该版本包含了 Milvus Lite。
四、连接到Milvus Lite
在使用时,需要指定一个本地文件名,因为 “MilvusClient” 的 “uri” 参数将会使用这个文件名,如下所示:
from pymilvus import MilvusClient client = MilvusClient("./milvus_demo.db")
运行上述代码后,当前文件夹中将生成一个名为 “milvus_demo.db” 的数据库文件。
注意:这同样的 API 也适用于 Milvus Standalone、Milvus Distributed 和 Zilliz Cloud,唯一的区别是在连接时将本地文件名替换为远程服务器的端点和凭据,例如:
client = MilvusClient(uri="http://localhost:19530", token="username:password")
五、示例
下面是一个简单的示例,展示如何使用 Milvus Lite 进行文本搜索。要获得更全面的示例,可以参考 Milvus Lite 在 RAG、图像搜索及与 LangChain 和 LlamaIndex 等流行 RAG 框架中的应用。
from pymilvus import MilvusClient import numpy as np client = MilvusClient("./milvus_demo.db") client.create_collection( collection_name="demo_collection", dimension=384 # 本示例中的向量有 384 个维度 ) # 要搜索的文本字符串 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.", ] # 为了演示,使用随机生成的假向量(384 维度) 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 ) # 该搜索将排除任何主题为 "history" 的文本,尽管其靠近查询向量 res = client.search( collection_name="demo_collection", data=[vectors[0]], filter="subject == 'history'", limit=2, output_fields=["text", "subject"], ) print(res) # 查询所有匹配过滤条件的实体 res = client.query( collection_name="demo_collection", filter="subject == 'history'", output_fields=["text", "subject"], ) print(res) # 删除操作 res = client.delete( collection_name="demo_collection", filter="subject == 'history'", ) print(res)
通过上述代码示例,可以快速入门使用 Milvus Lite,开展文本搜索任务。