当前位置: 首页 > news >正文

啥是RAG 它能干什么?

RAG工作机制详解

  • 前言
    • 为什么需要学习RAG?
    • 传统模型 vs. Agent
  • 前置知识补充
    • 1. Token(词元)
    • 2. Embedding(嵌入)
    • 3. 大语言模型Embedding vs. RAG Embedding
  • 为什么需要RAG?
    • 实际应用场景
  • RAG的基本运行流程
  • 回顾
    • 结语

前言

为什么需要学习RAG?

RAG(Retrieval-Augmented Generation,检索增强生成)是一种结合了信息检索与大语言模型生成能力的技术。与传统模型相比,RAG能够从外部知识库中检索相关信息,再基于这些信息生成更准确、更可靠的回答。

闲聊:好久没写博客了 现在除了原本的Chat功能 现在居然也支持agent 你现在看到的开头的这段介绍都是agent自动帮我插入的,编辑页面也经过了优化,CSDN真是紧跟时代发展!
BZW:最后 整个排版也是 agent 自动帮我优化的 我只需要自己再微调一下就可以了 有点小龙虾——博客版的味道了^ _^

传统模型 vs. Agent

  • 传统模型:回答"如何预订酒店"时,仅提供文字步骤。
  • Agent:直接调用预订API,完成订单并返回确认信息。

前置知识补充

1. Token(词元)

我们在与大模型对话时输入的是文字,但在喂给大模型之前都需要先进行Token化

为什么需要Token化?

  • 单词在计算机中以字符形式存储,如果大模型每次都要从字符组合成单词,效率太低。
  • 通过建立Token词典,可以将"apple"转化为数字"1",大大提高处理效率。
  • 将字词或部分字词转化为数字的过程就叫做Tokenizer

2. Embedding(嵌入)

如果说Tokenizer是将用户输入的文字转化为数字,那么Embedding就是把这些数字转化为向量。

Embedding的优势

  • 可以表示不同维度上的关系远近
  • 例如:香蕉和苹果除了都是中文和水果外,在其他方面区别很大
  • 而"苹果"对应的不同翻译(如"apple"),除了语言差异外,都指同一个东西
  • 单一维度无法满足需求,需要Embedding进行向量化表示

3. 大语言模型Embedding vs. RAG Embedding

重要区别

  • 大语言模型的Embedding:主要用于理解输入文本的语义
  • RAG的Embedding:目的是概括一段话,提取关键信息

RAG Embedding的工作流程

  1. 模型输出Embedding向量
  2. 经过线性层处理
  3. 将向量转化为便于理解的Token

为什么需要RAG?

实际应用场景

  • 现在我们在学校或公司网站上,总能在右下角看到一个"智能管家"来帮助解答问题,我们当然可以在询问的时候丢给他一个系统的使用手册 但是这往往就会导致很多问题:

  • 如果你常用AI帮助你解决问题 那么这其实是很常见的 比如我们丢给豆包一片研究生论文 很大概率都会出现由于文档内容太长只能读取前80% 这就是涉及到上下文窗口大小的一个问题

  • 而输入太多就会导致token的消耗很大 对应的就是成本变高 和速度变慢这是非常好理解的

  • 所以这个时候就需要我们RAG登场了 下面对于RAG基本运行流程的分析就可以让你基本理解 为什么RAG可以很好的解决这些问题

RAG的基本运行流程

核心步骤

  1. 索引

  2. 召回

  3. 重排

  • 召回和重排的区别
  • 有的人就说 直接在召回阶段 选出前三个最相似的不就行了吗 干嘛非得再次重排 简直是多此一举 其实关键是在于他们的筛选逻辑是不同的
  1. 生成
  • 我们拿到了上面的结果 之后就可以喂给大模型了 我个人理解的就像是:
  • 期末考试的时候 你发现你一个学期啥也没学 这个时候 大的来了 老师最后一节课把题库或者说是考试范围和重点 给你在书上圈好了 你虽然铲了一学期 依旧能够凭借这份资料 高分通过期末考试

回顾

  • 整体的流程可以分为提问前和提问后
  • 提问前的准备工作
  • 提问后

结语

  • 那么RAG的有关内容就到这里了 感谢你的关注 ~
  • 希望看到这里的你有美好的一天 我明天还有个面试 那 也祝我好运吧 ~ ——5.14日晚於实验楼

http://www.jsqmd.com/news/821741/

相关文章:

  • 3步完成笔记迁移:Obsidian Importer让知识整合变得如此简单
  • 无风扇笔记本散热原理与工程实践:静音计算的取舍与优化
  • 3分钟快速搭建QQ机器人:LuckyLilliaBot OneBot框架终极指南
  • 极速上手!OpenClaw 接入 MiniMax 图文指南
  • 第22天:对象的序列化和反序列化
  • 3步解锁Navicat Mac版无限试用期:永久重置工具使用指南
  • 别再瞎调了!手把手教你搞定SD卡和eMMC的Tuning流程(附Linux驱动代码解析)
  • 魔兽世界BBC周年纪念版即将上线!UU远程,让你出门在外也能组队开荒!
  • 保姆级教程:在Qt/C++项目中用QgsAnnotationItem给地图添加自定义标注(文字+SVG/PNG图片)
  • IDA静态分析-使用记录
  • #Python 类(Class)知识点总结
  • 别再搞混了!Web地图开发必懂的EPSG:4326与3857转换(附JavaScript代码)
  • 如何快速使用Bebas Neue:免费开源字体的完整指南
  • 《从王自如到YoooClaw:AI时代的哑铃型商业结构》
  • 别再用暴力循环了!用C++筛法高效分解质因数,附完整代码与时间复杂度分析
  • 手把手教你用Python复现TITAN风暴跟踪算法(附代码与数据)
  • 从零开始:ESP32 Arduino开发环境搭建完整指南
  • 声临其境 安全直达 ——NR2048 赋能矿场高可靠高清语音通信
  • STM32CubeMX配置外部中断后,生成的HAL库代码里AFIO和EXTI都做了啥?
  • Cyber Engine Tweaks终极指南:5步快速解锁赛博朋克2077无限潜能
  • RAG:AI Agent的“开卷考试”秘籍,让你的问题回答不再“瞎编”!
  • 从二叉树到UML:Graphviz的DOT语言保姆级语法手册(附避坑指南)
  • 2026年幻视AI数字工牌与全域零售AI解决方案官方指南
  • 如何轻松将Axure RP界面切换为中文:3个实用技巧让设计更高效
  • 2026最新测评:熬夜亲测5款硬核工具,教你高效降低AI率! - 降AI实验室
  • 基于Spartan-3 FPGA的PCIe单通道DMA传输性能实测与优化
  • 使用 Taotoken CLI 工具一键配置多开发环境接入信息
  • 092、Python在芯片验证中的应用:从脚本小子到验证架构师
  • 基于Telegram官方API的消息自动化获取与导出工具实践
  • 别再写 `new Stack<>()` 了!聊聊Java里更现代的栈实现:ArrayDeque与LinkedList性能实测