什么是RAG?

大模型看不见哪些数据?
1.知识截至日期之前的的数据

2. 私有数据

3. 实时数据

因为大模型的数据是静态的,封闭的,但是业务是动态的,私有的

当然,我们可以把数据放入prompt里面

但是context window是有限的,全部放进去费token,还会稀释注意力

所以提出了RAG

RAG的核心思路是:先检索,再回答

就是不把所有的数据都塞进prompt,而是在每次回答之前,先检索最相关的几段,只把这几段放入prompt

RAG名字的含义:
Retrieval(检索):从知识库找出和当前问题最相关的内容

Augmented(增强):加入prompt

Generation(生成):大模型基于增强后的上下文生成回答


RAG的两大阶段:

1. 离线阶段

把私有数据处理成大模型能快速检索的格式,存进向量数据库

  1. 加载文档
  2. 文本切块(Chunking):按章节,小节标注
  3. 向量化(Embedding):每个chunk通过一个Embedding模型转换成向量(Vector)
  4. 存入向量数据库:优化了海量数据找最邻近的操作,能快速找到最相似的几条

2. 在线阶段

  1. 问题向量化:使用同一个Embedding模型,将用户问题转换成向量
  2. 语义搜索:用问题向量去向量库找最相似的几条
  3. 构造增强prompt:检索到的chunk放入prompt
  4. 大模型生成回答

传统的关键词搜索是逐字匹配,只能找到完全一样的,而向量库是语义搜索,可以找到意思差不多的,准确率高得多


RAG在Agent里面处于什么位置?

RAG本质上就是一个特殊的工具

当大模型认为这个问题需要访问私有数据时,就会通过Function Call下达指令调用知识库检索工具

agent执行这个工具调用,就是触发了RAG的在线流程

将结果回传给大模型


什么是向量数据库

向量数据库是为了在海量数据中,毫秒级找到最相似的topk条

秘诀是**ANN(Approximate Nearest Neighbor,近似最近邻)**搜索

不保证找到绝对最相似的,而是差不多最相似的

使用HNSW(Hierarchical Navigable Small World,分层可导航小世界图)

把向量组织成一个多层的结构

高层(稀疏层):只有少量节点,负责大范围快速跳转

低层(稠密层):精细定位最终的近邻候选


主流向量数据库

数据库 核心定位 适合场景 关键优势 主要缺点
Chroma 本地轻量级向量库 本地开发、功能验证、快速原型 Python 原生 API,零配置、几行代码启动 不适合生产,无高可用、分布式特性
Pinecone 全托管云向量库 创业公司 / 小团队快速上生产 无需运维,API 直接调用 数据在第三方,合规有顾虑;按量收费,规模大成本高
Milvus 开源生产级向量库 私有化部署、数据不出内网、大规模场景 功能最全,支持分布式 / 持久化,国产维护活跃 部署运维复杂度高,学习曲线较陡
Weaviate 开源多模态向量库 多模态搜索、简化 Embedding 流程 内置 Embedding 集成,支持文本 / 图片 / 音频 -
Qdrant 高性能轻量向量库 资源受限 / 高并发生产环境 Rust 实现,内存占用低、查询速度快 -
相关推荐
掉鱼的猫16 小时前
Spring AI 2.0 GA 倒计时:先别急,来看看 Java AI 框架的另一条路
java·openai·agent
吴佳浩16 小时前
OpenClaw最严厉的父亲- 使用优化建议
人工智能·llm·agent
漓漾li18 小时前
每日面试题(2026-05-15)
架构·go·agent
jiayong2318 小时前
Tool Permission 与 Sandbox 的安全流水线:Agent 工具系统的工程边界
java·数据库·安全·agent
小李子呢021118 小时前
大模型是什么?
大模型·agent
阿里云云原生19 小时前
实战揭秘:如何让你的 Agent 无缝接入现有系统?
agent
凌奕20 小时前
100 行代码搞懂多 Agent 协同:LangGraph 最小可运行示例(研究员 vs 批评家 + 总结员)
langchain·agent
小李子呢021120 小时前
什么是agent?
agent
带刺的坐椅20 小时前
Spring AI 2.0 GA 倒计时:先别急,来看看 Java AI 框架的另一条路
java·spring·ai·llm·agent·solon