HippoRAG:基於神經生物學啟發的RAG,使用Amazon Bedrock、Amazon Neptune和個性化PageRank
本文演示瞭如何使用AWS技術棧實現HippoRAG,包括Amazon Bedrock、Amazon Neptune、Neptune Analytics和Amazon Titan Embeddings。該框架受人類海馬體記憶系統啟發,透過構建知識圖譜和個性化PageRank演算法,實現單步多跳檢索,提升複雜推理任務的效率。文章詳細介紹了從HotpotQA資料處理到Neptune圖資料庫構建的完整流程,並提供了程式碼示例。
大型語言模型(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構建一個完整的知識圖譜增強檢索系統。