為什么 RAG 能讓 AI 更 “聰明”?工作原理深度拆解

為什么 RAG 能讓 AI 更 “聰明”?工作原理深度拆解

文章圖片

為什么 RAG 能讓 AI 更 “聰明”?工作原理深度拆解

文章圖片

在人工智能領域 , 大語言模型(LLM)的快速發展為自然語言處理帶來了革命性的突破 。 然而 , 這些模型在處理實時信息、專業領域知識以及確保回答準確性和可靠性方面仍面臨挑戰 。 本文將深入探討一種名為RAG(Retrieval-Augmented Generation , 檢索增強生成)的技術框架 , 它通過結合信息檢索與大語言模型的生成能力 , 為AI模型提供了強大的外掛支持 。

一、為什么要做RAG?時效性:模型的訓練是基于截止某一時間點之前的數據集完成的 , 這意味著在這之后發生的事情大模型就難以回答 。 如果需要構建能夠推理私有數據或者模型截止日期后引入的數據 , 則需要使用RAG;
解決模型幻覺問題:傳統大模型依賴訓練數據 , 易生成錯誤信息 , 比如用戶問了一個大模型不知道的東西 , 它會通過瞎編來回答 , 其實毫無依據 。 RAG 通過外部知識檢索提供實時、可靠的上下文支撐 , 因此減少“一本正經的胡說八道”現象;
(美國的一位律師 , 他用大模型去搜集案例 , Chat GPT確實給出了幾個案例 。 律師反復去確認這些案例是真實的嗎?大模型回復都是真實的 , 開庭時 , 經過核實這些案例其實都是AI虛構出來的 。 )
彌補專業領域知識內容不足:金融領域、醫療領域等有自己專業知識的沉淀 , 大模型其實是不具備某領域非常專業知識的能力的 , 那我們就可以把專業知識通過Rag技術讓大模型進行知識庫檢索 。 例如金融(業務上的專業知識、產品知識、產品手冊、優質的用戶問答等);
【為什么 RAG 能讓 AI 更 “聰明”?工作原理深度拆解】可靠的知識來源與可驗證性:來自哪篇文章、哪個文檔、哪個網頁都有跡可循 , 可以看到回答的依據來源 , 使得驗證答案準確性變得容易起來;
保障數據安全:可以讓大模型調用私有知識庫來服務用戶 , 避免數據上傳云端或者外部 , 導致重要信息、敏感數據外泄的情況 。

二、RAG到底是什么?RAG(Retrieval-Augmented Generation , 檢索增強生成)是一種結合信息檢索與大語言模型生成能力的技術框架 , 它由兩部分組成:“檢索器”和“生成器”
  1. 檢索器從外部知識中快速找到與問題相關的信息
  2. 生成器則利用檢索到的信息來生成精確和連貫的答案 。
簡單來說就是:通過檢索的模式 , 為大語言模型提供強有力的外掛 , 從而使大模型生成的答案更符合用戶想要的答案 。

三、RAG的工作原理
步驟一:構建可檢索的知識庫如何構建可檢索的知識庫?
01.知識整理:以文件格式存儲 , 比如 word、pdf、ppt、excel、在線的、網頁等等;
02.數據清洗及格式化:將不同格式的數據內容提取為純文本
03.內容切分:將文本內容按段落、主體或者邏輯單元切分成較小的知識片段(Chunk); 那誰來切呢?Embedding
04.向量化:將每個知識片段轉化為向量表示(比如Open AI的 Embedding 接口)
知識補充:什么是向量
向量(Vector)是一種將復雜信息轉化為計算機可處理的數值形式的核心工具 , 本質上是 “高維空間中的有序數值數組” 。 它通過將文本、圖像、聲音等數據映射為特定維度的數字序列 , 讓 AI 模型能夠高效地理解、計算和學習數據背后的規律
通俗來說 , 向量是 AI 的「數字身份證」:把萬物變成數字串
在 AI 眼里 , 圖像、文字、聲音甚至用戶行為 , 都必須先變成一串數字組成的向量才能處理 。
舉個栗子:
文本(NLP 領域): 句子 “我喜歡 AI” 會被轉化為向量 , 比如用 Word2Vec 技術生成 [0.8 -0.3 1.2 …
這樣的數字串 , 向量中的每個數字代表一個隱藏的語義特征(比如 “喜歡” 的情感強度、“AI” 的領域相關性) 。
神奇的是:“AI” 和 “人工智能” 的向量在空間中會非常接近 , 因為它們語義相似 。
借助Embedding模型 , 將切分好的片段轉化成向量(數字組成的) , 這個向量是可以比較相似度
05.關聯元數據:給每個向量關聯相關元數據(如:文檔名稱、創建時間、作者、來源等)
06.載入向量數據庫并建立索引:向量數據庫如FAISS、Pinecone、Weaviate;
07.部署集成:將向量數據庫集成到AI產品流程中 , 生成模型搭配使用 。

步驟二:模型調用知識庫完成用戶任務
  1. 將用戶的Prompt轉化成向量 , 去向量數據庫里比較相似度;
  2. 選取相似度較高的1條或者多條知識片段(3條 , 5條 , 10條這樣的召回) , 并提取知識片段原文;
  3. 將檢索出的知識片段與原Prompt 合并在一起組成新的Prompt
  4. 模型生成最終回復

四、如何提升回答的準確率?以智能客服舉例 , 比如客服系統無法充分理解用戶的真實意圖 , 回答偏離主題時對用戶 Prompt 進行改寫 , 相同語義的不同問法
可以將用戶的問題 , 通過大模型改寫成多個相似語義的問題(具體可能是2個、3個、4個、5 個等 , 根據準確率評估來定)
比如用戶問:如何交易美股?
我們將用戶問題改寫成4個相同語義的問題
  • Q1 我怎么交易美股? 對應50個相似片段–通過排序–挑選Top3
  • Q2 我怎么買國外的股票?對應50個相似片段–通過排序–挑選Top3
  • Q3 我怎么買美股? 對應50個相似片段–通過排序–挑選Top3
  • Q4 可以買美股嗎? 對應50個相似片段–通過排序–挑選Top3
將得出的top12 再次進行重排序 , 得到Top3 , Top3+用戶提問+系統提示詞 , 一起給到大模型 , 大模型給出回答 。 準確率也是會有一定的提升;

檢索到信息 , 想要的答案排序靠后加入排序模型(Rerank模型)
在基礎RAG中 , 準確率大概在66%左右 , 在加入Rerank之后 , 準確率提升了12%(重新排序可以增加一定的準確度)
在向量知識庫中檢索到相應的片段之后 , 加入排序模型 , 對這些相關片段進行排序 。
比如:檢測出60個相關片段 , 經過Rerank排序之后 , 挑選出前三個相似度最高的片段+用戶提問+系統提示詞 , 一起給到大模型 , 大模型給出回答 。

回答不全面Chunk 切分處優化
  • 知識片段有明確主題、交疊切分、多顆粒度混合切分;
  • 知識片段的上下相鄰片段可以一并取出 , 提高信息完整度

檢索不全面向量+關鍵詞混合檢索
方法:關鍵詞匹配和向量匹配相結合的形式
  1. 關鍵詞檢索 , 召回簡單直接 , 能快速找到包含特定關鍵詞的文檔 , 速度快;
  2. 向量匹配 , 能更好處理語義層面的匹配 , 提高召回的全面性 。
這兩者的結合 , 可以充分利用各自的優勢 提高召回率 。
這幾個小技巧是提升準確率的比較好用的小方法 , 分享給大家 , 大家也可結合自己的項目繼續探索 , 多多交流~

五、市面上向量數據庫對比本文由 @梧桐AI 原創發布于人人都是產品經理 。 未經作者許可 , 禁止轉載
題圖來自Unsplash , 基于CC0協議
該文觀點僅代表作者本人 , 人人都是產品經理平臺僅提供信息存儲空間服務

    推薦閱讀