[深入探索Milvus:AI时代的向量数据库利器]

191 阅读2分钟
# 深入探索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---