Pathway
Pathway 是一個開放資料處理框架。 它讓您可以輕鬆開發資料轉換管線和機器學習應用程式,這些程式可以處理即時資料來源和變更中的資料。
這個筆記本示範如何將即時的 Pathway
資料索引管線與 Langchain
搭配使用。 您可以像查詢一般向量儲存一樣,從您的鏈中查詢此管線的結果。 然而,在底層,Pathway 會在每次資料變更時更新索引,讓您始終獲得最新的答案。
在本筆記本中,我們將使用一個公開的示範文件處理管線,其功能為:
- 監控多個雲端資料來源的資料變更。
- 為資料建立向量索引。
若要擁有您自己的文件處理管線,請查看託管方案或建立您自己的管線。
我們將使用 VectorStore
客戶端連接到索引,該客戶端實現了 similarity_search
函數來檢索匹配的文件。
本文档中使用的基本管线允许毫不费力地构建存储在云位置的文件的简单向量索引。 然而,Pathway 提供了构建实时数据管道和应用程序所需的一切,包括类 SQL 的表操作,如分组缩减和不同数据源之间的连接、基于时间的编组和数据窗口,以及各种连接器。
您需要使用 pip install -qU langchain-community
安裝 langchain-community
才能使用此整合
查詢資料管線
若要實例化和配置客戶端,您需要提供文件索引管線的 url
或 host
和 port
。 在下面的程式碼中,我們使用一個公開可用的 示範管線,您可以透過 https://demo-document-indexing.pathway.stream
存取其 REST API。 此示範從 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
剖析器。 您可以在 此處找到可用的剖析器。