人工智能-基礎篇-18-什么是RAG(檢索增強生成:知識庫+向量化技術+大語言模型LLM整合的技術框架)

RAG(Retrieval-Augmented Generation,檢索增強生成)是一種結合外部知識檢索與大語言模型(LLM)生成能力的技術框架,旨在提升生成式AI在問答、內容創作等任務中的準確性、實時性和領域適應性。

1、核心概念

大語言模型(LLM)的兩大局限性:

  • 時效性不足:LLM的訓練數據截止于某一時間點,無法獲取最新信息(如2025年后的新事件)。
  • 知識幻覺:當問題超出模型訓練數據范圍時,LLM可能生成虛假或過時信息。

RAG的核心目標:
解決如上LLM的兩大局限性。通過動態檢索外部知識庫,為LLM提供實時、可信的上下文,從而生成更精準的回答。

技術本質:
RAG的本質是In-Context Learning(上下文學習),即通過“檢索 + 提示詞增強”的方式,讓LLM在生成答案時參考外部知識,而非僅依賴模型內部的靜態參數知識。

2、RAG系統的核心組件

1、知識庫

  • 存儲企業的所有文檔、FAQ、產品手冊等資料。
  • 可以是PDF、Word文檔、網頁、數據庫記錄等多種格式。

2、嵌入模型(Embedding Model)

  • 負責將文本內容轉換為高維向量表示。
  • 常用的嵌入模型包括Sentence-BERT、OpenAI的text-embedding-ada-002等。

3、向量數據庫

  • 存儲經過嵌入模型處理后的向量。
  • 提供高效的相似度搜索功能,幫助快速找到與查詢最相關的文檔片段。
  • 常見的向量數據庫有FAISS、Pinecone、Weaviate、Milvus等。

4、生成模型

  • 接收檢索到的相關文檔片段作為上下文,生成最終的回答。
  • 常用的生成模型包括T5、BART、GPT系列等。

3、工作流程

RAG的核心思想:
先從一個大型文檔集合中檢索出與輸入查詢最相關的片段或文檔,然后將這些檢索到的信息作為額外的上下文提供給一個大語言生成模型LLM。

這種方法允許生成模型不僅依賴于其訓練數據中的知識,還能利用最新的、外部的信息源來生成更準確、更有針對性的回答。

RAG的典型流程分為三個階段:

(1)檢索(Retrieve)

  • 輸入:用戶的查詢(如“最新的AI技術進展”)。
  • 過程:
    • 將用戶輸入的查詢信息通過嵌入模型(Embedding Model)轉換為向量(語義表示)。
    • 在外部知識庫(如向量數據庫)中,通過相似度計算(如余弦相似度)快速匹配最相關的文檔或段落。
  • 具體步驟:
    • 預處理階段:在系統初始化時,所有知識庫內容會被切分成小塊(chunk),并通過嵌入模型轉換為向量形式存儲在向量數據庫中。
    • 實時查詢階段:用戶的輸入問題也會被轉化為向量,并與向量數據庫中的向量進行相似度比較(如余弦相似度)。然后選出最匹配的若干個文檔片段。
  • 關鍵技術:
    • 向量檢索:高效匹配語義關聯內容(如Elasticsearch、Weaviate、FAISS)。
    • 多模態檢索(如RAG-Anything項目):支持文本、圖像、表格等多類型數據的聯合檢索。

即:根據用戶的查詢,通過檢索組件,從知識庫或者文檔集中找到最相關的文檔或段落。

(2)增強(Augment)

  • 過程:
    • 將檢索到的相關文檔與用戶查詢組合成提示詞模板(Prompt Template)。
    • 提示詞通常包含:用戶問題、檢索到的上下文、任務指令(如“基于以下信息回答問題”)。
  • 目的:
    為LLM提供具體且相關的背景信息,引導其生成準確答案。

即:將檢索得到的文檔或段落等內容與原始查詢一起傳遞給生成模型。

(3)生成(Generate)

  • 過程:
    • 將增強后的提示詞輸入LLM(如GPT、Llama、通義千問)。
    • LLM基于提示詞中的上下文生成最終答案。
  • 具體步驟:
    • 將檢索到的相關文檔片段與原始問題一起傳遞給生成模型。
    • 生成模型根據這些信息合成一段連貫的回答。
  • 優勢:
    答案既融合了LLM的推理能力,又依賴外部知識庫的實時信息,減少幻覺和過時內容。

即:生成模型結合增加的內容,產生最終的答案或響應。

4、RAG的優勢

在這里插入圖片描述

  • 提升準確性:通過引入外部知識庫,檢索最新或特定領域的知識,確保提供的答案是最新的且準確的。。
  • 增強靈活性:允許系統針對特定領域的最新信息進行更新,而無需重新訓練整個模型。

5、實現RAG系統的基本步驟

1、準備知識庫

  • 收集并整理企業內部的所有文檔資料。
  • 這些資料可以是PDF、Word、Excel、Markdown文件等形式。

2、構建向量數據庫

  • 使用嵌入模型將知識庫中的每個文檔片段轉換為向量。
  • 將這些向量存儲在一個向量數據庫中,以便后續進行高效檢索。

python示例:(向量存儲示例)

from sentence_transformers import SentenceTransformer
import faiss# 加載嵌入模型
model = SentenceTransformer('all-MiniLM-L6-v2')# 準備一些示例文檔
documents = ["點擊‘忘記密碼’鏈接,輸入您的郵箱地址。","如果您忘記了密碼,請聯系客服支持。","為了安全起見,請定期更改密碼。"]# 將文檔轉換為向量
vectors = model.encode(documents)# 初始化FAISS索引
index = faiss.IndexFlatL2(vectors.shape[1])# 添加向量到向量數據庫FAISS
index.add(vectors)

3、集成檢索模塊

  • 當用戶提問時,將問題也轉換為向量,并在向量數據庫中查找最相似的文檔片段。

python示例:(用戶查詢轉向量匹配獲取知識庫片段)

query = "如何重置密碼?"
query_vector = model.encode([query])# 在FAISS中查找最相似的文檔片段
distances, indices = index.search(query_vector, k=3)# 輸出檢索結果
for idx in indices[0]:print(f"檢索到的文檔片段: {documents[idx]}")

4、集成生成模塊

  • 將檢索到的相關文檔片段與原始問題一起傳遞給生成模型,生成最終的回答。

python示例:(調用模型,生成輸出內容)

from transformers import pipeline# 加載生成模型
generator = pipeline('text-generation', model='facebook/bart-large-cnn')# 獲取檢索到的相關文檔片段
retrieved_docs = [documents[idx] for idx in indices[0]]# 將問題和檢索到的文檔片段拼接起來作為輸入
input_text = f"{query} \n Context: {' '.join(retrieved_docs)}"
response = generator(input_text, max_length=100)print(response[0]['generated_text'])

5、部署與優化

  • 部署到生產環境,并根據實際使用情況進行調優,如調整檢索參數、優化生成模型等。

6、典型應用場景

1、企業問答系統

  • 示例:員工查詢公司政策時,RAG可從內部文檔、FAQ庫中檢索最新信息并生成回答。

2、醫療輔助診斷

  • 示例:結合醫學知識圖譜(如癥狀-疾病-藥物關系)和患者病歷,生成個性化診療建議。

3、金融風控分析

  • 示例:通過檢索企業財報、供應鏈關系圖譜,生成風險評估報告。

4、智能客服

  • 示例:實時檢索產品手冊和用戶歷史記錄,提供個性化問題解決方案。

5、對話系統

  • 示例:幫助聊天機器人更好地理解和回應用戶的需求,尤其是在涉及專業術語或最新資訊的話題上。

7、技術演進與擴展

(1)經典RAG(Naive RAG)

基礎流程為“索引-檢索-生成”,適用于簡單場景。

(2)模塊化RAG(Modular RAG)

支持更復雜的檢索策略(如分塊預處理、多跳檢索)和結果優化(如去重、排序)。

(3)智能體RAG(Agentic RAG)

結合智能體架構(Agent),自動規劃檢索路徑、調用工具鏈(如數據庫查詢、API接口)。

(4)GraphRAG

引入知識圖譜(Knowledge Graph),通過實體關系網絡實現邏輯推理(如多跳問答)。例如:

  • 問題:“哪位導演執導了湯姆·漢克斯主演且獲奧斯卡最佳影片的電影?”
  • 推理路徑:湯姆·漢克斯 → 主演電影 → 篩選奧斯卡獲獎影片 → 獲取對應導演。

8、挑戰與未來方向

  • 挑戰:
    • 知識庫質量:低效的檢索或錯誤數據會導致生成結果偏差。
    • 多模態融合:如何統一處理文本、圖像、表格等異構數據(如RAG-Anything項目)。
  • 未來方向:
    • 實時動態知識更新:結合流式數據處理(如Kafka、Flink)實現知識庫的實時同步。
    • 增強推理能力:通過知識圖譜與因果推理模型提升復雜問題解決能力。

9、總結

RAG是連接大語言模型與外部知識世界的橋梁,通過“檢索 + 生成”的協同,解決了LLM的知識局限性和幻覺問題。通過這種架構,不僅可以提供更加準確的回答,還能顯著提高系統的靈活性和可維護性。

RAG已成為企業級AI應用的核心技術(如AWS Bedrock、Azure Databricks的RAG解決方案),并在醫療、金融、教育等領域發揮重要作用。隨著多模態處理和智能體架構的發展,RAG將進一步推動AI系統向更智能、更高效的混合式系統演進。

向陽而生,Dare To Be!!!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/87769.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/87769.shtml
英文地址,請注明出處:http://en.pswp.cn/web/87769.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

CppCon 2018 學習:What do you mean “thread-safe“

什么是“線程安全”? “線程安全”指的是一個函數、方法或代碼塊能夠在多個線程同時執行時,不會出現意外的交互或破壞共享數據,能夠安全地運行。 POSIX 對線程安全的定義很清楚: “一個線程安全的函數可以在多個線程中被安全地并…

熱方程初邊值問題解法

已知公式: u ( x , t ) ∫ ? ∞ ∞ G ( x , y , t ) g ( y ) d y . u(x,t)\int_{-\infty}^{\infty}G(x,y,t)g(y)dy. u(x,t)∫?∞∞?G(x,y,t)g(y)dy. (1) 其中 G ( x , y , t ) 1 2 k π t e ? ( x ? y ) 2 4 k t G(x,y,t)\frac{1}{2…

怎樣理解:source ~/.bash_profile

場景復現 $ source ~/.bash_profileAnalysis 分析 一句話概括 source ~/.bash_profile “在 當前 終端會話里,立刻執行并加載 ~/.bash_profile 中的所有命令,讓其中定義的環境變量、函數、alias 等即時生效,而無需重新登錄或開新 Shell。…

搜索問答技術概述:基于知識圖譜與MRC的創新應用

目錄 一、問答系統應用分析 二、搜索問答技術與系統 (一)需求和信息分析 問答需求類型 多樣的數據源 文本組織形態 (二)主要問答技術介紹 發展和成熟度分析 重點問答技術基礎:KBQA和DeepQA KBQA(…

TCP數據的發送和接收

本篇文章結合實驗對 TCP 數據傳輸中的重傳機制、滑動窗口以及擁塞控制做簡要的分析學習。 重傳 實驗環境 這里使用兩臺騰訊云服務器:vm-1(172.19.0.3)和vm-2(172.19.0.6)。 超時重傳 首先 vm-1 作為服務端啟動 nc…

python 保存二維數組到本地

Python中保存二維數組有多種方法,以下是常用的幾種方式:1. 使用NumPy(推薦)import numpy as np# 創建二維數組 arr np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])# 保存為.npy文件(NumPy專用格式) np.save…

LIN總線通訊中從節點波特率同步原理

波特率同步原理:從節點如何通過0x55校準時鐘? 一、同步場的核心作用:統一“時間標尺” 在LIN總線中,主節點與從節點各自擁有獨立的時鐘源(如MCU內部RC振蕩器),但由于制造工藝差異,…

【Unity筆記02】訂閱事件-自動開門

流程 當玩家移動到觸發區域的時候,門自動打開 事件系統 using System; using System.Collections; using System.Collections.Generic; using UnityEngine;public class EventSystem : MonoBehaviour {public static EventSystem Instance { get; private set; }…

控制臺字符動畫

旋轉的立方體 #include <cstdint> #include <cstdio> #include <iostream> #include <cstring> #include <cmath> #include <cstdlib> #include <ctime> #include <thread> using namespace std;float angleX .0f; float a…

基于 PyTorch 的貓狗圖像分類實戰

基于 PyTorch 的貓狗圖像分類實戰 項目背景簡介 深度學習框架 PyTorch 因其動態計算圖和靈活易用性&#xff0c;被廣泛應用于圖像分類等計算機視覺任務。在入門計算機視覺領域時&#xff0c;常常以手寫數字識別&#xff08;MNIST&#xff09;作為 “Hello World”&#xff0c…

SwiftUI 7(iOS 26 / iPadOS 26)中玻璃化標簽頁的全新玩法

&#x1f378; Liquid Glass 登場&#xff1a;界面設計煥然一新 WWDC25 可謂驚喜連連&#xff0c;其中最引人矚目的變革之一&#xff0c;莫過于蘋果推出的全新跨平臺設計語言 —— Liquid Glass&#xff08;液態玻璃&#xff09;。這一設計風格涵蓋了從按鈕到導航欄&#xff0…

PDF處理控件Spire.PDF教程:在Java中讀取PDF,提取文本、圖片和表格

在數據驅動的現代開發中&#xff0c;高效處理 PDF 文檔已成為 Java 開發者不可或缺的核心能力。無論是處理各類發票掃描件、業務分析報告&#xff0c;還是包含豐富圖表的技術文檔&#xff0c;掌握 Java 版的 PDF 解析技術都將大幅提升數據處理效率&#xff0c;充分釋放文檔中的…

跨平臺游戲引擎 Axmol-2.7.0 發布

Axmol 2.7.0 版本是一個以錯誤修復和功能改進為主的次要LTS長期支持版本 &#x1f64f;感謝所有貢獻者及財務贊助者&#xff1a;scorewarrior、peterkharitonov、duong、thienphuoc、bingsoo、asnagni、paulocoutinhox 重大變更 Android Studio 最低版本要求升級至 2025.1.1…

XML 筆記

<image src"hue.gif" width"100" height"auto" align"left"/> <br/> 換行 在 XML 中&#xff0c;<![CDATA[ 和 ]]> 用于定義一個 CDATA 節&#xff08;Character Data Section&#xff09;。CDATA 節是用于將一段…

Python實現優雅的目錄結構打印工具

Python實現優雅的目錄結構打印工具 在軟件開發、系統管理和日常工作中&#xff0c;我們經常需要查看和分析目錄結構。 工具功能概述 這個DirectoryPrinter類提供了以下功能&#xff1a; 遞歸打印目錄結構可配置是否顯示隱藏文件可設置最大遞歸深度自定義縮進和文件/文件夾符…

【Python】文件打開:with open具體解析

示例 # 使用 with 語句打開文件并讀取內容 with open(pi.txt, r) as file_object:contents file_object.read()print(contents) # 文件在代碼塊結束后自動關閉with 解析 with 是 Python 中的上下文管理器語法&#xff0c;用于確保某個操作完成后自動執行清理操作。它常用于文…

Acrel-1000系列分布式光伏監控系統在湖北荊門一馬光彩大市場屋頂光伏發電項目中應用

摘 要&#xff1a;分布式光伏發電能夠對日益嚴重的環境壓力起到有效緩解作用,在當前對環境保護需求越來越大情況下,發電行業在發展中不但要提升發電效率,同時也需要降低成本。分布式光伏發電主要是利用風能和太陽能等可再生清潔能源進行發電,對于空氣質量具有改善效果,和傳統發…

CentOS-6與CentOS-7的網絡配置IP設置方式對比 筆記250706

CentOS-6與CentOS-7的網絡配置IP設置方式對比 筆記250706 1?? 參考 1 CentOS-6 與 CentOS-7 的網絡配置IP設置方式對比 CentOS 6 和 CentOS 7 在網絡配置上存在顯著差異&#xff0c;主要體現在配置文件結構、管理工具、服務機制和命令集等方面。以下是兩者的核心對比&#x…

【網絡系列】HTTP 429 狀態碼

博客目錄 HTTP 429 狀態碼的定義與背景產生 429 錯誤的常見場景1. API 速率限制觸發2. 網絡爬蟲行為被檢測3. 分布式拒絕服務(DDoS)防護4. 用戶/IP 特定限流策略5. 應用程序邏輯錯誤 深入解讀 429 響應的關鍵頭部信息Retry-After 頭部X-RateLimit 系列頭部RateLimit 標準化頭部…

C++無鎖數據結構:CAS(Compare-and-Swap)

在高并發場景下&#xff0c;傳統鎖機制帶來的線程阻塞和上下文切換開銷成為性能瓶頸。無鎖數據結構通過原子操作實現線程安全&#xff0c;避免了鎖的使用&#xff0c;成為高性能系統的關鍵技術。本文將深入探討C中基于CAS&#xff08;Compare-and-Swap&#xff09;的無鎖數據結…