從傳統 RAG 到圖 RAG,賦予大型語言模型更強大的知識力量
大型語言模型 (LLMs) 在固定數據集上進行訓練,其知識在最后一次訓練更新時就已固定。
ChatGPT 的常規用戶可能已經注意到其眾所周知的局限性:“訓練數據截止到 2021 年 9 月”。
這種局限性會導致模型產生不準確或過時的響應,因為它們會“幻覺”信息。
在不重新訓練或微調的情況下,用新信息更新模型或增強其上下文理解能力,在資源和人力方面都極具挑戰。
檢索增強生成 (RAG)
檢索增強生成 (簡稱 RAG) 是一種通過整合來自外部可靠知識庫的信息來改進大型語言模型 (LLMs) 的技術。
RAG 背后的原理很簡單:當 LLM 被問到一個問題時,它不會僅僅依賴于自己已有的知識。
相反,它會首先從指定的知識源中查找相關信息。
這種方法確保了生成的輸出引用了大量語境豐富的數據,并通過最新的相關信息進行增強。
RAG 主要通過兩個階段的流程來運作:檢索和內容生成。
檢索階段
在檢索階段,算法會定位并收集與用戶提示或查詢相關的相關信息片段。
例如,如果你想搜索福建面食的食譜,你的提示可能是“_福建面食的配料是什么?_”
系統會識別出與查詢語義相關的文檔,并使用相似度度量來計算其相關性,通常使用余弦相似度( Is Cosine-Similarity of Embeddings Really About Similarity?) 來進行計算。
在收集外部知識后,它會將其附加到用戶的提示中,并將其作為增強后的輸入發送到語言模型。
內容生成階段
在隨后的生成階段,LLM 將此增強后的提示與其自身的訓練數據表示相結合,以生成一個針對用戶查詢的定制化響應。
該響應提供了一種個性化和可驗證信息,適合通過聊天機器人等應用程序使用。
檢索增強生成
RAG 的重要性
在當今的技術領域,LLMs 驅動著 眾多 自然 語言 應用程序 ,能夠理解或生成類似人類的文本。
雖然這些模型功能強大,但有時也會出現不足。
有時,它們在生成不正確的響應時會過于自信,以至于人們很容易被它們極具說服力的論據所影響。
RAG 試圖通過引導 LLM 從可信來源獲取信息來緩解這些問題,從而保持模型輸出的相關性和準確性。
RAG 的局限性
就像生活中的所有事物一樣,傳統的 RAG 方法也有其復雜性和挑戰。
雖然 RAG 在增強 LLMs 的功能方面具有開創性,但它也存在一些局限性,這些局限性會影響其有效性和適用性。
其中一個主要挑戰涉及檢索信息的準確性和數據源異質性。
為了使 RAG 有效,它通常依賴于多個外部來源,這些來源可能具有不同的格式、標準和可靠性級別。(例如 PDF、平面文件、Markdown、CSV、Web 內容等)
RAG 實現也遇到了一些困難,例如處理含糊的查詢或需要深入理解上下文的查詢。
這些問題是技術設計固有的問題,主要源于檢索過程,檢索過程有時會忽略產生精確響應所需的細微差別。
上下文很重要,一個恰當的逗號也是如此
RAG 的改進
提高 RAG 系統的檢索準確率和效率是自然語言處理和機器學習領域持續進行的研究方向。
為了實現這些改進,可以采取多種策略,但我想要重點介紹兩種在當今技術條件下可以實現的顯著改進。
- 實施更復雜的檢索算法,能夠更好地理解查詢的語義,可以提高檢索到的文檔的相關性。
- 有效地索引知識庫,以加快檢索過程,而不犧牲結果的質量。
這將我們引向…
圖 RAG:RAG x 知識圖譜
圖 RAG 在 RAG 的概念基礎上,利用了知識圖譜 (KGs)。
這種創新方法是由 NebulaGraph 首創的概念,它通過整合圖數據庫,改變了 LLMs 解釋和響應查詢的方式。
圖 RAG 通過將 KGs 中的結構化數據整合到 LLM 的處理中,為模型的響應提供了更細致入微和信息豐富的基礎。
KGs 是對現實世界實體及其關系的結構化表示。
它們包含兩個主要部分:_節點_和_邊_。
節點代表單個實體,例如_人物_、_地點_、_物體_或_概念_。
另一方面,邊代表這些節點之間的關系,表明它們是如何相互連接的。
一個簡單的知識圖譜
這種結構極大地提高了 LLMs 生成有見地的響應的能力,因為它使模型能夠訪問精確且與上下文相關的數據。
圖 RAG 的創新之處在于它將圖數據庫與 LLMs 整合,以在生成響應之前豐富模型的上下文。
一些流行的圖數據庫產品包括 Ontotext, NebulaGraph 和 Neo4J。
圖 RAG 的重要意義
隨著 LLMs 繼續在復雜性和能力方面不斷發展,圖 RAG 有可能對 AI 領域產生重大影響。
以下是我對這種整合如何演變的展望:
- 未來 LLMs 預計將表現出對復雜查詢的改進理解能力和推理能力。
圖 RAG 可以利用這些進步來提供更精確、更富含上下文的答案。
來自知識圖譜的結構化知識,再加上更復雜的 LLMs,可能會導致 AI 在理解抽象概念、推理以及生成細致入微的響應方面取得突破。
- 隨著 LLMs 的持續進步,它們與知識圖譜的整合可能會變得更加動態和無縫。
這可能包括根據全球事件或發現實時更新 KGs。
LLMs 可以通過將從用戶交互或其他數據源收集的新信息整合到知識圖譜中,在自動增強和更新知識圖譜方面發揮作用。
使用諸如來自人類反饋的強化學習 (RLHF) 和來自 AI 反饋的強化學習 (RLAIF) 等技術可以進一步幫助模型與人類偏好保持一致,并遵守 HHH (不是摔跤手,而是幫助、誠實、無害) 原則。
- 隨著英偉達努力實現 AI 計算的民主化,未來 LLMs 和圖 RAG 實現的進步將集中在提高計算效率和可擴展性方面。
這種轉變將使圖 RAG 能夠應用于更廣泛的應用程序,包括那些需要實時響應或在資源有限的環境中運行的應用程序。
- 未來 LLMs 預計將在多個領域擁有更廣泛、更深入的知識。圖 RAG 可以促進跨不同領域的知識轉移,這將使生成從不同領域獲取信息的見解或解決方案成為可能。
例如,應用認知科學的發現可能會導致開發更自然的人機交互模型,或者將網絡安全與心理學相結合可能會提高安全措施的有效性。
- 隨著圖 RAG 技術的發展,采用諸如資源描述框架 (RDF) 等知識圖譜標準可以提高各種系統之間的互操作性。
這可能意味著不同的實現可以相互交互和協作,從而推動更廣泛的采用和創新。
圖 RAG 演示
在本演示中,我們將使用 Govtech 的開發者門戶網站 中的產品信息作為我們的知識庫。
數據集示例。我們將很快將其轉換為可用的格式。
- 設置
- 使用Neo4j Desktop啟動一個 Neo4j 本地實例
Neo4j Desktop 界面
- 使用 LangChain 本地連接到 Neo4j 數據庫。好消息是 LangChain 有一個現成的模板可以輕松設置。
- 提取
- 使用提示工程和 LLM 提取信息、節點及其連接。以下是一個提示示例:
\# 創建知識圖譜的說明
\## 概述
您被設計用于將數據組織成知識圖譜。
\- \*\*節點\*\*: 代表實體和想法。
\- 目標是確保知識圖譜簡單易懂,便于廣泛使用。\## 節點標記
\- \*\*一致性\*\*: 對節點使用簡單的標簽。例如,將任何組織實體標記為“公司”,而不是使用諸如“Facebook”或“Amazon”之類的術語。
\- \*\*節點標識符\*\*: 選擇文本或可理解的標識符,而不是數字標識符。
- \*\*允許的節點標簽\*\*: 如果存在特定允許的節點標簽,請在此處列出。
- \*\*允許的關系類型\*\*: 如果存在特定允許的關系類型,請在此處列出。
\## 管理數值數據和日期
\- 將數值信息直接作為節點的屬性集成。
\- \*\*集成日期/數字\*\*: 不要為日期或數字創建單獨的節點,而是將它們作為屬性附加。
\- \*\*屬性格式\*\*: 使用鍵值對格式。
\- \*\*避免使用引號\*\*: 在屬性值中不要使用轉義引號。
\- \*\*鍵命名\*\*: 采用 camelCase 命名鍵,例如 \`dateTime\`。
\## 一致性
\- \*\*實體一致性\*\*: 確保跨不同提及或引用的實體一致地識別。
## 遵守指南
嚴格遵守這些說明是強制性的。不遵守將導致終止。
- 圖譜構建
- 使用 CSVLoader 和文檔分段來處理我們的文檔
- 將提取的信息映射到圖節點和關系
- 通過我們的提取管道處理文檔,并將信息存儲在 Neo4j 中
該過程花費了近一個小時,最終產生了提取的節點標簽列表
- 不幸的是,并非所有節點標簽都對我們的上下文有用,或者符合我們的需求。
{
"identity": 1040,
"labels": \[
"Feedbackstatus"
\],
"properties": {
"id": "Feedback-Success",
"message": "已發送。感謝您的反饋!”
},
"elementId": "4:81cd2613-0f18-49c1-8134-761643e88b7a:1040"
},
{
"identity": 1582,
"labels": \[
"Feedbackstatus"
\],
"properties": {
"id": "Feedbacksuccess",
"status": "已發送。感謝您的反饋!”
},
"elementId": "4:81cd2613-0f18-49c1-8134-761643e88b7a:1582"
},
{
"identity": 1405,
"labels": \[
"Header"
\],
"properties": {
"id": "Modalcardhead",
"class": "sgds-modal-card-head"
},
"elementId": "4:81cd2613-0f18-49c1-8134-761643e88b7a:1405"
},
{
"identity": 1112,
"labels": \[
"Feedbackindicator"
\],
"properties": {
"id": "Feedbacksuccess",
"title": "check",
"message": "已發送。感謝您的反饋!”
},
"elementId": "4:81cd2613-0f18-49c1-8134-761643e88b7a:1112"
...
- 評估和細化
- 我們將指定 LLM 應該提取哪些節點標簽來細化我們的方法
permissible\_nodes\_to\_extract = \[
"Aisubfield",
"Application",
"Cloudservice",
"Concept",
"Digitalsolution",
"Division",
"Entity",
"Feature",
"Fundinginitiative",
"Initiative",
"Link",
"Location",
"Organization",
"Person",
"Platform",
"Policy",
"Program"
"Resource",
"Role",
"Schema",
"Service",
"Standard",
"Technology",
"Technologyplatform",
"Technologystack",
"Webframework",
"Webresource",
"Website"
\]
- 使用 Neo4j 瀏覽器瀏覽我們新構建的知識圖譜
好多了!
- 持續細化我們的提取和圖譜構建方法
經過所有努力,魔法終于開始了!
考慮以下查詢:
Q: “請告訴我更多關于 AiSay 的信息,誰開發了這款產品,以及它的優勢和應用。另外,請告訴我 AiSay 的獨特之處。”
基礎 RAG: “AiSay 是一款由新加坡政府開發的 AI 驅動的文檔閱讀器。它可以自動檢測、掃描和理解各種類型的文檔,包括手寫筆記、印刷文章、多語言文本以及結構化/非結構化文檔。與傳統的 OCR 系統不同,AiSay 可以為圖像和 PDF 文件等文檔提供結構化的響應。它使用 OCR、文檔問答技術和大型語言模型來推導出上下文并回答查詢。AiSay 可擴展,具有同步和異步調用選項,允許處理大型文件。它在云上托管為無服務器,使其在體積上可擴展,能夠處理大型文件。AiSay 正在積極開發中,支持安全性和數據分類,最高可達 RESTRICTED/SENSITIVE NORMAL。展望未來,將支持更多文檔類型。AiSay 的獨特功能包括它能夠為各種文檔類型提供結構化的響應,其可擴展性和對安全性和數據分類的支持。”
圖 RAG: “AiSay 是一款由新加坡政府開發的 AI 驅動的文檔閱讀器。它是一個文檔解析器,可以提供結構化的響應,提取和整合來自各種文檔的信息到現有系統中。AiSay 可以自動檢測、掃描和理解各種類型的文檔,包括手寫筆記、印刷文章、多語言文本以及結構化/非結構化文檔。與傳統的光學字符識別 (OCR) 系統不同,AiSay 可以為圖像 (JPEG、PNG、TFIF) 和 PDF 文件等文檔提供結構化的響應。
AiSay 的一些主要優勢包括:
- 由于自動填寫從文檔上傳中獲取的關鍵數據以進行表單提交,從而減少了人工錯誤并提高了數據準確性。
- 提高了數字服務體驗,因為一旦文檔上傳,AiSay 可以自動填寫關鍵數據。
AiSay 在為各種文檔類型提供結構化響應方面獨樹一幟,支持多種格式和語言。它還為每個任務提供置信度得分,以確定是否需要額外支持,從而在置信度高的任務中實現最少的人工干預。此外,AiSay 可擴展,因為它在云上托管為無服務器,使其能夠處理大型文件和異步提取過程。”
圖 RAG 與基礎 RAG 的比較
在本例中,圖 RAG 與傳統 RAG 方法相比的優勢顯而易見。
該響應不僅證明了準確性,而且還豐富了上下文和關系,提供了一種標準 RAG 方法所沒有的深度。
圖 RAG 的秘密在于它能夠分析用戶的查詢,在圖數據庫中確定相關數據,并將這種上下文洞察整合到引導 LLM 響應的過程中。
這種方法利用了一個傳統方法可能錯過的相互關聯的信息網絡,從而對查詢有了更細致入微的理解。
讓我們再嘗試幾個例子
Q: “我需要從一些文檔中刪除敏感信息。Govtech 提供哪些具有這些功能的產品?”
基礎 RAG: “Govtech 提供 Cloak 和 FileSG 這兩種產品,它們具有幫助從文檔中刪除敏感信息的功能。”
圖 RAG: “GovTech 提供一款名為 Cloak 的產品,它是一個用于符合政策的數據匿名化的中央隱私工具包。該產品幫助公務員將數據匿名化技術應用于數據集,并根據指南審查重新識別風險。”
我們需要解決你頻繁的操控行為
Q: “DIAB 與 SIaC 有什么不同?”
基礎 RAG: “提供的文檔沒有直接比較數據基礎設施一體化 (DIAB) 與任何名為 SIaC 的東西,也沒有提及 SIaC。因此,根據給定的上下文,無法直接概述 DIAB 和 SIaC 之間的差異。但是,我們可以總結 DIAB 的關鍵方面如下:
- **目的和開發**: DIAB 由 GovTech 的數據科學與人工智能部門 (DSAID) 開發,旨在作為商業云政府 (GCC) 上數據基礎設施部署和維護的加速器。它專門設計用于幫助政府機構構建、部署和保護數據基礎設施。
- **關注數據基礎設施**: DIAB 強調構建一致且可擴展的數據基礎設施,使機構在設計和實施云基礎設施時可以節省時間并減少開銷。這種關注使機構能夠更專注于構建應用程序層。
- **使用基礎設施即代碼 (IaC)**: DIAB 利用 IaC 模板和參考架構來幫助進行數據工程方面的考慮,簡化設置和管理數據基礎設施的過程。
由于沒有關于 SIaC 的信息,因此無法進行比較。DIAB 的特點突出了其作為政府機構在云中有效部署和管理數據基礎設施的工具的作用,它利用 IaC 來提高效率和可擴展性。”
圖 RAG: “DIAB (數據基礎設施一體化) 和 SIaC (安全基礎設施即代碼) 都是旨在為政府機構簡化云基礎設施部署的產品。但是,它們在具體關注點和功能方面有所不同。
DIAB 作為商業云政府 (GCC) 上數據基礎設施部署和維護的加速器。它幫助機構構建、部署和保護數據基礎設施,專注于數據工程方面的考慮,并提供基礎設施即代碼 (IaC) 模板。DIAB 的目標是幫助機構構建一致且可擴展的數據基礎設施,其主要優勢包括易用性、提高效率、內置合規性、部署靈活性和未來證明。
另一方面,SIaC 提供可定制的模板,用于以安全、合規和自動化的方式部署云基礎設施。它專注于安全配置來自云服務提供商的托管服務和工具,具有模塊化且易于適應的模板。SIaC 的關鍵功能包括遵守新加坡政府標準、針對不同用例的模塊化、與 SGTS 組件的集成以及云原生設計。
總而言之,雖然 DIAB 和 SIaC 都旨在為政府機構簡化云基礎設施部署,但 DIAB 專注于數據基礎設施部署,重點關注數據工程方面的考慮和 IaC 模板,而 SIaC 專注于安全且合規的云基礎設施部署,具有可定制的模板和模塊化設計。”
結論
從傳統的檢索增強生成 (RAG) 向圖 RAG 的轉變,代表了我們與大型語言模型 (LLMs) 交互方式的重要進步。
這種轉變解決了以下基本挑戰:_如何提高 LLMs 提供與上下文相關的準確答案以應對復雜查詢的能力_。
當比較這兩種方法時,圖 RAG 在處理與上下文相關的復雜查詢方面的優勢變得顯而易見。
傳統的 RAG 技術往往無法處理與上下文相關的復雜問題。
相比之下,圖 RAG 利用了更復雜的數據網絡,提供能捕捉到查詢細微之處更深刻理解的響應。
然而,圖 RAG 的有效性并非一種一刀切的解決方案。
它仍然高度依賴于底層 KGs 的質量、深度和廣度。
在 KG 有限或偏向特定領域的場景中,圖 RAG 的性能可能無法超過傳統 RAG 方法。
盡管如此,這種轉變有望導致 AI 系統更好地模仿人類的思維和發現。
本文轉載自 ??DevOpsAI??,作者: GraphRAG
