# 深入探索Milvus:AI时代的向量数据库利器
## 引言
在这个数据驱动的时代,如何高效地存储和检索大量的嵌入向量成为了一个重要的挑战。Milvus作为一款专门用于管理这些向量的数据库,正日益受到关注。本篇文章将带你深入了解Milvus的功能和使用方法,提供实用的代码示例,并讨论常见问题及解决方案。
## 主要内容
### Milvus的安装与设置
要开始使用Milvus,你需要安装`langchain-milvus`库:
```bash
pip install -qU langchain-milvus
最新版本的pymilvus包含了一个本地的向量数据库Milvus Lite,适合原型设计。但如果你需要处理超过百万数据的规模,建议在Docker或Kubernetes上设置更高性能的Milvus服务器。
向量嵌入的初始化
Milvus支持多种嵌入实现。以下是一些常用的初始化方式:
# OpenAI Embeddings
pip install -qU langchain-openai
from langchain_openai import OpenAIEmbeddings
embeddings = OpenAIEmbeddings(model="text-embedding-3-large")
# HuggingFace Embeddings
pip install -qU langchain-huggingface
from langchain_huggingface import HuggingFaceEmbeddings
embeddings = HuggingFaceEmbeddings(model="sentence-transformers/all-mpnet-base-v2")
# Fake Embeddings for testing
pip install -qU langchain-core
from langchain_core.embeddings import FakeEmbeddings
embeddings = FakeEmbeddings(size=4096)
创建和管理Milvus向量存储
使用Milvus可以轻松地创建和管理向量存储:
from langchain_milvus import Milvus
# 使用Milvus Lite进行本地存储
URI = "./milvus_example.db"
vector_store = Milvus(
embedding_function=embeddings,
connection_args={"uri": URI},
)
# 使用API代理服务提高访问稳定性
向量存储的增删查操作
添加文档
from langchain_core.documents import Document
from uuid import uuid4
documents = [
Document(page_content="Sample text for embedding storage.", metadata={"source": "example"}),
# 更多文档...
]
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(
"Sample query for similarity search",
k=2,
filter={"source": "example"},
)
for res in results:
print(f"* {res.page_content} [{res.metadata}]")
多用户检索
在多用户场景下,应使用partition_key来实现多租户支持:
docs = [
Document(page_content="User specific data", metadata={"namespace": "user1"}),
Document(page_content="Another user's data", metadata={"namespace": "user2"}),
]
vectorstore = Milvus.from_documents(
docs,
embeddings,
connection_args={"uri": URI},
partition_key_field="namespace",
)
常见问题和解决方案
- 网络访问问题: 由于某些地区的网络限制,开发者可能需要使用API代理服务以提高访问稳定性。
- 多租户支持: Milvus目前在Lite版本中不支持
partition_key,若需要此功能,请在Docker或Kubernetes上部署Milvus服务器。
总结和进一步学习资源
Milvus作为一款高效的向量数据库,适合存储和管理机器学习模型生成的嵌入向量。对于进一步的学习,推荐参考以下资源:
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---