2025爆火的RAG技術是什么?從原理到應用全面科普!

前言

最近,RAG 這個詞在網絡中爆火,特別是一些 AI 方向的小伙伴,網上鋪天蓋地的文章、視頻等教程,但是他們都各有各的不同看法,接下來就讓我從一名 AI 產品經理角度,帶你們徹底了解什么是? ?RAG、前世今生是什么、實用場景、工作原理、具體應用。

上期回顧:

一、RAG 是什么

RAG 全稱是 Retrieval-Augmented Generation,翻譯成中文是 檢索增強生成,是一種將信息檢索與自然語言生成相結合的 AI 架構模式。讓大模型在回答問題時能夠先去查找相關的外部知識,然后再基于這些知識來生成答案。

核心是把“先找資料(檢索)”和“再用大模型寫答案。它是一種技術框架,它通過在生成回答之前主動檢索外部知識源中的相關信息,然后將這些信息作為上下文輸入給大語言模型,從而讓大語言模型(LLM)生成更準確、更有依據的回答,彌補大語言模型的知識邊界。雖然大語言模型在訓練過程中學習了海量數據,但它們的知識是固定在訓練時間點的,無法獲取實時信息,也難以覆蓋所有專業領域的深度知識。RAG 通過動態檢索外部信息,有效解決了這一局限性。

簡單說:在模型回答前,先從你的知識庫/網頁里找出最相關的片段,把這些片段連同問題一起喂給大模型,讓它基于證據作答,并標注來源。

RAG 把“外部檢索到的資料”接到“生成式大模型”上,模型先檢索相關文檔,再讀懂與綜合這些證據來生成回答。這樣既能減少幻覺、提供可溯源的引用,又能用更新的知識而不必頻繁重訓參數。這個名字來自 2020 年 Meta/FAIR 的論文,提出了兩種經典配方:RAG-Sequence 與 RAG-Token(按序列或按 token 融合檢索證據)。

2025爆火的RAG技術是什么?從原理到應用全面科普!

一、RAG 的前世今生

RAG 的發展歷程可以追溯到多個研究領域的交匯,它的起源可以追溯到 2020 年,由 Facebook AI Research (FAIR) 團隊發表的一篇開創性論文。以下是 RAG 從概念誕生到成為主流范式的關鍵時間線和重大事件:接下來就詳細介紹一下它的起源和演變過程。

第一階段:RAG 的“史前”時代(2010 - 2019 年)

在 RAG 這個術語出現之前,相關的技術和思想就已經存在,但它們是分散和獨立的。

信息檢索技術的發展:

關鍵詞檢索:傳統的搜索算法如TF-IDF、BM25等,已廣泛用于從文檔庫中快速匹配和召回相關內容。

大型語言模型的崛起:

  1. Transformer架構的誕生(2017年):Google發布的Transformer模型奠定了后續所有大型語言模型的基礎。
  2. BERT (2018) 和 GPT-2/3 (2019/2020):這些模型展示了強大的文本生成能力,但它們存在一個致命缺陷——“閉卷(closed-book)”。它們只能依賴訓練數據中的內部知識來回答問題,無法獲取實時或特定領域的外部信息,容易出現“幻覺”(Hallucination,即生成不實信息)。

這個階段的特點是:檢索可以找到信息,但無法進行復雜的推理和生成;而生成模型雖然能流暢地創造文本,但缺乏事實的準確性。這為 RAG 的誕生創造了需求。

早期理論基礎(2000-2010 初期)

RAG 的概念源于幾個關鍵的研究方向:

  1. 信息檢索(IR)領域:傳統的搜索引擎和文檔檢索系統為 RAG 提供了基礎架構。早期的 TF-IDF、BM25 等算法建立了文本相似性匹配的理論基礎。
  2. 問答系統:IBM 的 Watson 系統(2011 年在 Jeopardy!中獲勝)展示了結合知識庫和推理能力的可能性,雖然當時還不是現代意義上的 RAG。
  3. 知識圖譜:Google 的 Knowledge Graph(2012 年發布)等結構化知識表示方法,為后來的外部知識整合提供了思路。

深度學習時代的鋪墊(2010 中期)

  1. 神經網絡語言模型:Word2Vec(2013)、GloVe 等詞嵌入技術為文本的向量化表示奠定基礎。
  2. 序列到序列模型:Seq2Seq 架構(2014)和注意力機制(2015)為生成式任務提供了新的范式。
  3. 記憶網絡:Facebook AI 的 Memory Networks(2014)首次提出了外部記憶模塊的概念,允許模型訪問和更新外部知識庫。

Transformer 革命(2017-2019)

  1. Transformer 架構:2017 年"Attention Is All You Need"論文發布,為后續的大規模預訓練模型鋪平道路。
  2. 預訓練語言模型:BERT(2018)、GPT(2018)等模型展示了預訓練的巨大潛力,但也暴露出知識更新困難、幻覺等問題。
  3. 知識增強模型:研究者開始探索如何將外部知識整合到預訓練模型中,如 KnowBERT、ERNIE 等。

第二階段:RAG 概念的誕生(2020 年)

這是一個里程碑式的時刻,RAG 作為一種全新的范式被正式提出。

重大事件:

  1. 2020年,Facebook AI Research (FAIR) 團隊發表了論文《Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks》。
  2. ?這篇論文首次提出了 "Retrieval-Augmented Generation" 這一術語,并構建了一個端到端(end-to-end)可訓練的RAG模型。

核心創新:

  1. 將“檢索器(Retriever)”和“生成器(Generator)”無縫集成。 論文中的模型使用了一個基于BERT的檢索器,從外部維基百科數據中查找相關段落;并使用一個基于T5的生成器,將檢索到的信息和用戶問題一起作為輸入,生成最終答案。
  2. 可端到端訓練:與簡單地將檢索結果作為提示詞(prompt)不同,FAIR的RAG模型是一個可聯合訓練的深度學習模型。這意味著檢索器會“學習”如何更好地為生成器提供信息,而生成器也會“學習”如何更有效地利用這些信息。

這個事件標志著 RAG 從一個樸素的“檢索+生成”流程,正式升級為一種具有理論基礎和可優化空間的 AI 架構。

RAG 的正式提出(2020)

里程碑論文:Facebook AI Research 在 2020 年發表了"Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks",正式提出 RAG 架構。

核心創新:

  1. 將密集檢索器(通常基于BERT)與生成器(基于BART)結合
  2. 端到端訓練整個系統
  3. 在多個知識密集型任務上取得顯著提升

技術特點:

  1. 使用DPR(Dense Passage Retrieval)進行文檔檢索
  2. 將檢索到的文檔與輸入問題拼接后輸入生成器
  3. 支持對檢索器和生成器的聯合優化

第三階段:RAG 的發展與應用(2021 年至今)

RAG 的概念提出后,迅速在 AI 社區和工業界引起轟動,并進入了快速發展的快車道。

2021年:

  1. 向量數據庫的興起:隨著RAG的普及,專門用于存儲和檢索高維向量的向量數據庫(如Pinecone, Milvus, Weaviate)開始流行,極大地提升了RAG系統的檢索效率。

2022年 - 2023年:

  1. RAG技術成為主流:OpenAI發布了ChatGPT,引發了LLM熱潮。與此同時,企業開始面臨數據安全和模型幻覺的挑戰。RAG因其能夠利用企業內部私有數據、有效減少幻覺、并且成本遠低于模型微調(Fine-tuning)等優點,迅速成為構建企業級AI應用的首選范式。
  2. RAG框架與工具的繁榮:LangChain、LlamaIndex等開源框架的出現,大大簡化了RAG應用的開發過程,使得開發者可以快速集成不同的檢索器、LLM和數據源,進一步推動了RAG的普及。

2024年至今:

  1. RAG架構的深度演進:研究者們開始探索更復雜的RAG變體,如Self-RAG(模型能夠自我評估檢索到的信息質量并決定是否需要更多信息)、Multi-hop RAG(模型能夠進行多輪檢索來回答復雜問題)。
  2. RAG與多模態的融合:RAG的應用不再局限于文本,開始與圖像、音頻等多模態數據結合,實現跨模態的檢索和生成。

快速發展期(2021-2023)

檢索方法改進:

  1. 從稀疏檢索(BM25)到密集檢索(DPR)
  2. 混合檢索方法的探索
  3. 更高效的向量檢索技術(如FAISS優化)

架構變體:

  1. FiD(Fusion-in-Decoder):在解碼器中融合多個檢索文檔
  2. RAG-Token vs RAG-Sequence:不同的生成策略
  3. Iterative RAG:多輪檢索和生成的迭代過程

應用拓展:

  1. 從問答擴展到對話、摘要、代碼生成等任務
  2. 多模態RAG:整合圖像、表格等非文本信息

大模型時代的 RAG(2023 至今)

與大語言模型結合:

  1. ChatGPT、GPT-4等大模型的出現重新定義了RAG的價值
  2. RAG成為緩解大模型幻覺、知識更新問題的重要方案

技術突破:

  1. Advanced RAG:引入查詢重寫、文檔重排序、答案合成等復雜流程
  2. ?Modular RAG:模塊化設計,支持靈活的檢索和生成策略
  3. Self-RAG:模型自我反思和批判檢索內容的質量

工程化進展:

  1. LangChain、LlamaIndex等開源框架的普及
  2. 向量數據庫(Pinecone、Weaviate、Chroma等)的成熟
  3. 企業級RAG解決方案的商業化

2025爆火的RAG技術是什么?從原理到應用全面科普!

  1. 多智能體 RAG:多個專門化的檢索和生成智能體協作。
  2. GraphRAG:結合知識圖譜的結構化信息進行檢索和推理。
  3. Long-context RAG:利用長上下文模型減少檢索依賴。
  4. 實時 RAG:支持動態知識更新和實時檢索。

RAG 的演變反映了 AI 領域從單一模型能力向組合式、模塊化系統的轉變,它不僅解決了大模型的一些固有限制,也為構建更可靠、更可控的 AI 應用提供了重要范式。

二、RAG 的工作原理

前面提到了都是關于RAG的重要性,那么他的工作原理是什么樣的呢,或者換句話來說,他的什么能力才使得RAG在如今有不可代替的重要性呢?

先說結論:RAG 的原理可以分解為兩個主要階段:檢索(Retrieval)和生成(Generation)。而檢測和生成這兩個步驟里面又分為很多細小內容。

標準架構(一步步的流水線)

  1. 數據準備:把 PDF、網頁、FAQ、產品庫、類目表等匯總成文檔集。
  2. 切塊(Chunking):把文檔按段落/標題切成小塊(比如 300–800 字符,適度重疊)。
  3. 向量化(Embedding):用向量模型把每個塊變成向量,存進向量數據庫(FAISS/Milvus/PGVector/Elastic 等)。
  4. 檢索:收到用戶問題 → 在庫里找Top-k相關塊(可“向量 + 關鍵字 BM25 的混合檢索”)。
  5. 重排(Rerank,可選):用更強的交叉編碼器把候選塊重新打分,提升命中質量。
  6. 組合提示(Prompt):把問題 + 選中的證據塊拼成提示詞,明確“只能依據以下資料回答”。
  7. 生成:大模型基于證據作答,并引用來源。
  8. 反饋與評估:記錄命中率/準確率,持續優化“切塊、檢索、提示”。

RAG 的核心原理

首先我們來講 RAG 的核心流程,主要分為以下五個方面,

分片、索引、召回、重排、生成

2025爆火的RAG技術是什么?從原理到應用全面科普!

RAG 的基本架構

典型的 RAG 系統包含三個核心組件:

  1. 檢索器(Retriever):負責從外部知識庫中找到與查詢相關的信息片段
  2. 生成器(Generator):通常是大語言模型,負責基于檢索到的信息生成最終回答
  3. 知識庫(Knowledge Base):存儲外部信息的數據庫,通常以向量形式索引(分片,索引,召回,重排,生成)

2025爆火的RAG技術是什么?從原理到應用全面科普!

RAG 的工作流程

RAG 的工作流程可以分為兩大階段:離線階段(數據準備)和在線階段(實際問答)。

1. 離線階段:數據準備(Indexing)

這一階段的目標是為你的知識庫(例如,公司內部文檔、PDF、網頁、書籍等)構建一個高效的索引,以便后續能快速檢索。這個過程通常包括以下步驟:

數據加載與分片(Loading & Chunking)

  1. 數據加載:首先,你需要將各種格式的非結構化數據加載進來。這可能需要不同的加載器來處理 PDF、DOCX、Markdown、HTML 等文件。
  2. 分片:加載進來的文檔通常很長,無法直接處理。因此,需要將它們分割成更小、更易于管理的文本塊(Chunks)。分片是 RAG 成功的關鍵之一,分片太大會導致檢索不精確(包含太多無關信息),分片太小又可能丟失上下文。常用的分片策略包括按固定大小分片、按句子或段落分片、或者基于語義內容分片。

向量化與索引(Embedding & Indexing)

  1. 向量化:將每個分片后的文本塊使用一個嵌入模型(Embedding Model)轉換成一個向量(Vector)。這個向量是文本在多維空間中的數學表示,它捕捉了文本的語義信息。語義上相似的文本塊,其對應的向量在空間中的距離會非常接近。
  2. 索引:所有這些向量會被存儲到一個**向量數據庫(Vector Database)**中。向量數據庫專門為高效的相似性搜索而設計,它使用如 HNSW(Hierarchical Navigable Small World)等算法來快速找到與給定向量最相似的其他向量。這個過程就像是為圖書館的每一本書建立一個精確的坐標索引。

2. 在線階段:問答流程

當用戶提出一個問題時,RAG 系統會立即啟動,完成召回、重排、生成這幾個關鍵步驟:

召回(Retrieval)

  1. 查詢向量化:系統首先使用與離線階段相同的嵌入模型,將用戶的查詢(例如,“公司的報銷流程是什么?”)轉換成一個查詢向量。
  2. 向量搜索:系統拿著這個查詢向量,在向量數據庫中進行相似性搜索。它會找出與查詢向量最接近的幾個文檔塊向量。這些向量對應的原始文本塊就是系統認為最相關的候選項,它們被召回以供下一步使用。

重排(Re-ranking)

  1. 召回階段通常會返回幾十甚至上百個潛在相關的文檔塊。但其中有些可能相關性不強,或者存在冗余。重排的目的是對這些召回的文檔塊進行二次排序,以選出真正最相關、最優質的少數幾個。
  2. 重排模型:通常使用一個專門的重排模型(Re-ranker),它比嵌入模型更復雜,能更深入地理解查詢和文檔塊之間的語義關系。重排模型會對每個召回的文檔塊打分,得分最高的幾個(比如前 3-5 個)將被選出作為最終的上下文。這個步驟極大地提高了最終答案的質量和精確度。

生成(Generation)

  1. 構建提示:系統將用戶的原始問題與經過重排篩選出的高質量文檔塊拼接在一起,形成一個完整的、結構化的提示(Prompt)。這個提示通常會明確告訴 LLM:“根據以下提供的上下文信息,回答這個問題:[用戶問題]”。
  2. LLM 推理:這個包含豐富上下文的提示被發送給 LLM。LLM 會利用其強大的語言理解和生成能力,僅基于提供的外部知識,來生成一個連貫、準確且相關的最終答案。
  3. 輸出答案:LLM 生成的答案被返回給用戶。由于答案是基于可追溯的外部知識生成的,這大大降低了模型“幻覺”(編造事實)的可能性,并且讓答案更具可信度。
    它們其實就是把 RAG 拆開的 5 個關鍵環節,從“把資料喂得合適”到“讓模型基于證據作答”的整條流水線

三、RAG 步驟拆分

1. 分片(Chunking)

分片(Chunking)是 RAG 工作流程中離線階段的第一個關鍵步驟,它的核心作用是:將大型、非結構化的原始文檔,切分成更小、更易于管理的文本片段。

這個過程就像是圖書館管理員在整理一批新書時,不是把整本書作為一個整體來處理,而是把每本書的內容拆解成章節、段落或知識卡片,并對每張卡片進行單獨的索引和編號。這樣做是為了方便讀者在查找特定信息時,能快速定位到最小、最相關的部分,而不是被迫去閱讀整本書

分片步驟的主要工作內容

在做什么:把長文檔切成較小的“知識塊”(chunks),避免語義被截斷、也便于精確檢索。

做法:結構:把標題+正文放同一塊;對目錄型/表格型內容用 Parent-Child(命中 child,上下文補 parent)。

① 數據加載(Data Loading)

  1. 在分片之前,首先需要將不同格式的原始數據加載到系統中。這些數據可以是 PDF 文件、Word 文檔、網頁、Markdown 文件,甚至是純文本或 JSON 文件。
  2. 不同的文件類型需要特定的加載器(Loader)來處理,將它們的內容提取出來,準備進行切分。

② 文本切分(Text Splitting)

  1. 這是分片的核心。加載進來的長文本被切分成多個“塊(chunks)”。切分的方式有很多種,具體選擇哪種取決于數據類型和應用場景
  2. 按固定大小切分(Fixed-size Chunking):這是最簡單也最常用的方法。你設定一個固定的大小(例如,512 個字符或 256 個詞),然后沿著這個大小切分文本。為了避免切斷句子的中間,通常會設置一個重(overlap)即相鄰的兩個塊之間有一部分內容是重合的。
  3. 長度:≈ 300–800 中文字符(或 200–500 tokens),10–20% 重疊。
  4. 按分隔符切分(Recursive Character Text Splitting):這種方法會根據一系列分隔符(如 \n\n\n、.、 )來遞歸地切分文本。這是一種更智能的方法,它會優先按段落切分,如果段落太長再按句子切分,直到滿足設定的塊大小。這種方式能更好地保留文本的語義完整性。
  5. 語義切分(Semantic Chunking):這是更高級的方法。它會使用嵌入模型來分析文本的語義,然后根據文本主題或思想的變化來切分。例如,當文本從介紹 RAG 的原理轉到討論它的優點時,就在這里進行切分。

③ 優劣勢

為什么需要:切得好,檢索才“命中要點”;切得差,RAG 后面再強也難救。

  1. 克服上下文窗口限制:大型語言模型(LLM)的輸入長度是有限的(通常幾千到幾萬個 token)。如果文檔太長,直接將整個文檔喂給 LLM 是不可行的。分片讓我們可以只向 LLM 提供最相關的、小塊的信息。
  2. 提高檢索準確性:一個大文檔可能包含多個主題。如果將整個文檔作為一個整體進行向量化,它的向量會變得“模糊”,因為它代表了多個主題的混合。而將文檔切分成小塊后,每個塊的向量會更精確地代表其內容,從而在檢索時能更準確地匹配用戶的查詢。
  3. 降低“噪音”:在一個長文檔中,真正與查詢相關的可能只有一兩個段落。如果將整個文檔都送給 LLM,無關的信息可能會干擾 LLM 的判斷,甚至導致它“分心”,從而生成一個質量較低或不準確的答案。分片確保了只有最相關的部分被用來生成答案,減少了“噪音”的干擾。
  4. 常見坑:塊太長(噪聲大、成本高)、太短(語義丟失)、無重疊(句子被劈斷)。

總結,分片是將一個大問題拆解成小問題,將復雜信息細化為可管理單元的過程,為后續的向量化、索引和高效檢索奠定了堅實的基礎。

2. 索引(Indexing)

索引(Indexing)是 RAG 工作流程中離線階段的第二個關鍵步驟。在分片(Chunking)之后,索引的核心任務是:將分片后的文本數據,轉換為一種可以被計算機快速搜索和檢索的格式,并進行存儲。

這個過程就像是圖書館管理員給每張知識卡片(即分片)打上一個獨一無二的、包含了其內容精髓的“編碼”,然后把這些編碼放入一個特制的卡片柜(向量數據庫)中,以便在未來需要時,能通過這個編碼快速找到對應的卡片。

索引步驟的主要工作內容

在做什么:把分片后的塊“編目入庫”,以便快速查找。

① 兩類索引(實際常“混合用”):

  1. 向量索引:用嵌入模型把塊轉成向量,存 FAISS / Milvus / pgvector 等;擅長同義表達的語義匹配。
  2. 關鍵詞倒排索引:BM25/Elastic;擅長精確詞匹配、數字/代號/條款號檢索。
  3. 元數據(metadata):給每塊打標簽(語種、時間、類目路徑、權限等),便于檢索時過濾。

② 向量化(Embedding)

  1. 核心動作:使用一個嵌入模型(Embedding Model),將每一個分片好的文本塊轉換成一個向量(Vector)。
  2. 為什么這樣做:這個向量是文本在多維空間中的數學表示。它捕捉了文本的語義信息。在向量空間中,語義上相似的文本塊(即使它們使用的詞語不完全相同),其對應的向量在空間中的位置也更接近。
  3. 重要性:向量化是索引的核心,它將人類可讀的語言信息轉化成了計算機可以高效處理的數值信息。沒有這個步驟,后續的相似性搜索就無法進行。

③ 存儲與構建索引(Storing & Index Building)

  1. 核心動作:將所有分片文本的向量,連同其原始文本內容和元數據(如文檔 ID、章節名等),一起存儲到一個專門的**向量數據庫(Vector Database)**中。
  2. 為什么這樣做:傳統的數據庫(如關系型數據庫)不擅長處理高維向量的相似性搜索。向量數據庫則專門為此類任務而設計。它利用先進的索引算法,如 HNSW(Hierarchical Navigable Small World)、Faiss 或 ScaNN,來構建一個高效的索引結構。
  3. 技術細節:這些索引結構允許向量數據庫在處理數百萬甚至數十億個向量時,依然能以毫秒級的速度找到與給定向量最相似的鄰居。它們通過犧牲極小的精確度(這就是近似最近鄰搜索)來換取巨大的搜索速度提升,這對于實時響應的用戶查詢至關重要。

④ 優劣勢

為什么需要:索引是 RAG 系統性能和可擴展性的關鍵,它解決了以下幾個問題:

  1. 高效檢索:索引使得系統能夠快速地從海量數據中找到相關信息,而不是進行耗時的線性搜索。
  2. 語義匹配:傳統的關鍵詞搜索(如 BM25)無法理解語義,它只能匹配字面上的詞匯。而向量索引能夠進行語義匹配,即使查詢和文檔使用的詞匯不同,只要它們表達的是相同的意思,也能被正確地檢索出來。
  3. 可擴展性:隨著知識庫的增長,索引能夠確保系統的檢索性能不會急劇下降。
    常見坑:用錯嵌入模型(跨語種偏差)、沒做去重/清洗、缺權限過濾導致越權命中。

總結,索引是將經過分片的文本數據從原始狀態轉化為可檢索的“知識資產”,為后續的召回、重排和生成奠定了堅實的技術基礎。

3. 召回(Retrieval / 粗排)

召回(Retrieval)是 RAG 工作流程中至關重要的第一步,其核心目標是:從龐大的外部知識庫中,快速且準確地找到與用戶查詢最相關的少數幾個文檔片段。

這個過程可以形象地比喻為:當一個圖書館管理員接到一個主題請求時,他不會去逐字逐句地閱讀圖書館里的每一本書,而是會根據主題關鍵詞,快速地在目錄或索引卡片上進行查找,找出最有可能包含相關信息的幾本書。

召回步驟的主要工作內容

在做什么:收到用戶問題,先從索引里找一批候選塊。

策略:

  1. Hybrid 檢索最穩:向量 + BM25 合并(可各取 Top-k,再歸一化打分合并)。
  2. 固定 Top-k(例如 20);過小會漏召,過大后續噪聲多。
  3. 可加 metadata filter(例如 language=zh、category="車品"、更新時間≥2025-06)。
    與“召回率”區別:這里“召回”是一個動作階段;評估里“召回率(recall@k)”是一個指標。

① 查詢向量化(Query Embedding)

  1. 核心動作:使用一個嵌入模型(Embedding Model),將用戶的自然語言查詢(例如:“RAG 的工作流程是什么?”)轉換成一個查詢向量(Query Vector)。
  2. 為什么這樣做:這個查詢向量是查詢在多維空間中的數學表示。它捕捉了查詢的語義信息。在向量空間中,語義相似的文本(無論詞匯是否相同),其對應的向量在空間中的位置也更接近。
  3. 重要性:這個向量是進行后續相似性搜索的“鑰匙”,它把用戶的語言問題轉換成了計算機可以高效處理的數字格式。

② 向量數據庫搜索(Vector Database Search)

  1. 核心動作:將上一步生成的查詢向量作為輸入,在預先構建好的向量數據庫中進行搜索。
  2. 為什么這樣做:向量數據庫專門為高效的相似性搜索而優化。它不進行傳統的文本匹配(如關鍵詞搜索),而是計算查詢向量與數據庫中所有文檔塊向量之間的距離或相似度(例如,余弦相似度)。距離越近,相似度越高。
  3. 技術細節:為了在海量數據中實現快速搜索,向量數據庫通常不進行精確搜索,而是使用**近似最近鄰(Approximate Nearest Neighbor, ANN)**算法,如 HNSW、Faiss、ScaNN 等。這些算法犧牲了極小的精確度,換取了指數級的搜索速度提升。
  4. 搜索結果:系統會返回與查詢向量最相似的Top-K個文檔塊向量,通常是幾十到幾百個。這些向量對應的原始文本塊就是初步召回的結果。

③ 結果篩選與返回

  1. 核心動作:將召回的 Top-K 向量轉換回它們對應的原始文本片段。
  2. 為什么這樣做:這些文本片段包含了與用戶查詢相關的潛在信息。它們被打包成一個列表,作為召回結果,傳遞給 RAG 工作流的下一個步驟:重排(Re-ranking)。

④ 優劣勢

為什么需要

  1. 召回率(Recall):如何確保召回的結果中包含了所有真正相關的文檔片段?
  2. 效率(Efficiency):如何在面對數百萬甚至數十億個文檔片段時,依然能做到毫秒級的搜索響應?
  3. 質量(Quality):如何避免召回那些雖然詞匯相似但語義上不相關的“噪聲”文檔片段?
  4. 常見坑:只用向量不管關鍵詞 → 數值/縮寫查不準;只用關鍵詞不管語義 → 換個說法就找不到。

為了應對這些難題,實踐中通常會結合多種召回方法,例如除了基于向量相似度的稠密召回(Dense Retrieval),還可以結合傳統的稀疏召回(Sparse Retrieval),如關鍵詞搜索(BM25),以提高召回的全面性。

4. 重排(Re-ranking / 精排)

重排(Re-ranking)是 RAG 工作流程中的一個關鍵步驟,它發生在召回(Retrieval)之后、生成(Generation)之前。它的核心作用是:對召回階段初步篩選出的文檔片段進行二次精煉,選出真正最相關、最優質的少數幾個,作為最終的上下文輸入給大型語言模型(LLM)

可以把重排比作一個編輯,它的任務是從一個包含幾十篇可能相關的文章草稿中,挑選出最核心、最能支持主題觀點的幾段內容,然后將它們呈交給最終的作者(LLM)。

重排步驟的主要工作內容

在做什么:對“召回的一批候選”做更細的相關性判定,把最相關的 3–8 條放前面。
方法:

  1. 交叉編碼器(cross-encoder):如 Cohere/BAAI/MTEB 系列、或 LLM-as-reranker;效果最好但算力更貴。
  2. 簡單融合:把向量分+BM25分做 Reciprocal Rank Fusion (RRF) 也有奇效。

① 接收召回結果

重排階段接收來自召回模塊的輸入。這個輸入通常是一個包含 Top-K 個(比如 50 到 100 個)文檔片段的列表。這些片段都是通過向量相似度搜索找到的,它們雖然與查詢相關,但相關性有高有低,甚至可能存在冗余信息。

② 深度語義分析與打分

這是重排的核心。重排模型(通常是一個比嵌入模型更復雜、更強大的模型)會同時分析用戶查詢和每個召回的文檔片段。

它不像召回階段那樣只關注向量距離,而是進行更細致的**交叉注意力(cross-attention)**計算,深度理解查詢和文檔片段之間的語義關系。這能捕捉到更微妙的關聯性,例如:

  1. 某個文檔片段雖然與查詢的關鍵詞不完全匹配,但其語義是完美的答案。
  2. 某個文檔片段雖然包含關鍵詞,但實際上是在討論一個不相關的概念。
  3. 重排模型會為每個文檔片段計算一個新的相關性得分。

③ 重新排序與精選

根據上一步計算出的新得分,對所有召回的文檔片段進行重新排序。

最終,只選擇得分最高的少數幾個(比如 3-5 個)文檔片段。這些被精選出的片段就是最終會作為上下文,送給 LLM 進行生成。

④ 優劣勢

為什么重要:RAG 的質量上限,很大程度由重排是否把“對的證據”放到最前決定。重排是提高 RAG 系統質量的關鍵,它解決了召回階段的一些固有局限性:

  1. 召回的“噪音”問題:向量搜索雖然快,但有時會因為語義的微妙差異或多義性,召回一些相關性不高的文檔。重排可以過濾掉這些“噪音”。
  2. 上下文的限制:大型語言模型的輸入窗口(上下文長度)是有限的。如果直接把召回的幾十個文檔片段都塞進去,不僅會浪費計算資源,還可能稀釋掉真正有用的信息,導致 LLM 生成的答案不夠精確。
  3. 提升答案質量:通過精選出最相關的文檔片段,重排確保了 LLM 在生成答案時所依賴的上下文是最高質量的,這直接提高了最終答案的準確性和可信度,并有效減少了“幻覺”的發生。
  4. 常見坑:直接把召回的 Top-20 全塞給大模型——貴且亂;或重排閾值太嚴導致“沒證據”。

總結,重排是一個“去粗取精”的過程,它將召回階段的“廣撒網”結果,通過更精細的“二次篩選”,轉化為高質量的、可以直接用于生成的上下文。

5. 生成(Generation)

生成(Generation)是 RAG 工作流程的最后一個關鍵步驟,也是將所有前期準備工作轉化為最終用戶答案的環節。簡單來說,這是 RAG 系統的核心產出階段。

可以把這個步驟想象成:一位作家(LLM)從圖書館管理員(檢索與重排)那里拿到了所有最相關的參考資料(上下文),然后根據這些資料,撰寫出最終的文章(答案)。

生成的主要工作內容

在做什么:把“問題 + 最終證據塊們”放進提示詞,讓大模型嚴格依據證據組織答案,并引用來源。

① 最佳實踐:

  1. 明確規則:“若證據不足,要直說不知道/需人工;必須引用 [文檔名 §小節]”。
  2. 控制長度與結構化輸出(如 JSON),避免模型自由發揮。

② 構建增強提示(Prompt Construction)

這是生成階段的第一步,也是最重要的一步。系統會將用戶的原始問題和重排后精選出的高質量文檔片段(上下文)結合起來,形成一個完整的、結構化的提示(Prompt)。

這個提示的設計至關重要,它會清晰地告訴 LLM 應該做什么。一個好的提示通常會包含:

  1. 明確的指令:例如,“根據以下提供的上下文信息,回答這個問題。”
  2. 注入的上下文:重排后篩選出的 3-5 個最相關的文檔片段。
  3. 用戶的原始問題:例如,“RAG 有什么優點?”

③ LLM 推理(LLM Inference)

  1. 構建好的增強提示被發送給一個大型語言模型(LLM)。
  2. LLM 會利用其強大的語言理解和生成能力,嚴格地基于提供的上下文來生成答案。它不再依賴其自身訓練時的參數記憶,而是將外部知識作為唯一的事實來源。
  3. 這個過程就像是 LLM 在一個“受限的環境”中工作,它被明確告知“你只能從給定的文本中尋找答案,不能編造任何信息”。這大大降低了“幻覺”(Hallucination,即模型編造或虛構事實)的風險。

④ 格式化與輸出

LLM 生成的答案通常是純文本形式。

系統可能會對答案進行一些后處理,例如格式化為 Markdown(加粗、列表、標題等)、檢查語法或邏輯流暢度,以確保最終呈現給用戶的答案清晰、易讀。

最后,將格式化好的答案返回給用戶。

⑤ 優劣勢

為什么重要

  1. 準確性與可信度:生成階段的答案是基于可驗證的、外部的知識源,而不是 LLM 的“記憶”,這使得答案更加準確,用戶可以信任其內容。
  2. 可溯源性:由于答案的生成依賴于特定的上下文,RAG 系統可以輕松地提供這些來源文檔的鏈接或引用,讓用戶可以追溯和驗證答案的真實性。
  3. 彌補 LLM 知識的不足:LLM 的知識是靜態的,停留在其訓練數據的截止日期。而生成階段依賴于外部知識庫,這意味著系統可以回答關于最新事件、公司內部文檔或任何新信息的問題,而無需重新訓練模型。
  4. 減少幻覺:這是 RAG 最核心的價值之一。通過提供精確的、相關的上下文,RAG 幾乎消除了 LLM 編造事實的可能性,因為模型知道自己有可靠的信息可以依賴。

常見坑:提示詞沒設約束 → 幻覺;把太多噪聲證據塞進去 → 答案漂移。

總結,生成是 RAG 整個流程的終點,它將前兩個階段(召回和重排)精心準備好的“原材料”轉化為一個高質量、可信賴的最終產品,為用戶提供了所需的答案。

總結:(一句話版)

  1. 分片:決定檢索的“顆粒度”。
  2. 索引:決定能否“快速且可過濾地”找到候選。
  3. 召回:先撈到“可能相關”的那一批(粗排)。
  4. 重排:把真正有用的證據排在最前(精排)。
  5. 生成:讓模型在證據的“護欄里”完成回答/分類/摘要,并產出可審計的結果。

缺了任何一個環節,RAG 的“基于證據回答”就不穩;做得越好,準確率、可解釋性、時效性越高。

四、RAG 使用場景

使用場景一

問:假設你是一名汽車工程師,正在開發一款新型電動汽車,并且想讓大模型回答一個非常具體的問題:“特斯拉 Model 3 最新款的電池熱管理系統有什么創新?”

1. 沒有 RAG 的情況

如果沒有 RAG,大模型只能依靠它在訓練時所接觸到的通用知識。它可能知道一些關于特斯拉和熱管理系統的基本信息,但很可能不知道最新款的 Model 3 有哪些具體的創新。它可能會給出一些泛泛而談的答案,甚至會“一本正經地胡說八道”,因為它沒有訪問到最新的、具體的文檔。

2. 使用 RAG 的情況

現在,假設我們為大模型部署了 RAG,并且它的外部知識庫包含了所有特斯拉官方發布的最新技術文檔、新聞稿和專業評測文章。

① 檢索: 當你提出“特斯拉 Model 3 最新款的電池熱管理系統有什么創新?”這個問題時,RAG 會立即去知識庫中搜索與“Model 3”、“電池”、“熱管理系統”和“創新”等關鍵詞相關的文檔。它會找到幾篇描述最新款 Model 3 熱管理系統改進的官方技術文檔和新聞報道。

② 增強:RAG 會將你的問題和這些文檔片段組合成一個提示,發送給大模型,例如:

“請根據以下提供的文檔內容,回答問題:特斯拉 Model 3 最新款的電池熱管理系統有什么創新?

文檔片段 1: ‘最新款 Model 3 引入了集成式熱泵系統,能夠更高效地在制冷和制熱模式之間切換,相比老款提升了 50% 的效率…’

文檔片段 2: ‘電池管理系統(BMS)的軟件算法也得到了升級,能夠根據駕駛習慣和環境溫度動態調整電池溫度,從而延長電池壽命…’

文檔片段 3: …(其他相關信息)”

③ 生成: 大模型收到這個包含具體信息的提示后,就會利用這些信息來生成一個準確且詳細的答案,例如:

“根據最新的技術文檔,特斯拉 Model 3 最新款的電池熱管理系統主要有兩大創新:

集成式熱泵系統: 車輛引入了新的熱泵系統,提高了在不同溫度下的制冷和制熱效率,相比老款提升了 50%。

升級的軟件算法: 電池管理系統的軟件算法也得到了優化,能夠更智能地管理電池溫度,從而有助于延長電池的整體壽命。”

通過這個例子可以看出,RAG 極大地提升了大模型回答特定或最新問題的能力,使其不再局限于訓練數據,而是能夠像一個真正的專家一樣,在查閱了最新資料后給出權威的回答。

使用場景二

給企業內部搭建一個智能客服助手

1. 不使用 RAG 情況下

傳統流程產品知識手冊??LLM??輸出

弊端:

  1. 模型無法讀取所有內容(產品手冊如果幾十上百頁,字數過多,超過上下文窗口大小,模型容易只讀后面、不讀前面,造成信息不準確)
  2. 模型推理成本高(輸入內容過多,所消耗tokens也過多)
  3. 模型推理慢(輸入越多、模型需要消化的內容就越多,模型的輸出就會越慢)

2. 使用 RAG 的情況下

當企業希望利用 RAG 搭建一個智能客服助手時,整個流程會比通用 RAG 流程更加具體和有針對性。這個過程可以分為兩大階段:離線階段(知識庫構建)和在線階段(實時問答)。

第一階段:離線知識庫構建

這個階段的目標是讓智能客服助手“學習”企業的所有內部知識,從而能夠回答客戶的各種問題。

① 數據源收集與加載

收集數據:首先,你需要確定所有可能包含客服所需知識的數據源。這可能包括:

  1. 公司內部文檔:產品手冊、服務協議、技術文檔、FAQ、內部知識庫文章等。
  2. 歷史客服記錄:將過去的客服對話記錄(電話錄音轉錄、聊天記錄等)進行脫敏處理,作為問答的語料庫。
  3. 網頁信息:公司官網、幫助中心、博客、社交媒體上的常見問題。

數據加載:使用特定的工具(如 LlamaIndex 或 LangChain 的文檔加載器)將這些不同格式的數據(PDF、DOCX、HTML、JSON 等)提取出來,為后續處理做準備。

② 數據處理與分片

  1. 清理與預處理:對加載的數據進行清洗,去除無關信息(如頁眉、頁腳、廣告等),并進行統一格式化。
  2. 分片(Chunking):將清理后的長文檔切分成更小的文本塊。對于客服場景,分片策略至關重要。例如,可以按段落或問答對進行分片,確保每個片段都包含一個完整的、有意義的知識點。

③ 索引構建

  1. 向量化(Embedding):使用一個高質量的嵌入模型將每一個文本塊轉換成一個向量。對于客服助手,選擇一個能理解問答語義的嵌入模型非常重要,確保用戶的問題能準確匹配到對應的答案片段。
  2. 元數據添加:除了文本向量,你還應該為每個文檔塊添加元數據,如來源文檔的 URL、文檔類型、創建日期等。這對于后續的答案溯源和審計非常有幫助。
  3. 向量數據庫存儲:將向量和元數據存儲到向量數據庫中。這一步是為了實現毫秒級的檢索速度,確保客服助手能夠快速響應客戶。

第二階段:在線實時問答

當客戶在官網或 App 上發起咨詢時,智能客服助手會立即啟動,完成以下流程:

① 用戶查詢處理

查詢向量化:當客戶輸入問題時(例如,“如何申請退款?”),系統會立即使用與離線階段相同的嵌入模型,將這個問題轉換成一個查詢向量。

② 召回與重排

  1. 召回(Retrieval):系統在向量數據庫中進行相似性搜索,根據查詢向量找到最相似的 Top-K 個文檔塊(例如 20 個)。這些文檔塊包含了潛在的答案信息。
  2. 重排(Re-ranking):為了提升答案質量,重排模型會對這 20 個文檔塊進行二次排序,選擇其中最相關、最核心的幾個(例如 3 個)作為最終的上下文。這能有效排除無關信息,讓 LLM 獲得最干凈的輸入。

③ 增強生成

  1. 構建提示:系統將客戶的原始問題、重排后精選出的上下文以及一個明確的指令(例如,“根據提供的客服知識,回答客戶的退款問題。”)組合成一個增強提示。
  2. LLM 推理:將這個增強提示發送給大型語言模型。LLM 將嚴格依據提供的上下文來生成一個連貫、專業的回答。

④ 答案輸出與后處理

  1. 格式化:LLM 生成的答案會被格式化,以增強可讀性(如使用粗體、列表等)。
  2. 溯源:在答案的底部,可以添加一個鏈接或引用,指向原始的知識文檔,讓客戶可以點擊查看完整信息,增加透明度和信任。
  3. 轉人工選項:如果智能助手無法給出滿意的答案,或客戶提出更復雜的問題,系統應提供無縫轉接人工客服的選項,確保服務不中斷。

3. 為什么 RAG 會成為“默認選項”

  1. 知識隨時更新:不需重訓模型就可更新知識庫(RAG/Atlas/RETRO 強調的核心賣點)
  2. 可解釋/可溯源:外部證據可被展示與審計,便于企業合規與人工復核。
  3. 成本效率:把“長尾知識”放在索引里,用更小模型也能打過超大模型(Atlas 的少樣本結果尤為典型)

4. 為什么要用 RAG?

前面講到了 RAG 的起源、用法等,現在來講一下,為什么要用 RAG,不使用 RAG 直接通過大語言模型不可以呢?主要從以下幾個方面要講一下 RAG 的重要性。

① 解決 LLM 局限性(幻覺、過時知識、成本)

盡管 LLM 具有強大的生成能力,但其存在以下固有局限:

  1. 時效性問題: LLM的訓練數據是靜態的,訓練完成后無法獲取新信息,這意味著它們可能基于舊信息生成響應
  2. 專業性不足:沒有RAG,LLM無法引用信息來源,用戶難以驗證其生成內容的真實性,難以涵蓋所有專業領域的深度知識
  3. 幻覺: LLM可能生成看似合理但事實上不正確或具有誤導性的信息,即所謂的“幻覺” 。這種不可預測性會削弱用戶信任 。
  4. 成本和可擴展性: 使用新數據重新訓練LLM的計算和財務成本極高 。對于龐大且動態的知識庫,擴展傳統LLM也面臨挑戰 。

RAG 通過向 LLM 提供實時、權威的外部信息,直接緩解了這些問題,從而使響應基于事實并減少幻覺 。

② 提升企業 AI 應用價值

對于企業而言,RAG 技術具有重要意義:

  1. 知識資產利用:將企業內部文檔、流程、經驗轉化為可查詢的知識庫
  2. 降低部署成本:無需重新訓練大模型,通過更新知識庫即可獲得最新知識
  3. 增強可信度:提供信息來源,增加AI回答的可追溯性和可信度
  4. 定制化能力:針對特定行業和場景構建專門的知識庫

③ RAG 的核心優勢:事實依據、時效性、信任和控制

RAG 技術為生成式 AI 帶來了多項顯著優勢:

  1. 事實依據: RAG確保LLM的輸出基于來自外部來源的已驗證事實,顯著減少了“生成式AI幻覺” 。
  2. 時效性: 它能夠動態整合最新的研究、統計數據或新聞,克服了LLM訓練數據靜態的局限性 。
  3. 增強用戶信任: RAG允許提供來源歸屬(引用或參考文獻),使用戶能夠驗證信息,從而增強對AI解決方案的信心 。
  4. 成本效益: 與為新數據進行大規模微調或重新訓練LLM相比,RAG是一種更經濟的方法 。
  5. 更強的開發者控制: 開發者對LLM的信息來源擁有更大的控制權,從而更容易進行測試、適應不斷變化的需求以及限制敏感信息的檢索 。

④ 降低運營成本與提高效率

訓練一個大型語言模型需要巨大的計算資源和時間,成本高達數百萬甚至數千萬美元。

允許你使用一個通用的、預訓練好的 LLM,通過在其外部知識庫中添加特定領域的知識,就能讓模型回答專業領域的問題。這比微調(Fine-tuning)模型更加高效且經濟,因為你不需要修改模型的權重,只需更新數據庫即可。

⑤ 適用于特定領域和私有數據

LLM 是通用模型,無法訪問企業的內部數據,例如公司文檔、客戶服務記錄或專有技術手冊。

允許你將這些私有和特定領域的數據作為知識庫,讓 LLM 能夠安全地訪問和利用這些信息,從而構建強大的企業內部知識庫問答系統或智能客服。

總結,RAG 就像是給一個聰明但記憶有限的大腦(LLM)安裝了一個可以隨時更新、隨時查閱的“外部硬盤”。這使得 LLM 不僅能夠回答通用問題,還能處理特定、最新且私有的信息,大大擴展了其應用范圍和可靠性。

5. RAG 系統的挑戰與局限性

上邊講到了 RAG 的重要性,但是 RAG 是萬能的么,并不是,他也有許多的局限性。

① 知識庫質量問題(不準確、偏見、格式)

核心問題:RAG 系統的輸出質量直接取決于其知識庫的質量 。

主要問題:

  1. “垃圾進,垃圾出”: 不準確、過時或有偏見的源內容會導致AI生成不正確或不完整的答案 ()。系統缺乏固有的“謊言檢測器”,會傳播現有的偏見或錯誤。
  2. 覆蓋空白: 缺失的關鍵主題會造成系統無法提供幫助的盲點 。
  3. 信息過時: 在技術等快速變化的領域,昨天的“事實”很快就會變成誤導性信息,如果未能及時更新 。
  4. 明顯偏見: 如果知識庫嚴重傾向于某些觀點,RAG系統將成為一個回音室,將這些偏見傳遞給用戶 。
  5. 格式混亂: 文檔結構不一致可能導致檢索系統遺漏隱藏在格式不佳內容中的重要細節 。

“垃圾進,垃圾出”原則在 RAG 中被放大。雖然這適用于任何 AI 系統,但 RAG 對外部知識的直接依賴意味著知識庫中的缺陷(不準確性、偏見、過時、格式不佳)會立即傳播,并可能導致自信但錯誤的答案,從而損害用戶信任并增加合規風險 。LLM 對于檢索到的上下文缺乏固有的“謊言檢測器”。因此,數據治理、質量控制和知識庫的持續更新對于 RAG 的成功至關重要,通常需要大量的人工驗證 。

② 信息檢索挑戰(語義不匹配、分塊錯誤、排序問題)

核心問題: 即使知識庫完美無缺,檢索組件也可能無法找到正確的信息 。

檢索難題:

  1. 語言脫節/同義詞盲區: 用戶查詢的措辭與文檔內容不同,例如,“遠程辦公”可能導致檢索失敗 。
  2. 分塊噩夢: 不正確的分塊大小(太小導致上下文丟失,太大導致噪聲)會影響檢索效率 。
  3. 排序錯誤: 系統可能優先考慮表面上的詞語匹配而非實際相關性 。
  4. 復雜查詢: 帶有多個條件或細微差別的復雜問題可能被過度簡化,返回通用信息 。
  5. 低精度/低召回率: 檢索到的塊不匹配(低精度)或未能檢索到所有相關塊(低召回率) 。

檢索精度存在“最后一公里”問題。研究反復強調,即使采用高級嵌入技術,初始檢索也常常不完美 。語義不匹配、分塊問題和排序錯誤意味著即使存在相關信息,也可能無法有效地呈現或正確地優先提供給 LLM。

確保最相關信息到達 LLM 的“最后一公里”至關重要。這解釋了混合搜索以及最關鍵的重排序技術的必要性,它們能夠優化初始檢索結果并克服這些固有的局限性。

③ 生成與連貫性問題(沖突來源、上下文遺忘)

核心問題: 檢索到信息后,生成模型可能難以將其合成為連貫、有用的答案,尤其是在處理沖突來源或長時間對話時 。

生成難題:

  1. 沖突來源: 知識庫中相互矛盾的信息可能導致不一致或令人困惑的答案 。
  2. 上下文遺忘: 在長時間對話中,系統可能忘記之前的上下文,導致不相關的響應 。
  3. ?“弗蘭肯斯坦式響應”: 將來自多個來源的內容拼湊在一起可能導致不合邏輯或排序混亂的答案 。
  4. 自信但錯誤的答案: 模型可能生成流暢但事實上不正確且未出現在源文件中的文本 。
  5. 合成癱瘓: 難以將細微、沖突的信息整合為簡單答案 。
  6. 過度依賴增強信息: 模型可能僅僅重復檢索到的內容,而沒有進行適當的合成 。

LLM 的角色從純粹的生成轉向“智能合成”。通過 RAG,LLM 不再是憑空生成,而是受限于檢索到的上下文 。這將其主要挑戰從生成合理文本轉變為將可能分散甚至矛盾的檢索信息

合成為連貫、準確且符合上下文的答案 。“弗蘭肯斯坦式響應”的局限性突出了這一新挑戰。因此,優化 RAG 中的生成階段需要關注 LLM 整合、協調和重述來自多個來源信息的能力,這可能通過針對 RAG 特定任務的微調或高級提示工程來實現。

④ 性能、可擴展性和維護開銷

核心問題: 隨著知識庫的增長和用戶流量的增加,RAG 系統性能可能顯著下降,導致響應時間變慢和基礎設施成本增加 。

擴展噩夢:

  1. 搜索時間慢: 大型知識庫導致搜索速度變慢。
  2. 高 GPU 成本: 高維嵌入和復雜模型計算密集。
  3. 指數級基礎設施成本: 擴展以支持更多文檔和用戶通常需要昂貴的硬件升級。
  4. 延遲瓶頸: 應用程序和數據庫之間的網絡跳躍會增加響應時間(10萬文檔可能增加150-300毫秒)
  5. 維護開銷: 更新文檔涉及計算密集型的重新嵌入、重新索引和重新平衡 ()。這可能導致更新緩慢、版本控制混亂、同步問題和潛在的服務中斷。
  6. 量化損失: 高維嵌入的精度下降。

RAG 從概念驗證到生產就緒存在運營差距。雖然 RAG 提供了顯著的理論優勢,但研究明確指出在規模化部署和維護 RAG 系統方面存在巨大的實際挑戰。管理動態知識庫和大型向量索引的成本、延遲和復雜性是巨大的。這表明學術研究與實際企業對性能、效率和持續運營的需求之間存在差距。因此,構建一個“合格”的 RAG 系統不僅涉及選擇正確的算法,還需要穩健的工程實踐、基礎設施規劃以及持續集成和更新的策略。透明度、可解釋性和倫理問題

⑤ 透明度與可解釋性局限性

核心問題:RAG 系統的決策過程通常不透明,難以理解答案是如何得出的或追溯其來源。

透明度難題:

  1. 不透明的選擇邏輯: 不清楚系統為何選擇某些文檔而非其他文檔。
  2. ?“幽靈來源”: 難以追溯哪些文檔對響應的特定部分做出了貢獻。
  3. 信任問題: 用戶和審計人員無法驗證合成的響應。
  4. 隱藏偏見: 不透明的過程使得系統性偏見難以被發現和修復。
  5. 問責制和透明度: AI系統的普遍倫理問題也適用于RAG。

可解釋性是 RAG 中的倫理要求。RAG 在事實依據和來源歸屬方面的承諾因其在信息檢索和合成方式上的不透明性而受到損害。這帶來了關鍵的倫理和實踐挑戰,尤其是在信任和可審計性至關重要的高風險領域(例如法律、醫療)。“幽靈來源”問題直接與出處的好處相悖。因此,未來的 RAG 開發必須優先考慮可解釋 AI(XAI)技術,以提供清晰的檢索邏輯和來源歸屬,從而增強用戶信任并實現合規性。

2025爆火的RAG技術是什么?從原理到應用全面科普!

6. 工程實施挑戰

成本考量

  1. 存儲成本:大規模向量數據庫的存儲成本
  2. 計算成本:實時向量檢索和模型推理的計算開銷
  3. 維護成本:知識庫更新和系統維護的人力成本

性能瓶頸

  1. 檢索延遲:大規模向量檢索的響應時間
  2. 并發處理:高并發場景下的系統性能
  3. 一致性問題:分布式系統的數據一致性

7. 應用場景限制

知識類型限制

  1. 難以處理高度抽象或創造性的問題
  2. 對隱性知識的捕獲和表達能力有限
  3. 在需要常識推理的場景中表現不佳

實時性要求

  1. 知識更新存在延遲
  2. 難以處理快速變化的信息
  3. 在危機響應等場景中可能不夠及時

五、什么是“合格的 RAG”(Checklist + 目標線)

1. 合格 RAG 系統的特征

關鍵特征:

  1. 高檢索質量: 確保檢索到最相關和最精確的塊。這涉及優化分塊策略、嵌入模型和索引結構。
  2. 事實依據和幻覺緩解: 持續生成基于檢索事實的響應,最大限度地減少不準確性。
  3. 上下文相關性和連貫性: 提供的響應不僅事實正確,而且與用戶意圖相關,并以連貫的方式呈現。
  4. 可擴展性和效率: 隨著數據和用戶流量的增長,系統表現良好,具有可接受的延遲和成本。
  5. 可維護性和時效性: 允許輕松頻繁地更新知識庫,無需昂貴的再訓練或顯著停機。
  6. 透明度和可解釋性: 提供來源歸屬,理想情況下,還能提供對檢索和生成過程的洞察。
  7. 對噪聲和歧義的魯棒性: 能夠優雅地處理不完善的查詢和有噪聲的檢索文檔。
  8. 適應性: 能夠適應不斷變化的用戶期望和特定領域的需求。

2. RAG 性能的關鍵評估指標

答案質量(Generation Quality)

這是最直觀的指標,直接關系到用戶體驗。它衡量 RAG 系統最終生成的答案有多好。

  1. 相關性(Relevance):答案是否與用戶的查詢高度相關?它是否準確地回答了用戶的問題?
  2. 準確性(Faithfulness):答案中的信息是否完全來源于提供的上下文?系統是否添加了任何不屬于源文檔的“幻覺”信息?這是 RAG 系統的核心優勢,也是必須嚴格評估的指標。
  3. 完整性(Completeness):答案是否包含了所有從上下文可以得出的相關信息?它是否遺漏了任何關鍵點?
  4. 流暢性與可讀性(Fluency & Readability):答案的語法是否正確、表述是否流暢、結構是否清晰易讀?

檢索性能(Retrieval Performance)

這是 RAG 系統有效性的基礎。如果檢索環節出了問題,后續的生成環節再優秀也無濟于事。

  1. 命中率(Hit Rate):在召回的 Top-K 文檔中,是否包含了能回答問題的正確文檔?這是一個二元指標(是或否),用來評估召回的有效性。
  2. 排名位置(Rank):正確文檔在召回列表中的排名位置如何?排名越靠前,說明檢索越準確。一個好的 RAG 系統應該將最相關的文檔放在 Top 1。
  3. 上下文相關性(Context Relevance):召回的文檔片段有多相關?評估所有召回文檔與查詢的平均相關性。如果召回了大量不相關的文檔,那會增加“噪音”,影響生成質量。

系統效率(System Efficiency)

合格的 RAG 系統不僅要準確,還要快。

  1. 延遲(Latency):從用戶提問到收到答案所需要的時間。這包括查詢向量化、召回、重排和生成的所有時間。對于實時交互的智能客服,延遲是至關重要的指標。
  2. 吞吐量(Throughput):系統在單位時間內能處理的請求數量。這決定了系統在高并發場景下的承載能力。
  3. 資源消耗(Resource Usage):系統在運行時所需的 CPU、GPU 和內存等資源。一個高效的系統應該在保證性能的前提下,盡可能節省資源。

穩健性與可擴展性(Robustness & Scalability)

一個合格的 RAG 系統應該能夠應對各種復雜情況。

  1. 魯棒性(Robustness):系統在面對不同類型、不同風格的查詢時(例如,口語化、長問題、復雜問題等),是否能保持穩定的性能?
  2. 可擴展性(Scalability):隨著知識庫的不斷增長(例如,從 1000 個文檔到 1000 萬個文檔),系統的檢索性能和響應時間是否能保持穩定?這主要取決于索引和向量數據庫的性能。

3. 提高 RAG 準確性

關鍵設計要點(把準確率做上去)

切塊(Chunking)

300–800 字符常見;圖表/長條目用“父子文檔”(child 塊檢索、parent 塊作為上下文)。

重疊 10–20% 以防語義被截斷;標題要與正文一起入塊。

檢索(Retrieval)

Hybrid = 向量 + 關鍵字 往往最穩。

Top-k 不宜過大(常見 8–20);過大=噪聲多,過小=漏召。

用 Reranker(交叉編碼器) 精排前 3–8 條,召回準度會肉眼提升。

提示(Prompt)

明確“只基于以下資料回答;無法支持時要直說”。

要求引用來源(文檔名+行/節),并說明“不引用 = 不得分”。

對分類場景用受限候選 + 結構化輸出(JSON)。

模型與向量

盡量用與你語種/領域貼合的嵌入模型(中文/跨境電商可選多語種嵌入)。

向量庫選型關注:延遲、并發、過濾條件(metadata filter)、可擴展。

權限與合規

在檢索層做權限過濾(只能看到有權看的塊),避免“越權泄露”。

進階玩法(當基礎版跑通后)

  1. Query Rewriting:拼寫糾錯、同義詞擴展、HyDE(先生成假想答案再檢索)。
  2. Multi-hop / 分步檢索:先找定義,再找數據,再綜合。
  3. Multi-vector / ColBERT:更細粒度的詞-詞交互,提高精排效果。
  4. Graph RAG:把實體與關系抽成圖,適合多跳推理與縱覽。
  5. 長上下文模型 + 壓縮:先用“總結/抽取器”把證據壓成要點再喂給生成模型。
  6. 4緩存(Caching):對高頻問法、穩定文檔做答案緩存,降本提速。

評估與監控(別跳過)

  1. 檢索層:Recall@k、MRR、NDCG(看“該找的有沒有被找回來”)。
  2. 生成層:Faithfulness(與證據一致性)、Correctness(答案對不對)、Conciseness(是否啰嗦)。
  3. 常用工具思路:構造帶標準答案的評測集(含易混樣本),離線對比不同切塊/Top-k/重排策略;線上做 A/B。
  4. 對“類目預測”特別關注:Top-1 / Top-3、拒判率、審閱耗時;把錯例回灌到類目卡。

六、RAG 與 Agent 的關系

RAG 是“知識工具”,Agent 是“調度與決策大腦”。

Agent 的能力很大程度上取決于它能調用和使用的“工具”。RAG 就是 Agent 可以使用的、用來處理特定“知識密集型”任務的強大工具。

1. 工作流程

規劃(Planning):Agent 接收到用戶指令,例如:“幫我分析下公司最新的銷售報告,并總結出關鍵增長點。”

工具選擇(Tool Selection):Agent 意識到這個任務需要查閱內部文檔,而它自己沒有這些信息。這時,它會選擇使用它的**“RAG 工具”**。

工具執行(Tool Execution):

  1. Agent 調用 RAG 工具,將“公司最新的銷售報告”作為查詢輸入。
  2. RAG 工具啟動其內部流程:分片、索引、召回、重排。
  3. RAG 工具從公司的內部知識庫(如 SharePoint、Confluence)中檢索出所有相關的銷售報告片段。
  4. RAG 工具將這些檢索到的片段,連同原始查詢,傳遞給一個 LLM。

結果解析與行動:

  1. LLM 基于 RAG 提供的上下文,生成一份關于銷售報告關鍵增長點的總結。
  2. Agent 接收到這份總結,可能會進一步分析,或者直接將其作為最終答案返回給用戶。

在這個過程中,RAG 并不是 Agent 的全部,而是 Agent 實現特定任務目標的有效手段之一。Agent 還可以使用其他工具來完成不同類型的任務,例如:

  1. 代碼解釋器:用于數據分析和圖表生成。
  2. API 調用工具:用于查詢天氣、發送郵件或執行外部命令。
  3. 網絡搜索工具:用于獲取最新公開信息。

2. 多 Aagent 協作中的 RAG

在多 Agent 系統中,RAG 可以實現:

  1. 知識共享:多個Agent共享同一個知識庫
  2. 專業分工:不同Agent訪問不同的專業知識庫
  3. 協同學習:Agent通過RAG系統交換學習成

總結:關系和區別

2025爆火的RAG技術是什么?從原理到應用全面科普!

所以,你可以這樣理解:Agent 是一個“全能型選手”,它擁有多個工具箱來完成不同的任務。而 RAG 就是其中一個非常重要的“專業工具箱”,專門用來解決 Agent 在執行任務時遇到的知識瓶頸。兩者結合,能夠讓 Agent 變得更加聰明、強大、且能夠應對現實世界中更復雜的挑戰。

七、RAG 與 MCP 的關系

MCP(Model Context Protocol)是把數據源與工具“標準化接入 LLM/Agent”的開放協議——像給 AI 裝了“USB-C”。在 MCP 下,RAG 的“資源(索引/搜索)”與“工具(檢索、重排、摘要)”都可以通過統一接口暴露給模型/代理調用,降低集成成本并增強可觀測性與安全性。

這讓你能把多數據域(文件庫、Git、工單、CRM、數據庫)接成統一檢索層,再由 Agent 調用實現跨源 RAG。

RAG 和 MCP 的關系可以從以下幾個角度理解:

RAG 是 MCP 的一個工具:MCP 的核心是讓 LLM 調用工具。如果這個工具是用來進行文檔檢索的,那么它就是 RAG。因此,一個更高級的 Agent (智能體) 可以使用 MCP 協議,將 RAG 作為其眾多工具之一,來解決需要知識檢索的任務。

共同增強 LLM 的上下文:兩者都旨在為 LLM 提供外部上下文,但方式不同。RAG 側重于靜態、非結構化的知識,而 MCP 更側重于動態、結構化的實時數據和操作。
結合使用以獲得更全面的能力:在實際應用中,RAG 和 MCP 常常被結合使用。例如,一個客服智能助手可能會:

  1. 使用 RAG 從公司的知識庫中檢索產品使用說明和常見問題解答。
  2. 使用 MCP 調用一個 CRM 系統的 API,獲取客戶當前的訂單狀態和賬戶信息。
  3. 最終將這些信息整合起來,提供一個既包含通用知識又針對個人情況的個性化答案。

RAG 在 MCP 框架中的角色

數據連接標準化

  1. MCP為RAG系統提供了標準化的數據接入方式
  2. 支持多種數據源的統一接入:數據庫、API、文件系統
  3. 簡化了RAG系統與不同數據源的集成復雜度

安全性增強

  1. 通過MCP協議管理訪問權限
  2. 提供數據使用的審計跟蹤
  3. 確保敏感數據的安全訪問

可擴展性提升

  1. 支持RAG系統的水平擴展
  2. 便于添加新的數據源和知識庫
  3. 實現跨系統的知識共享

總結

RAG 和 MCP 在 AI 生態中扮演著不同的角色。RAG 是一種特定的檢索技術,用于增強 LLM 對非結構化文檔的理解。而 MCP 是一種更通用的協議,用于讓 LLM 能夠與各種外部系統交互。

將它們結合起來,可以構建出功能更強大的 Agent,讓 AI 系統不僅能知道(通過 RAG),還能行動(通過 MCP),從而解決更復雜、更現實的任務。

八、RAG 在知識庫中的作用

RAG 在知識庫中的作用是:將靜態、龐大的知識庫,轉化為一個動態的、能夠被大語言模型(LLM)高效利用的“活”知識來源。

簡單來說,RAG 就像是為你的知識庫安裝了一個智能的“搜索引擎”和“翻譯器”,它能讓 LLM 輕松地從海量數據中找到答案,并以人類可理解的語言流暢地表達出來。

1. RAG 在知識庫中的具體作用

賦予知識庫“可搜索性”和“可理解性”

  1. 傳統知識庫:傳統的知識庫(如 PDF 文件、維基百科、公司文檔)是靜態的、非結構化的數據,人類可以閱讀,但機器無法直接理解其語義。
  2. RAG 的作用:RAG 通過向量化技術,將知識庫中的每個文檔片段都轉換成一個代表其語義的向量。這個向量就如同一個獨特的“指紋”,讓計算機能夠理解和搜索文本的內在含義,而不僅僅是匹配關鍵詞。這使得知識庫中的信息變得可搜索、可索引,并且能夠被 LLM 所理解。

將知識庫“武裝”給 LLM

  1. LLM 的局限:LLM 本身沒有訪問外部知識的能力,它的知識僅限于訓練時的數據。這導致它無法回答關于最新信息或私有數據的問題,并且可能出現“幻覺”(編造事實)。
  2. RAG 的作用:RAG 充當了 LLM 和知識庫之間的“橋梁”。當用戶提出問題時,RAG 會主動從知識庫中檢索最相關的知識片段,并將這些片段作為上下文提供給 LLM。LLM 借助這些外部信息,能夠生成準確、可靠且有事實依據的答案。這解決了 LLM 自身的知識瓶頸,讓它能夠利用一個外部的、可信的知識源。

提高知識庫的利用效率和價值

  1. 傳統利用方式:在沒有 RAG 的情況下,要想從一個龐大的知識庫中找到答案,可能需要人工進行大量搜索和閱讀。
  2. RAG 的作用:RAG 自動化了這一過程。它能夠快速地從海量數據中精準定位到用戶所需的信息,并直接將其提煉成一個簡潔、完整的答案。這極大地提升了知識庫的利用效率,將一個原本被動存儲數據的“倉庫”,變成了能夠主動提供智能問答的“服務中心”。

總結

RAG 在知識庫中的作用是變革性的。它將一個沉睡的、靜態的知識寶庫,轉變為一個能夠與 LLM 協同工作的動態、智能的知識助手。

通過 RAG,你的知識庫不再僅僅是信息的存儲地,而是能夠:

  1. 實時更新,無需重新訓練 LLM。
  2. 準確回答,減少“幻覺”和錯誤。
  3. 高效利用,快速將知識轉化為價值。

簡而言之,RAG 是讓知識庫“活”起來的關鍵技術,它賦予了 LLM 訪問、理解和利用外部知識的能力。

總結

RAG 是一種強大的 AI 技術,它通過檢索外部知識庫(如企業文檔、網頁)并將其作為上下文注入大型語言模型(LLM)的提示中,從而生成更準確、時效性更高、且無“幻覺”的答案。

相較于單純使用 LLM,RAG 避免了模型知識陳舊和編造事實的問題,其答案可溯源且成本更低,特別適用于需要處理特定領域或私有數據的場景。

RAG 并非獨立存在,它在更宏大的 AI 生態中扮演著關鍵角色:

在 Agent 中,RAG 作為一個核心工具,賦予 Agent 訪問外部知識的能力;

而在 MCP(模型上下文協議)中,RAG 則是其實現知識檢索功能的一種具體方式。通過這種互補協作,RAG 極大地擴展了 LLM 的應用邊界,讓其從一個通用知識的“記憶者”轉變為一個能夠利用特定信息解決實際問題的“專家”。

收藏 10
點贊 73

復制本文鏈接 文章為作者獨立觀點不代表優設網立場,未經允許不得轉載。