什么是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分两个阶段:

  1. 知识库构建阶段(Offline)
  2. 用户查询阶段(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字段并发送到机器人。

相关推荐
Tom·Ge6 小时前
【AI前沿】2026.08.17 SpaceX 600亿收购Cursor正式完成·DeepSeek V4 Pro万亿开源·人形机器人生态全面爆发
人工智能·大模型·ai前沿
郑州光合科技余经理7 小时前
本地生活服务系统:成品模块和定制接口怎么划界
java·前端·人工智能·后端·系统架构·php·ai编程
2603_965148117 小时前
家居百货蓝海:API挖掘高复购率生活小商品
大数据·服务器·人工智能·python·生活
2501_930472447 小时前
踩坑|CodeBuddy权限配置:AI误删文件、乱跑命令、.env泄露怎么防
人工智能·ai编程
小淮AI10 小时前
从“刷题”到“追问”:AI课堂正在重塑哪些学习旧习惯?
人工智能·学习
cui_ruicheng11 小时前
LangChain 应用开发(十四):Agent 上下文与记忆机制
服务器·人工智能·python·langchain
飞哥数智坊11 小时前
直播半小时,我聊了聊 Agent 最常见的 3 个疑问
人工智能
ggb喔11 小时前
AI 原生攻防时代:2026 年渗透测试与逆向开发的范式重构
人工智能·重构
宸津-代码粉碎机12 小时前
AI攻防战升级!基于Spring AI构建Java应用自动免疫安全体系
java·大数据·开发语言·人工智能·python·安全·spring
克里斯蒂亚诺更新12 小时前
机器学习库sklearn的主要任务
人工智能·机器学习·sklearn