路
Pathway 是一个开放的数据处理框架。它允许您轻松开发数据转换管道和机器学习应用程序,以处理实时数据源和不断变化的数据。
此笔记本演示了如何使用实时Pathway数据索引管道Langchain.您可以像查询常规向量存储一样从链中查询此管道的结果。但是,在后台,Pathway 会在每次数据更改时更新索引,从而始终为您提供最新的答案。
在此笔记本中,我们将使用一个公共演示文档处理管道,该管道:
- 监控多个云数据源的数据更改。
- 为数据构建向量索引。
要拥有您自己的文档处理管道,请检查托管产品或构建您自己的产品。
我们将使用VectorStoreclient,它实现了similarity_search函数检索匹配的文档。
本文档中使用的基本管道允许轻松构建存储在云位置的文件的简单矢量索引。但是,Pathway 提供了构建实时数据管道和应用程序所需的一切,包括类似 SQL 的能够作,例如不同数据源之间的分组缩减和联接、基于时间的数据分组和窗口化,以及各种连接器。
您需要安装langchain-community跟pip install -qU langchain-community使用此集成
查询数据管道
要实例化和配置客户端,您需要提供url或host和port的文档索引管道中。在下面的代码中,我们使用一个公开可用的演示管道,您可以在以下位置访问该 REST APIhttps://demo-document-indexing.pathway.stream.此演示从 Google Drive 和 Sharepoint 中提取文档,并维护用于检索文档的索引。
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)
该你了! 获取管道或将新文档上传到 demo 管道,然后重试查询!
基于文件元数据进行筛选
我们支持使用 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 组件或检查 Pathways 中可用的嵌入器和拆分器。如果未提供 parser,则默认为UTF-8解析 器。您可以在此处找到可用的解析器。