AI News HubLIVE
站內改寫3 分鐘閱讀

HippoRAG:基於神經生物學啟發的RAG,使用Amazon Bedrock、Amazon Neptune和個性化PageRank

本文演示瞭如何使用AWS技術棧實現HippoRAG,包括Amazon Bedrock、Amazon Neptune、Neptune Analytics和Amazon Titan Embeddings。該框架受人類海馬體記憶系統啟發,透過構建知識圖譜和個性化PageRank演算法,實現單步多跳檢索,提升複雜推理任務的效率。文章詳細介紹了從HotpotQA資料處理到Neptune圖資料庫構建的完整流程,並提供了程式碼示例。

來源AWS Machine Learning Blog作者: Tanay Chowdhury

大型語言模型(LLM)在資訊處理和生成方面取得了顯著進展,但在整合多個來源的知識方面仍存在困難。標準的檢索增強生成(RAG)方法雖然有所幫助,但在需要跨文件連線資訊的多跳推理任務中往往力不從心。為了解決這些限制,我們探索了HippoRAG——一種受人類海馬體記憶系統啟發的新型RAG框架。

在本文中,我們演示瞭如何使用完整的AWS技術棧實現HippoRAG。我們使用Amazon Bedrock提供LLM能力,Amazon Neptune作為圖資料庫,Amazon Neptune Analytics執行高階圖演算法(包括個性化PageRank),以及Amazon Titan Embeddings進行向量表示。該實現展示瞭如何在AWS基礎設施上構建和部署HippoRAG,以支援企業級應用。

神經生物學靈感與背景

HippoRAG的靈感來自人類長期記憶的海馬體索引理論。在人腦中,新皮層處理感知輸入,而海馬體則建立記憶之間的關聯索引。這種雙元件系統使得人類能夠高效地整合不同體驗中的資訊。

標準的RAG方法將每個文件獨立處理,難以回答需要跨多個來源連線資訊的問題。HippoRAG透過以下方式解決這一問題:

  • 構建知識圖譜以表示實體之間的關係。
  • 使用個性化PageRank(PPR)演算法進行高效的圖遍歷和相關性排序。
  • 實現單步多跳檢索,無需多次迭代。

解決方案架構

我們的AWS實現包含四個主要元件:

  • Amazon Bedrock:提供LLM能力,用於提取知識圖譜三元組、回答問題以及識別命名實體。
  • Amazon Neptune Database:儲存知識圖譜結構,支援基本圖操作。
  • Amazon Neptune Analytics:執行高階圖演算法,特別是用於相關性排序的個性化PageRank。
  • Amazon Titan Embeddings:建立文本的向量表示,用於相似性匹配。

這種架構使我們能夠充分利用個性化PageRank的強大功能,同時保持AWS託管服務的可擴充套件性和可靠性。

前提條件

為實現此方案,您需要:

  • 一個AWS賬戶,有權訪問Amazon Bedrock和Neptune服務。
  • 已配置並可訪問的Amazon Neptune叢集。
  • 從Neptune資料庫建立的Amazon Neptune Analytics圖。
  • 已安裝AWS CLI和Python 3.8+。
  • 適當的IAM許可權,包括Amazon Bedrock、Amazon Neptune、Amazon Neptune Analytics和Amazon Simple Storage Service (Amazon S3)。

資料處理管道:從HotpotQA JSON到Neptune

實現HippoRAG的第一步是將原始資料轉換為適合於Neptune的知識圖譜結構。在本節中,我們逐步介紹如何處理JSON格式的HotpotQA資料。我們使用Amazon Bedrock提取知識圖譜三元組,生成Neptune批次載入CSV檔案,將它們上傳到Amazon S3,然後載入到Neptune叢集中。

設定資料匯入器

HotpotQANeptuneImporter類編排了管道的每個階段。它負責讀取JSON原始檔、生成CSV輸出、將檔案上傳到Amazon S3並觸發Neptune批次載入器。該類的初始化需要配置AWS環境的值,包括檔案路徑、輸出目錄、S3儲存桶、字首、Neptune端點、埠、IAM角色ARN等。

知識圖譜三元組提取

管道的一個關鍵部分是使用Amazon Bedrock的LLM能力從原始文本中提取結構化知識。對於每個段落,系統生成主語-關係-賓語三元組,這些三元組成為知識圖譜中的邊。透過呼叫LLM API,可以從文本中提取實體及其關係。

處理HotpotQA示例

每個HotpotQA示例的處理包括遍歷上下文中的文件和段落,為每個段落建立語料節點,然後從段落中提取三元組,為每個主語和賓語建立短語節點,並寫入關係邊和上下文邊。此過程確保圖譜中包含了文件間的相互引用。

將資料載入到Neptune

處理資料生成CSV檔案後,系統會將這些檔案上傳到S3,並使用Neptune的批次載入API匯入到圖資料庫中。載入作業提交後,系統會監控其狀態直至完成。

執行完整管道

run_pipeline方法依次執行所有步驟:測試Neptune連線、載入HotpotQA資料、處理資料為CSV、建立空檔案、上傳到S3、匯入到Neptune並等待完成。整個過程透過日誌記錄進度和錯誤。

實現

本節介紹HippoRAG實現的關鍵元件,從初始配置到知識圖譜構建和檢索。

配置

首先,我們設定基本配置,包括LLM模型(如Claude 3.5 Haiku)、嵌入模型(如Titan Embeddings v2)、AWS區域、儲存目錄和檢索引數。

Neptune Analytics整合

我們實現中的一個關鍵創新是與Amazon Neptune Analytics的整合,用於個性化PageRank。透過建立一個專門的客戶端類,可以呼叫Neptune Analytics的API來執行演算法。該類接收種子節點列表、阻尼因子、最大迭代次數和容差引數,返回節點及其PageRank分數的列表。

檢索流程

在檢索階段,給定一個查詢,系統首先使用Bedrock提取實體,然後在Neptune中查詢這些實體對應的節點,接著在Neptune Analytics上執行個性化PageRank,以獲取與查詢最相關的段落節點。最終,根據分數排序返回Top-K結果。

結論

透過將神經科學的靈感與AWS的託管服務相結合,HippoRAG為企業級多跳推理任務提供了一種高效且可擴充套件的解決方案。本文的實現展示瞭如何利用Amazon Bedrock、Neptune和Neptune Analytics構建一個完整的知識圖譜增強檢索系統。