什么是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 实现,内存占用低、查询速度快 -
相关推荐
字节跳动开源1 小时前
30 分钟搞定个人情报站:Viking AI 搜索让前沿资讯实时推到面前
数据挖掘·开源·agent
早点睡觉1493 小时前
Agent 工程实习复盘 03|从 Pickle 到 PostgreSQL:LangGraph Checkpoint 迁移、内存治理与可回滚发布
agent
早点睡觉1493 小时前
Agent 工程实习复盘 04|长对话越聊越容易崩?Request-only Summary 与 Token 预算治理
agent
武子康5 小时前
GPT-Red:自动化红队如何形成 Agent 安全数据飞轮(4 个闭环 + 6 类评测指标 + 5 类风险误读)
人工智能·openai·agent
阿里云大数据AI技术5 小时前
DataWorks Data Agent 实战课堂(二):一句话搞定数据集成+处理,实现端到端数据流水线
人工智能·agent
像我这样帅的人丶你还5 小时前
MCP + npm:给五年前的老系统接上AI
前端·javascript·agent
牧艺6 小时前
从 Tool Calling 到 MCP Server:把业务能力做成 Agent 可复用接口
agent·全栈·mcp
码上解惑6 小时前
从模型接入到应用运行:智能体开发平台的整体架构设计
人工智能·agent·智能体·spring ai
FakeKesh17 小时前
学了一周Python,我决定手搓一个最小的AI Agent循环(附源码)
agent
程序员秋天7 小时前
用Spring AI实现多轮对话记忆,别再让AI每次都"失忆"
agent·ai编程