什么是RAG?
一、什么是 RAG?
AG(Retrieval-Augmented Generation,检索增强生成)是一种让大语言模型(LLM)具备外部知识获取能力的技术。
简单来说:
RAG = 检索(Retrieval) + 增强(Augmented) + 生成(Generation)
它的核心思想:
先从外部知识库中找到相关信息,再把这些信息提供给大模型,让大模型基于这些信息生成答案。
举个例子:
你问 ChatGPT:
"我们公司机器人 SDK 的 TCP 通信协议是什么?"
如果没有 RAG:
用户问题
|
↓
LLM
|
↓
根据训练数据猜答案
LLM 不知道你的公司 SDK,所以可能:
编造答案(幻觉)
给出泛化回答
如果有 RAG:
用户问题
|
↓
检索知识库
|
↓
找到 SDK 文档
|
↓
把文档片段塞给 LLM
|
↓
LLM 根据文档回答
回答可能:
"RobotSDK 使用 TCP 长连接通信,消息采用长度前缀 JSON 协议,客户端通过 request/response future 管理异步调用..."
这就是 RAG。
二、为什么需要 RAG?
LLM 本身有三个问题:
2.1 知识有限
LLM 的知识来自训练数据。
例如:
GPT训练数据
|
|
↓
模型参数
训练结束以后:
不知道你的私人文档
不知道公司代码
不知道最新数据
例如:
2026年的机器人SDK文档
|
|
X
LLM不知道
2.2 容易产生幻觉
LLM 本质:
根据概率生成最可能的文本
比如问:
"我们的Robot类有哪些接口?"
模型可能:
Robot.move()
Robot.stop()
Robot.navigate()
Robot.fly()
最后一个可能根本不存在。
2.3 重新训练成本太高
一种方式:
公司文档
|
↓
重新训练LLM
问题:
成本巨大
周期长
模型容易遗忘旧知识
RAG:
公司文档
|
↓
知识库
|
↓
查询时检索
成本低很多。
三、RAG完整工作流程(离线阶段
RAG分两个阶段:
- 知识库构建阶段(Offline)
- 用户查询阶段(Online)
1、知识库构建阶段
Step 1:收集数据
来源:
PDF
Word
Markdown
网页
数据库
代码仓库
日志
API文档
例如:
机器人公司:
RobotSDK/
|
├── README.md
├── TCP协议.md
├── API文档.pdf
├── config说明.md
└── source code
Step 2:文档解析(Document Parsing)
把各种格式转换成文本。
例如:
PDF:
Robot SDK支持TCP通信
消息格式:
{
seq:
command:
payload:
}
转换:
Document:
"Robot SDK支持TCP通信..."
Step 3:文本切分(Chunking)
为什么切分?
因为:
LLM上下文有限。
例如:
一本1000页文档:
100万token
不能直接送给LLM。
所以切:
原文
--------------------------------
Robot SDK通信协议...
--------------------------------
导航模块...
--------------------------------
电量模块...
--------------------------------
↓
Chunk1
Chunk2
Chunk3
通常:
chunk size:
300~1000 tokens
overlap:
50~200 tokens
Step 4:Embedding向量化
这是RAG最核心的一步。
文本:
Robot支持TCP长连接
输入Embedding模型:
text
|
|
↓
Embedding Model
|
↓
[0.12,0.54,-0.23,...]
得到:
文本的数学表示
Step 5:存入向量数据库
保存:
Vector DB
id:
001
vector:
[0.123,0.55,...]
text:
Robot SDK使用TCP协议
metadata:
{
source:"tcp.md",
page:3
}
常见:
| 数据库 | 特点 |
|---|---|
| Milvus | 大规模向量 |
| FAISS | 本地快速 |
| Chroma | 轻量 |
| Pinecone | 云服务 |
| Weaviate | 企业 |
2、用户查询阶段(在线)
用户:
"RobotSDK如何发送控制指令?"
Step 1:Query理解
原始:
RobotSDK如何发送控制指令?
可能经过:
拼写修正
改写
意图识别
Step 2:Query Embedding
同样:
问题
↓
Embedding模型
↓
[0.11,0.53,...]
Step 3:向量检索
计算:
问题向量
和
数据库中的文档向量
Step 4:Rerank(重排序)
为什么需要?
向量搜索只是粗筛。
例如:
Top10:
1 TCP协议
2 MQTT介绍
3 ROS通信
4 HTTP协议
5 Robot API
...
但是:
真正相关:
TCP协议
Robot API
所以使用:
Reranker模型。
Step 5:Prompt增强
把检索结果塞入Prompt。
原始:
用户:
Robot怎么发送控制指令?
变成:
System:
你是机器人SDK专家。
参考资料:
------
Robot SDK command采用TCP JSON协议
格式:
{
command:"move"
payload:{}
}
------
User:
Robot怎么发送控制指令?
Step 6:LLM生成答案
LLM:
输入:
问题
+
相关知识
输出:
Robot SDK通过TCP连接发送JSON command消息。
客户端调用sendCommand接口,
生成command字段并发送到机器人。
更多推荐



所有评论(0)