Skip to main content
Pathway 是一个开放的数据处理框架。它让你能够轻松开发处理实时数据源和变化数据的数据转换管道及机器学习应用。
本笔记本演示如何在 LangChain 中使用实时 Pathway 数据索引管道。你可以像查询普通向量存储一样从链中查询该管道的结果。然而,在底层,Pathway 会在每次数据变更时更新索引,从而始终为你提供最新的答案。 在本笔记本中,我们将使用一个公开演示文档处理管道,它可以:
  1. 监控多个云数据源的数据变更。
  2. 为数据构建向量索引。
如需创建自己的文档处理管道,请查看托管服务自行构建 我们将使用 VectorStore 客户端连接到索引,该客户端实现了 similarity_search 函数以检索匹配文档。 本文档中使用的基础管道可轻松为存储在云端的文件构建简单的向量索引。然而,Pathway 提供了构建实时数据管道和应用所需的一切,包括类 SQL 的表操作(如 groupby 聚合和不同数据源之间的 join)、基于时间的数据分组和窗口化,以及丰富的连接器。 使用此集成需要安装 langchain-communitypip install -qU langchain-community

查询数据管道

要实例化和配置客户端,你需要提供文档索引管道的 url,或者 hostport。在下面的代码中,我们使用一个公开可用的演示管道,其 REST API 可通过 https://demo-document-indexing.pathway.stream 访问。该演示从 Google DriveSharepoint 采集文档,并维护用于检索文档的索引。
from langchain_community.vectorstores import PathwayVectorClient

client = PathwayVectorClient(url="https://demo-document-indexing.pathway.stream")
现在可以开始发起查询了
query = "What is Pathway?"
docs = client.similarity_search(query)
print(docs[0].page_content)
轮到你了! 获取你的管道或向演示管道上传新文档,然后重试查询!

基于文件元数据的过滤

我们支持使用 jmespath 表达式进行文档过滤,例如:
# take into account only sources modified later than unix timestamp
docs = client.similarity_search(query, metadata_filter="modified_at >= `1702672093`")

# take into account only sources modified later than unix timestamp
docs = client.similarity_search(query, metadata_filter="owner == `james`")

# take into account only sources with path containing 'repo_readme'
docs = client.similarity_search(query, metadata_filter="contains(path, 'repo_readme')")

# and of two conditions
docs = client.similarity_search(
    query, metadata_filter="owner == `james` && modified_at >= `1702672093`"
)

# or of two conditions
docs = client.similarity_search(
    query, metadata_filter="owner == `james` || modified_at >= `1702672093`"
)

获取已索引文件的信息

PathwayVectorClient.get_vectorstore_statistics() 提供向量存储状态的核心统计数据,例如已索引文件的数量以及最后更新的时间戳。你可以在链中使用它来告知用户知识库的更新程度。
client.get_vectorstore_statistics()

自定义管道

在生产环境中运行

如需创建自己的 Pathway 数据索引管道,请查看 Pathway 提供的托管管道。你也可以运行自己的 Pathway 管道——有关如何构建管道的信息,请参阅 Pathway 指南

文档处理

向量化管道支持可插拔的文档解析、分割和嵌入组件。对于嵌入和分割,你可以使用 LangChain 组件,或查看 Pathway 中可用的嵌入器分割器。如果未提供解析器,默认使用 UTF-8 解析器。可用的解析器列表请参阅此处