核心要点

  • 分离「离线索引」与「在线检索生成」两条数据流

  • 完整链路:ingest→chunk→embed→index→retrieve→rerank→generate

  • 生成阶段必须带引用(citation)以支持溯源

标准回答

RAG 系统由两条数据流构成。

离线索引(Indexing)

  1. 数据接入(Ingest):从文档、网页、数据库加载原始数据,做清洗与格式归一。
  2. 切分(Chunking:按语义/长度把文档切成块,控制每块的 token 规模与重叠。
  3. 嵌入(Embedding:用嵌入模型把每块转成向量。
  4. 入库(Index):向量连同元数据写入向量数据库,构建 HNSW 等索引。

在线问答(Retrieval + Generation)
5. 检索(Retrieve):将用户 query 嵌入,做向量相似度召回 Top-K(常配合关键词混合检索)。
6. 重排(Rerank):用 cross-encoder 对候选精排,提升精度。
7. 拼接上下文:把精排后的片段填入 Prompt 模板。
8. 生成(Generate)LLM 基于检索内容作答,并附带引用来源。

详见 RAG 检索增强生成架构指南

常见误区

⚠️ 常见踩坑

把 RAG 简化为「向量检索 + 拼接」,忽略了切分质量、重排和引用溯源;这三者恰恰决定生产环境的可用性。

追问

追问 1离线索引和在线检索分别对延迟敏感吗?

离线索引是批处理,可异步进行,对延迟不敏感但要保证数据新鲜度;在线检索处于请求路径上,向量召回+重排+生成的总延迟直接影响体验,是优化重点。

追问 2元数据(metadata)在 RAG 中有什么用?

元数据用于过滤检索(如按时间、权限、来源筛选)、做混合检索的结构化条件,以及生成时的引用展示。带权限元数据还能实现多租户数据隔离。

追问 3知识库更新后如何让检索结果同步?

增量更新:对变更文档重新切分、嵌入并 upsert 到向量库,删除过期块。要维护文档版本与 chunk 的映射关系,避免脏数据残留。

延伸学习

与本题相关的知识库文章、术语、工具与行业资讯。

🛠️ AI 工具

  • LangChain

    最流行的 LLM 应用开发框架,137K+ stars。提供链式编排、RAG 检索增强生成、Agent 构建等核心能力,覆盖 Python 和 JavaScript 双语言生态,是构建 LLM 应用的基础设施

  • qdrant

    高性能向量数据库,6.3K+ stars。高性能、大规模向量数据库和向量搜索引擎,支持相似度检索和语义搜索

  • index

    领先的开源浏览器 Agent,可自主在网页上执行复杂任务,支持 Claude 3.7 Sonnet 和 Gemini Pro 等模型