【RAG】RAG綜述|一文了解RAG|從零開始(下)

文章目錄

  • 5. RAG的架構
    • 5.1 Naive RAG
    • 5.2 Advanced RAG
      • 5.2.1 檢索前處理和數據索引技術
      • 5.2.2 知識分片技術
      • 5.2.3 分層索引
      • 5.2.4 檢索技術
        • 5.2.4.1 優化用戶查詢
        • 5.2.4.2 通過假想文檔嵌入修復查詢和文檔不對稱
        • 5.2.4.3 Routing
        • 5.2.4.5 自查詢檢索
        • 5.2.4.6 混合搜索
        • 5.2.4.7 圖檢索
        • 5.2.4.8 微調嵌入模型
      • 5.2.5 檢索后技術
        • 5.2.5.1 通過重新排名確定搜索的優先級
        • 5.2.5.2 使用上下文提示壓縮優化搜索結果
        • 5.2.5.3 Corrective RAG
        • 5.2.5.4 擴展查詢
      • 5.2.6 生成技術
        • 5.2.6.1 思維鏈
        • 5.2.6.2 通過 Self-RAG 使系統具備自我反思能力
        • 5.2.6.3 微調LLM
    • 5.3 模塊化RAG
      • 5.3.1 模塊化RAG系統組成
      • 5.3.2 模塊化RAG的工作流程
      • 5.3.3 模塊化RAG的優勢
      • 5.3.4 模塊化RAG的挑戰

本篇是 【RAG】RAG綜述|一文了解RAG|從零開始(下)的后續,重點講解RAG的結構與重點技術。

5. RAG的架構

在這里插入圖片描述

5.1 Naive RAG

這是最簡單的RAG架構,其工作流程為:

  1. 用戶查詢
  2. 檢索信息
  3. 利用prompt技術增強
  4. 將prompt輸入到LLM生成結果

5.2 Advanced RAG

相比于樸素RAG,高級RAG主要優化了索引步驟和生成步驟。高級RAG技術提高了信息檢索和后續內容生成的效率、準確性和相關性。

高級RAG涉及的主要技術:檢索前處理和數據索引技術、知識分片技術、檢索技術、后檢索技術和生成技術。

5.2.1 檢索前處理和數據索引技術

檢索前處理側重在數據進入向量庫或知識圖譜之前提高數據的質量。干凈、格式良好的數據可以提高檢索數據的質量,而嘈雜的數據會顯著降低檢索結果,從而更容易導致LLM幻覺的產生。

預處理數據的常見方法:

  • 增加信息密度:可以通過LLM對查詢進行改寫,總結、提取或清理后查詢信息密度更高。
  • 刪除數據中的重復信息:同樣能用LLM對查詢進行去重,輸出LLM更容易理解、更簡潔的查詢語句。
  • 使用假設問題索引提高索引對稱性
    • 使用語言模型為數據庫中每個數據塊生成一個或多個問題,并將它們與文檔塊一起存儲。這些問題可用于索引。
    • 在檢索的時候,用戶查詢在語義上與模型生成的所有問題匹配。然后索引與用戶查詢類似的問題,然后將與檢索問題關聯的文檔塊傳遞給LLM以生成響應。

5.2.2 知識分片技術

知識分片就是將大文檔分解成較小的文本塊,以便更高效的進行檢索和生成。這些較小的文本塊,稱為chunk,它可以是段落,句子,子句或短語,具體取決于實際應用需求。

常見的分片技術有:

  1. 基于文本長度的切塊:例如固定300個詞或500個字符對文本進行切分。
  2. 滑動窗口技術:這種方法通過在連續的文本塊之間使用重疊區域來進行切塊,確保每個塊都可以包含部分上下文信息。這在需要上下文連貫性的應用中非常有用,比如生成模型需要更大的上下文信息來生成準確的內容。
  3. 基于句子的切塊:按句子對文本進行切分,適用于短且結構簡單的文檔。
  4. 基于語義的切塊:可以根據章節、段落、主題或關鍵字進行切分。這種切分出來的塊更具有語義一致性。
  5. 自然語言處理技術:通過分句、分詞、主題建模等NLP技術對文本進行切分。好處就是能用NLP技術識別到文本中的語義邊界,使得切出來的塊更具語義。

關于chunk優化的代碼實踐:https://blog.csdn.net/2401_85325557/article/details/143359056

5.2.3 分層索引

使用分層索引來提高RAG應用程序的精度。在這種方法中,數據被組織成一個分層結構,信息根據相關性和關系進行分類和子分類。

檢索過程從較寬的數據塊或父節點開始,然后再鏈接到所選父節點的較小數據塊或子節點中進行更集中的搜索。分層索引不僅可以提高檢索效率,還可以最大限度減少最終輸出中包含不相關的數據。

在這里插入圖片描述
在這里插入圖片描述

5.2.4 檢索技術

5.2.4.1 優化用戶查詢

該技術將用戶的查詢重構為LLM更容易理解且檢索器更容易使用的格式。技術實現上可通過微調的語言模型處理用戶查詢,以優化和構建它。此過程會刪除任何不相關的上下文并添加必要的元數據,從而確保查詢針對底層數據存儲進行定制。

例子:
原始:who was the director of the Godfather?
LLM處理后:(Movice: “The Godfather” …)

5.2.4.2 通過假想文檔嵌入修復查詢和文檔不對稱

在這里插入圖片描述

假想文檔嵌入(HyDE)技術是一個新穎且強大的方法。它通過生成一個假想的文檔來增強查詢的檢索效果,再通過嵌入向量查找與假想文檔相似的實際文檔,從而實現更高效的檢索。

在傳統的檢索增強生成(RAG)架構中,用戶的查詢直接用于查找文檔。然而,這種方式可能會受到語義偏差的影響,導致檢索效果不佳。

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

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

相關文章

山東大學軟件學院項目實訓-基于大模型的模擬面試系統-面試官和面試記錄的分享功能(2)

本文記錄在發布文章時&#xff0c;可以添加自己創建的面試官和面試記錄到文章中這一功能的實現。 前端 首先是在原本的界面的底部添加了兩個多選框&#xff08;后期需要美化調整&#xff09; 實現的代碼&#xff1a; <el-col style"margin-top: 1rem;"><e…

FPGA純verilog實現MIPI-DSI視頻編碼輸出,提供工程源碼和技術支持

目錄 1、前言工程概述免責聲明 2、相關方案推薦我已有的所有工程源碼總目錄----方便你快速找到自己喜歡的項目我這里已有的 MIPI 編解碼方案 3、設計思路框架工程設計原理框圖FPGA內部彩條RGB數據位寬轉換RGB數據緩存MIPI-DSI協議層編碼MIPI-DPHY物理層串化MIPI-LVDS顯示屏工程…

LXQt修改開始菜單高亮

開始菜單紅色高亮很難看 mkdir -p ~/.local/share/lxqt/palettes/ mkdir -p ~/.local/share/lxqt/themes/ cp /usr/share/lxqt/palettes/Dark ~/.local/share/lxqt/palettes/Darker cp -p /usr/share/lxqt/themes/dark ~/.local/share/lxqt/themes/darker lxqt-panel.qss L…

DeepSeek-R1-0528-Qwen3-8B 本地ollama離線運行使用和llamafactory lora微調

參考: https://huggingface.co/deepseek-ai/DeepSeek-R1-0528-Qwen3-8B 量化版本: https://huggingface.co/unsloth/DeepSeek-R1-0528-Qwen3-8B-GGUF https://docs.unsloth.ai/basics/deepseek-r1-0528-how-to-run-locally 1、ollama運行 升級ollama版本到0.9.0 支持直接…

vue3 + WebSocket + Node 搭建前后端分離項目 開箱即用

[TOC](vue3 WebSocket Node 搭建前后端分離項目) 開箱即用 前言 top1&#xff1a;vue3.5搭建前端H5 top2&#xff1a;Node.js koa搭建后端服務接口 top3&#xff1a;WebSocket 長連接實現用戶在線聊天 top4&#xff1a;接口實現模塊化 Mysql 自定義 top5&#xff1a;文件上…

Vue 前端代碼規范實戰:ESLint v9、Prettier 與 Stylelint 集成指南與最佳實踐

&#x1f680; 作者主頁&#xff1a; 有來技術 &#x1f525; 開源項目&#xff1a; youlai-mall ︱vue3-element-admin︱youlai-boot︱vue-uniapp-template &#x1f33a; 倉庫主頁&#xff1a; GitCode︱ Gitee ︱ Github &#x1f496; 歡迎點贊 &#x1f44d; 收藏 ?評論 …

docker docker-ce docker.io

Ubuntu安裝 ??更新軟件包列表?? 首先確保軟件包列表是最新的&#xff1a; sudo apt-get update 使用正確的卸載命令?? 替換 docker-engine 為 docker-ce 或 docker.io&#xff1a; sudo apt-get remove docker docker-ce docker.io containerd runc ??檢查已安裝的 Do…

C++ 初階 | 類和對象易錯知識點(下)

目錄 0.引言 1.初始化列表 2.static 靜態成員變量&#xff1a; 靜態成員函數&#xff1a; 3.友元函數 4.內部類 定義&#xff1a; 特點&#xff1a; 應用&#xff1a; 5.優化寫法 6.例題 求和12...n (不能用for/while/if/else等關鍵字) 7.總結 0.引言 今天&…

使用yocto搭建qemuarm64環境

環境 yocto下載 # 源碼下載 git clone git://git.yoctoproject.org/poky git reset --hard b223b6d533a6d617134c1c5bec8ed31657dd1268 構建 # 編譯鏡像 export MACHINE"qemuarm64" . oe-init-build-env bitbake core-image-full-cmdline 運行 # 跑虛擬機 export …

AWS WebRTC:獲取ICE服務地址(part 3):STUN服務和TURN服務的作用

STUN服務和TURN服務的作用&#xff1a; 服務全稱作用是否中繼流量適用場景STUNSession Traversal Utilities for NAT 協助設備發現自己的公網地址&#xff08;srflx candidate&#xff09; ? 不中繼&#xff0c;僅輔助NAT 穿透成功時使用TURNTraversal Using Relays around N…

分析XSSstrike源碼

#用于學習web安全自動化工具# 我能收獲什么&#xff1f; 1.XSS漏洞檢測機制 學習如何構造和發送XSS payload如何識別響應中的回顯&#xff0c;WAF&#xff0c;過濾規則等如何使用詞典&#xff0c;編碼策略&#xff0c;上下文探測等繞過過濾器 2.Python安全工具開發技巧 使…

npm run build 報錯:Some chunks are larger than 500 KB after minification

當我們的 Vue 項目太大&#xff0c;使用 npm run build 打包項目的時候&#xff0c;就有可能會遇到以下報錯&#xff1a; (!) Some chunks are larger than 500 kB after minification. Consider: - Using dynamic import() to code-split the application - Use build.rollup…

【LLM相關知識點】關于LLM項目實施流程的簡單整理(一)

【LLM相關知識點】關于LLM項目實施流程的簡單整理&#xff08;一&#xff09; 文章目錄 【LLM相關知識點】關于LLM項目實施流程的簡單整理&#xff08;一&#xff09;零、學習計劃梳理&#xff1a;結合ChatGPT從零開始學習LLM & 多模態大模型一、大模型相關應用場景和頭部企…

海上石油鉆井平臺人員安全管控解決方案

一、行業挑戰與需求分析 海上鉆井平臺面臨復雜環境風險&#xff08;如易燃易爆、金屬干擾、極端氣象&#xff09;和人員管理難題&#xff08;如定位模糊、應急響應延遲&#xff09;。傳統RFID或藍牙定位技術存在精度不足&#xff08;1-5米&#xff09;、抗干擾能力差等問題&am…

@Docker Compose 部署 Pushgateway

文章目錄 Docker Compose 部署 Pushgateway1. 目的2. 適用范圍3. 先決條件4. 部署步驟4.1 創建項目目錄4.2 創建 docker-compose.yml 文件4.3 啟動 Pushgateway 服務4.4 驗證服務運行狀態4.5 測試 Pushgateway 訪問 5. 配置 Prometheus 采集 Pushgateway 數據6. 日常維護6.1 查…

項目 react+taro 編寫的微信 小程序,什么命令,可以減少console的顯示

在 Taro 項目中&#xff0c;為了減少 console 的顯示&#xff08;例如 console.log、console.info 等&#xff09;&#xff0c;可以通過配置 terser-webpack-plugin 來移除生產環境中的 console 調用。 配置步驟&#xff1a; 修改 index.js 文件 在 mini.webpackChain 中添加 …

Java開發中常見的數值處理陷阱與規避方法

八進制字面量的誤用問題 歷史背景與語法特性 由于歷史原因,Java保留了八進制字面量的支持。八進制字面量以數字0開頭,例如037表示十進制數31(計算方式:38 + 7 = 31)。這種表示法在現代編程中極少使用,唯一合理的應用場景是表示Unix文件權限(如0644表示用戶可讀寫,組和…

Lua5.4.2常用API整理記錄

一、基礎函數 1.type(value)?? 返回值的類型&#xff08;如 "nil", "number", "string", "table", "function" 等&#xff09;。 代碼測試&#xff1a; a 0 print(type(a)) a nil print(type(a)) a "aaaaaaaa&…

2025.5.29 學習日記 docker概念以及基本指令

Docker&#xff1a; Docker 是一種開源的容器化平臺&#xff0c;用于快速部署應用程序&#xff0c;實現開發、測試和生產環境的一致性。 一、Docker 核心概念 鏡像&#xff08;Image&#xff09; 只讀的模板文件&#xff0c;用于創建容器&#xff0c;類似虛擬機的鏡像&#x…

明遠智睿SSD2351開發板:語音機器人領域的變革力量

在人工智能快速發展的今天&#xff0c;語音機器人逐漸成為人們生活和工作中的得力助手。明遠智睿SSD2351開發板憑借強大性能與豐富功能&#xff0c;為語音機器人的發展注入新動力&#xff0c;成為該領域的變革力量。 SSD2351開發板的四核1.4GHz處理器具備強勁的運算性能&#x…