路径
Pathway is an open data processing framework. It allows you to easily develop data transformation pipelines and Machine Learning applications that work with live data sources and changing data.
此笔记本演示了如何使用带有 Pathway 的实时数据索引管道与 Langchain。您可以像查询常规向量存储一样,从链中查询此管道的结果。然而,在内部,Pathway 在每次数据更改时更新索引,为您提供始终最新的答案。
在这个笔记本中,我们将使用一个 公共演示文档处理管道,它:
- 监控多个云数据源的数据变化。
- 为数据构建向量索引。
我们将使用一个 VectorStore 客户端连接到索引,该客户端实现了 similarity_search 函数来检索匹配的文档。
本文档中使用的基础管道可以轻松构建存储在云位置中的文件的简单向量索引。然而,Pathway 提供了构建实时数据管道和应用程序所需的一切,包括类似 SQL 的操作,例如按组进行归约和不同数据源之间的连接、基于时间的数据分组和窗口处理,以及各种各样的连接器。
您需要使用 pip install -qU langchain-community 安装 langchain-community 才能使用此集成
查询数据管道
要实例化和配置客户端,您需要提供文档索引管道的url或host和port。在下面的代码中,我们使用了一个公开可用的演示管道,其REST API可以通过https://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)
轮到你了! 获取你的管道 或上传 新文档 到演示管道并重试查询!
根据文件元数据进行筛选
我们支持使用 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 解析器。您可以在 此处 找到可用的解析器。