关于RAG(Retrieval-Augmented Generation)
本文最后更新于55 天前,其中的信息可能已经过时,如有错误请发送邮件到2156936367@qq.com

前言

如今AI盛行的时代,大家日常生活学习肯定都会使用大模型LLM(理解并生成自然语言)来解决我们的一些问题,比如说ChatGPT,Gemini……那么这背后有哪些神秘的东西呢?今天我就来简单介绍一下RAG(Retrieval-Augmented Generation)——检索增强生成技术吧。

一、为什么要有RAG?

先讲一下LLM的基本原理吧。

首先就是LLM通过预训练,学习网上各种各样的的知识(公开的,全网可查的),然后这些文本转为Token,再Embeddding为向量存储到向量数据库中,最后通过相似度计算,预测下一个Token,最后生成。

这其中Token,Embedding(向量化)是什么?我就不再赘述…….

这其中有什么缺点呢?

如果涉及到一些实时性,一些私有的数据时,LLM很可能就会因为向量匹配相似度不够,在预测时胡说八道,也就是常说的“幻觉”

因此就需要有RAG这个技术了,就是给原本的LLM外挂一个知识库,然后在这个知识库里完成RAG。接下来,我将RAG分解为三个部分,R(Retrieval-检索)、A(Augmented-增强)、G(Generation-生成)。

二、RAG – R (Retrieval-检索)

首先对用户的问题进行Embedding,在进行了向量化之后,就可以开始在向量数据库中检索了,检索和用户的问题相似语义的向量。

其实就是一个相似度匹配的问题。

和普通数据库基于关键字的检索不同,向量数据库是基于语义的检索

下面给一个案例:

  1. 假如用户输入问题是“如何配置HTTPS?”
  2. 用户问题向量化Embedding,并得到问题的向量
 query_vector = [0.31, 0.48, 0.73, ..., 0.15]  // 768维
  1. 在向量数据库中搜索并匹配相似度
 向量1: [0.23, 0.45, ...] → 相似度 0.45
 向量2: [0.31, 0.52, ...] → 相似度 0.89
 向量3: [0.12, 0.34, ...] → 相似度 0.32
 ......
 向量8234: [0.29, 0.51, ...] → 相似度 0.91
 向量8235: [0.35, 0.48, ...] → 相似度 0.87
  1. 返回 Top-K 最相关的,假设我们设置 K=3,返回相似度最高的3个文本块
 比如说上面的向量2、8234、8235

三、RAG – A(Augmented-增强)

在得到Top-K相关的数据后,会把这几条结果的原始数据和用户的问题,一起给LLM。为什么叫Augmented增强呢?

其实本质就是将提示词Prompt优化(提示词工程)。

继续上述案例,“增强”就是把Query和知识库中的相关数据,通过一些特殊的Prompt给到LLM,让LLM更好地回答问题。

四、RAG – G(Generation-生成)

最后这个Generation就和LLM没区别了,LLM会根据提示词,来回答问题并按照指定的格式来输出内容。

五、整个RAG过程

在构建好私有知识库的前提下,这个过程也说明一下吧(其实就是LLM构建知识库的过程)

  1. 首先就是文本的分块,也就是Token,然后有特定的Token id
  2. 再就是向量化Embedding
  3. 储存并构建向量数据库

用户开始提问,首先将用户问题 → Token → Token id → Embedding

然后开始RAG

检索Retrieval → 增强Augmented → 生成Generation

总结

这里介绍了一下RAG,还简单介绍了一下大模型的基本原理,具体的原理可以查看其他文档噢,希望这篇介绍RAG对你有帮助~

觉得有帮助可以投喂下博主哦~感谢!
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇