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構建一個完整的知識圖譜增強檢索系統。