在现代的机器学习和自然语言处理应用中,向量数据库已经成为一个重要的组成部分。Milvus 是一个开源的向量数据库,专门用于高效的向量存储和检索。本文将介绍如何使用 Milvus 进行向量存储和检索,并提供一个简单的示例代码来展示基本操作。
Milvus Vector Store 概述
Milvus Vector Store 是一个用于存储文本的嵌入向量及其元数据的 Milvus 集合。它允许使用现有的集合,也支持在集合不存在时创建新集合。
主要参数
uri
:连接 URI,例如 “http://localhost:19530”。token
:用于登录的 token,如果不使用 RBAC,则为空。collection_name
:数据存储的集合名称,默认为 “llamacollection”。dim
:嵌入向量的维度,创建新集合时必需。embedding_field
:集合中嵌入字段的名称,默认为DEFAULT_EMBEDDING_KEY
。doc_id_field
:集合中文档 ID 字段的名称,默认为DEFAULT_DOC_ID_KEY
。similarity_metric
:相似度度量,目前支持 IP 和 L2。overwrite
:是否覆盖现有集合,默认为False
。
示例代码
以下是一个简单的示例,演示了如何使用 MilvusVectorStore 进行向量存储和检索:
# 安装依赖库
# pip install llama-index-vector-stores-milvus
from llama_index.vector_stores.milvus import MilvusVectorStore
# 设置 MilvusVectorStore
vector_store = MilvusVectorStore(
dim=1536,
collection_name="your_collection_name",
uri="http://milvus_address:port", # 中转API
token="your_milvus_token_here",
overwrite=True
)
# 添加数据
nodes_to_add = [
{"embedding": [0.1, 0.2, 0.3, ...], "text": "Example text 1"},
{"embedding": [0.4, 0.5, 0.6, ...], "text": "Example text 2"},
# 添加更多节点
]
# 添加到 Milvus
ids = vector_store.add(nodes_to_add)
print("Added IDs:", ids)
# 查询数据
query_embedding = [0.15, 0.25, 0.35, ...]
results = vector_store.query(
query_embedding=query_embedding,
similarity_top_k=5,
doc_ids=None,
node_ids=None,
output_fields=["text"],
embedding_field="embedding"
)
print("Query Results:", results)
常见问题及错误处理
-
ImportError: 如果遇到
ImportError
,请确认是否安装了pymilvus
库。可以通过pip install pymilvus
安装该库。 -
MilvusException: 如果遇到
MilvusException
,通常是由于与 Milvus 的通信问题。请检查 Milvus 服务是否正常运行,并确保uri
和token
配置正确。 -
维度不匹配: 在创建新集合时,确保
dim
参数与实际嵌入向量的维度一致,否则可能会导致存储或查询失败。
如果你觉得这篇文章对你有帮助,请点赞,关注我的博客,谢谢!