Pathway
Pathway 是一個開放資料處理框架。它讓您可以輕鬆開發資料轉換管線和機器學習應用程式,以處理即時資料來源和變更中的資料。
本筆記本示範如何將即時 Pathway
資料索引管線與 Langchain
搭配使用。您可以從鏈中查詢此管線的結果,方式與查詢一般向量儲存庫相同。然而,在底層,Pathway 會在每次資料變更時更新索引,讓您始終獲得最新的答案。
在本筆記本中,我們將使用公開展示的文件處理管線,該管線會
- 監控多個雲端資料來源的資料變更。
- 為資料建立向量索引。
若要擁有您自己的文件處理管線,請查看託管服務或建立您自己的管線。
我們將使用 VectorStore
用戶端連線到索引,該用戶端實作 similarity_search
函數以檢索相符的文件。
本文檔中使用的基本管線可讓您輕鬆建立儲存在雲端位置的檔案的簡單向量索引。然而,Pathway 提供了建置即時資料管線和應用程式所需的一切,包括類似 SQL 的可執行作業,例如不同資料來源之間的 groupby 縮減和聯結、基於時間的資料分組和視窗化,以及各種連接器。
您需要使用 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
剖析器。您可以在此處找到可用的剖析器。