跳至主要内容

路径

Pathway 是一个开放的数据处理框架。它允许您轻松开发与实时数据源和变化数据一起工作的数据转换管道和机器学习应用程序。

此笔记本演示了如何将实时Pathway数据索引管道与Langchain一起使用。您可以以与常规向量存储相同的方式从链中查询此管道的结果。但是,在幕后,Pathway 在每次数据更改时都会更新索引,从而为您提供始终最新的答案。

在此笔记本中,我们将使用公共演示文档处理管道,该管道

  1. 监视多个云数据源以查找数据更改。
  2. 为数据构建向量索引。

要拥有自己的文档处理管道,请查看托管产品构建自己的管道

我们将使用VectorStore客户端连接到索引,该客户端实现similarity_search函数以检索匹配的文档。

本文中使用的基本管道允许轻松构建存储在云位置中的文件的简单向量索引。但是,Pathway 提供了构建实时数据管道和应用程序所需的一切,包括类似 SQL 的操作(例如不同数据源之间的 groupby-reductions 和连接、基于时间的数据分组和窗口化以及各种连接器)。

您需要使用pip install -qU langchain-community安装langchain-community才能使用此集成

查询数据管道

要实例化和配置客户端,您需要提供文档索引管道的urlhostport。在下面的代码中,我们使用公开可用的演示管道,您可以通过https://demo-document-indexing.pathway.stream访问其 REST API。此演示从Google DriveSharepoint提取文档,并维护一个用于检索文档的索引。

from langchain_community.vectorstores import PathwayVectorClient

client = PathwayVectorClient(url="https://demo-document-indexing.pathway.stream")
API 参考:PathwayVectorClient

我们可以开始提出查询了

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解析器。您可以在此处找到可用的解析器。


此页面是否有帮助?


您也可以留下详细的反馈 在 GitHub 上.