了解 RAG 第二部分:经典 RAG 的工作原理

在本系列的第一篇文章中,我们介绍了检索增强生成 (RAG) ,解释了扩展传统大型语言模型 (LLM)功能的必要性。我们还简要概述了 RAG 的核心思想:从外部知识库检索上下文相关的信息,以确保 LLM 生成准确且最新的信息,而不会产生幻觉,也不需要不断地重新训练模型。
本系列的第二篇文章揭秘了传统 RAG 系统运行的机制。尽管如今随着人工智能的迅猛发展,许多增强版和更复杂的 RAG 版本几乎每天都在不断涌现,但要了解最新的先进 RAG 方法,第一步是先理解经典的 RAG 工作流程。
经典 RAG 工作流程
典型的 RAG 系统(如下图所示)处理三个关键的数据相关组件:
-
LLM从训练数据中获取知识,通常是数百万到数十亿的文本文档 。
-
向量数据库,也称为知识库,用于存储文本文档。但为什么叫向量数据库呢?在 RAG 和整个自然语言处理 (NLP) 系统中,文本信息被转换为称为向量的数字表示,以捕获文本的语义。向量表示单词、句子或整个文档,保留原始文本的关键属性,以便两个相似的向量与具有相似语义的单词、句子或文本片段相关联。将文本存储为数字向量可提高系统的效率,从而快速找到和检索相关文档。
-
用户以自然语言提出的查询或提示。

简而言之,当用户用自然语言向配备 RAG 引擎的 LLM 助手提出问题时,在发送问题和接收答案之间会发生三个阶段:
-
检索:称为检索器的组件访问向量数据库来查找和检索与用户查询相关的文档。
-
增强:通过整合从检索到的文档中的上下文知识来增强原始用户查询。
-
生成:LLM(从 RAG 角度也通常称为生成器)接收添加了相关上下文信息的用户查询,并生成更精确、更真实的文本响应。
检索器Retriever内部
检索器是 RAG 系统中的组件,用于查找相关信息以增强 LLM 稍后生成的最终输出。您可以将其想象成一个增强型搜索引擎,它不仅将用户查询中的关键字与存储的文档进行匹配,而且还能理解查询背后的含义。
检索器会扫描与查询相关的大量领域知识(以矢量格式(文本的数字表示)存储),并提取最相关的文本片段,以围绕它们构建与原始用户查询相关的上下文。识别相关知识的一种常用技术是相似性搜索,其中将用户查询编码为矢量表示,然后将该矢量与存储的矢量数据进行比较。这样,检测与用户查询最相关的知识片段,归结为迭代执行一些数学计算,以识别与该查询的矢量表示最接近(最相似)的矢量。因此,检索器不仅能够高效而且准确地提取准确的、上下文感知的信息。
生成器Generator内部
RAG 中的生成器通常是一种复杂的语言模型,通常是基于转换器transformer架构的 LLM ,它从检索器获取增强的输入并产生准确、上下文感知且通常真实的响应。通过结合相关的外部信息,此结果通常超越独立 LLM 的质量。
在模型内部,生成过程涉及理解和生成文本,由对增强输入进行编码并逐字生成输出文本的组件管理。每个单词都是根据前面的单词进行预测的:这项任务是 LLM 内部的最后一个阶段,称为下一个单词预测问题:预测最有可能的下一个单词,以保持所生成消息的连贯性和相关性。
展望未来
在本系列关于理解 RAG 的下一篇文章中,我们将揭示RAG 的融合方法,其特点是使用专门的方法组合来自多个检索到的文档的信息,从而增强生成响应的上下文。
RAG 中融合方法的一个常见示例是重新排序,它涉及根据用户相关性对多个检索到的文档进行评分和优先排序,然后将最相关的文档传递给生成器。这有助于进一步提高增强上下文的质量以及语言模型最终生成的响应。
相关文章:
了解 RAG 第二部分:经典 RAG 的工作原理
在本系列的第一篇文章中,我们介绍了检索增强生成 (RAG) ,解释了扩展传统大型语言模型 (LLM)功能的必要性。我们还简要概述了 RAG 的核心思想:从外部知识库检索上下文相关的信息,以确保 LLM 生成准确且最新的信息,而不会…...
50周学习go语言:第四周 函数与错误处理深度解析
第四周 函数与错误处理深度解析 以下是第4周函数基础的深度教程,包含两个完整案例和详细实现细节: 第四周:函数与错误处理深度解析 一、函数定义与参数传递 1. 基础函数结构 // 基本语法 func 函数名(参数列表) 返回值类型 {// 函数体 }// …...
debian 12安装 postgresql 17
按照官方文档安装,即可安装成功 https://www.postgresql.org/download/linux/debian/ 添加存储库 #添加存储库 sudo apt install -y postgresql-common#执行 存储库内 命令,自动处理某些东西 sudo /usr/share/postgresql-common/pgdg/apt.postgresql.o…...
C++....................4
1. using namespace std; class mystring { private:char* p;int len;// 辅助函数:复制字符串void copy(const char* source) {len strlen(source);p new char[len 1];strcpy(p, source);}// 辅助函数:释放内存void release() {if (…...
图书馆系统源码详解
本项目是一个基于Scala语言开发的图书馆管理系统。系统主要由以下几个部分组成:数据访问层(DAO)、数据模型层(Models)、服务层(Service)以及用户界面层(UI)。以下是对项目…...
Node.js中如何修改全局变量的几种方式
Node.js中如何修改全局变量。我需要先理解他们的需求。可能他们是在开发过程中遇到了需要跨模块共享数据的情况,或者想要配置一些全局可访问的设置。不过,使用全局变量可能存在一些问题,比如命名冲突、难以维护和测试困难,所以我得…...
基于javaweb的SpringBoot个人博客系统设计和实现(源码+文档+部署讲解)
技术范围:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论…...
厦大团队:DeepSeek大模型概念、技术与应用实践 140页PDF完整版下载
DeepSeek使用教程系列: 厦门大学: DeepSeek大模型概念、技术与应用实践 140页PDF完整版文件 厦大团队:DeepSeek大模型概念、技术与应用实践(140页PPT读懂大模型).pdf https://pan.baidu.com/s/1de4UIxqPsvMBIYcpen_M-…...
【Blender】二、建模篇--05,阵列修改器与晶格形变
阵列修改器是bender里面一个比较常用的修改器,所以我们单独开口来讲,我们会先从几片树叶出发,然后我们用阵列修改器把这几片树叶变成这样的造型和这样的造型。这两个造型分别就代表着阵列修改器最常用的两种偏移方法,我们现在就开始我们先来做几个树叶。 1.树叶建模 首先…...
#渗透测试#批量漏洞挖掘#畅捷通T+远程命令执行漏洞
免责声明 本教程仅为合法的教学目的而准备,严禁用于任何形式的违法犯罪活动及其他商业行为,在使用本教程前,您应确保该行为符合当地的法律法规,继续阅读即表示您需自行承担所有操作的后果,如有异议,请立即停止本文章读。 目录 一、漏洞概况 二、攻击特征 三、应急处置…...
【Python爬虫(23)】探秘Python爬虫数据存储:MongoDB实战指南
【Python爬虫】专栏简介:本专栏是 Python 爬虫领域的集大成之作,共 100 章节。从 Python 基础语法、爬虫入门知识讲起,深入探讨反爬虫、多线程、分布式等进阶技术。以大量实例为支撑,覆盖网页、图片、音频等各类数据爬取ÿ…...
Pytorch使用手册-音频数据增强(专题二十)
音频数据增强 torchaudio 提供了多种方式来增强音频数据。 在本教程中,我们将介绍一种应用效果、滤波器、RIR(房间脉冲响应)和编解码器的方法。 最后,我们将从干净的语音合成带噪声的电话语音。 import torch import torchaudio import torchaudio.functional as Fprin…...
Linux 命令大全完整版(04)
1. 用户信息相关命令 who 功能说明:显示目前登入系统的用户信息。语 法:who [-Himqsw][--help][--version][am i][记录文件]补充说明:执行这项指令可得知目前有哪些用户登入系统,单独执行 who 指令会列出登入帐号、使用的终端…...
嵌入式Linux内核底层调试技术Kprobes
大家好,我是bug菌~ Kprobes 是 Linux 内核中一种动态插桩(Dynamic Instrumentation)技术,允许在不修改内核源码或重启系统的前提下,动态监控内核函数的执行。它是内核调试、性能分析和安全监控的重要工具。以下从技术…...
leetcode 119. 杨辉三角 II
给定一个非负索引 rowIndex,返回「杨辉三角」的第 rowIndex 行。 在「杨辉三角」中,每个数是它左上方和右上方的数的和。 示例 1: 输入: rowIndex 3 输出: [1,3,3,1]示例 2: 输入: rowIndex 0 输出: [1]示例 3: 输入: rowIndex 1 输出: [1,1]提示…...
内网网络安全的解决之道
本文简要分析了企业内部网络所面临的主要分析,阐述了安全管理人员针对不同威胁的主要技术应对措施。进一步介绍了业界各种技术措施的现状,并提出了未来可能的发展趋势。 内网网络安全问题的提出 网络安全对于绝大多数人而言指的都是互联网安全ÿ…...
分布式光纤声波振动技术在钻井泄漏检测中的应用
在石油天然气的钻井作业中,及时发现并定位泄漏点对于保障开采安全、降低环境污染以及避免经济损失至关重要。传统的泄漏检测方法往往存在局限性,而分布式光纤声波振动技术凭借其独特的优势,正逐渐成为钻井过程中寻找泄漏的有力工具。 技术原理…...
deepseek 导出导入模型(Windows)
前言 实现导出导入deepseek 模型。deepseek 安装Windows下参考 Windows 导出模型 Restart-Service 重启服务参考Stop-Service 关闭服务参考Start-Service 确定服务参考Compress-Archive 压缩参考Expand-Archive 解压参考setx 环境变量参考C:\Users\用户名\.ollama\models 默…...
Spring MVC配置文件
1. DispatcherServlet配置 作用:DispatcherServlet是Spring MVC的核心前端控制器,用于接收所有HTTP请求,并将请求分发给对应的处理器(Controller)。 配置方式: 在web.xml中配置DispatcherServletÿ…...
计算机视觉:主流数据集整理
第一章:计算机视觉中图像的基础认知 第二章:计算机视觉:卷积神经网络(CNN)基本概念(一) 第三章:计算机视觉:卷积神经网络(CNN)基本概念(二) 第四章:搭建一个经典的LeNet5神经网络(附代码) 第五章࿱…...
# 发散创新:基于A*算法的AI寻路优化实战与多场景适配在游戏开发、机器人导航和自动驾驶等领域,**智能寻路系统**是
发散创新:基于A*算法的AI寻路优化实战与多场景适配 在游戏开发、机器人导航和自动驾驶等领域,智能寻路系统是核心模块之一。传统BFS/DFS方法虽然简单,但在复杂地图中效率低下;而A*(A-Star)算法凭借启发式函…...
告别盲人摸象:手把手教你用TDR(时域反射技术)快速定位PCB上的开路和短路
告别盲人摸象:手把手教你用TDR(时域反射技术)快速定位PCB上的开路和短路 在电子工程领域,PCB故障排查常常像一场没有地图的寻宝游戏。当一块价值不菲的多层板出现信号传输异常时,传统方法往往需要工程师像"盲人摸…...
vulhub系列-73-RA1NXing Bots(超详细)
免责声明:本文记录的是 RA1NXing Bots 渗透测试靶机 的解题过程,所有操作均在 本地授权环境 中进行。内容仅供 网络安全学习与防护研究 使用,请勿用于任何非法用途。读者应遵守《网络安全法》及相关法律法规,自觉维护网络空间安全…...
AI人体骨骼检测保姆级教程:3步完成部署,轻松绘制骨骼连线图
AI人体骨骼检测保姆级教程:3步完成部署,轻松绘制骨骼连线图 1. 引言:为什么选择MediaPipe进行人体骨骼检测 在计算机视觉领域,人体姿态估计技术已经广泛应用于健身指导、动作捕捉、虚拟试衣等多个场景。传统方案往往需要昂贵的G…...
【Element】el-select远程搜索进阶:自定义搜索逻辑与后端接口高效联调实战
1. el-select远程搜索的核心场景与痛点 在实际企业级应用中,下拉选择器往往需要处理海量动态数据。比如电商平台的后台管理系统,可能需要从数十万商品中快速定位某个SKU;CRM系统要实时搜索客户数据库;城市选择器需要支持拼音首字母…...
告别脚本恐惧!用Tosca Commander实现Web/API自动化测试的保姆级入门指南
告别脚本恐惧!用Tosca Commander实现Web/API自动化测试的保姆级入门指南 第一次接触自动化测试时,看到满屏的代码和命令行,很多人会本能地产生抗拒。但测试工作又确实需要自动化来提升效率——这就是Tosca Commander的价值所在。作为一款领先…...
【Blazor 2026开发生存指南】:9类高频编译/运行时报错的根因诊断与秒级修复方案
第一章:Blazor 2026开发生存指南:核心演进与错误治理范式Blazor 在 2026 年已全面转向 WebAssembly 优先架构,.NET Runtime 嵌入式沙箱实现原生级启动性能,同时服务端渲染(SSR)与交互式客户端渲染ÿ…...
深圳同袍存储解说DDR内存及SSD价格现状
DDR内存及SSD价格现状 近期,DDR内存和SSD价格呈现快速上涨趋势。根据市场监测数据:截至2025年10月中旬,最新涨价情况如下: DDR4内存:主流16GB模组价格涨幅达20%-30%,部分品牌高频条涨幅更高。DDR5内存&…...
如何通过MM-CoT双阶段训练让AI实现精准逻辑推理与答案生成
如何通过MM-CoT双阶段训练让AI实现精准逻辑推理与答案生成 【免费下载链接】mm-cot Official implementation for "Multimodal Chain-of-Thought Reasoning in Language Models" (stay tuned and more will be updated) 项目地址: https://gitcode.com/gh_mirrors/…...
Unity网络开发革命:Netcode for GameObjects完整入门指南
Unity网络开发革命:Netcode for GameObjects完整入门指南 【免费下载链接】com.unity.netcode.gameobjects Netcode for GameObjects is a high-level netcode SDK that provides networking capabilities to GameObject/MonoBehaviour workflows within Unity and …...
