RAG 检索增强
分块、检索、引用;rags 节点。
35 分钟
RAG 检索增强
RAG(Retrieval-Augmented Generation) 在生成回答前 先从知识库检索相关片段,再让 LLM 仅基于(或优先基于)这些片段 组织答案。Agent 答站内课程、企业文档、API 手册时,RAG 是降低幻觉、可引用的主流架构。
学习目标
- 掌握分块、索引、检索、生成四步 pipeline
- 会设计 引用(citation) 与「未找到则拒答」策略
- 对照路线图 rags 节点
RAG 流水线
离线:文档 → 清洗 → 分块 → embed → 向量库(+ 可选 ES 全文)
在线:用户问 →(可选 query 改写)→ 检索 top-k → 拼 context → LLM 生成 → 带引用输出
| 阶段 | 关键决策 |
|---|---|
| 分块 | 大小、重叠、按标题/段落切 |
| 检索 | top_k、metadata 过滤、hybrid、rerank |
| 生成 | system:仅依据下列片段;要求 cite |
| 评估 | 命中率、答案 grounded 比例、用户反馈 |
分块技巧
- Markdown 讲义:按
##切比固定 512 token 更保语义 - 重叠 10–20%:避免答案跨块边界被截断
- 存 标题路径 如
ai-agents-essentials > agt-rag > 分块技巧,便于引用展示
CodeRoadMap 场景:索引 content/课程/*/drafts/*.md 与已发布 lesson,过滤 draft 与正式版 避免用户看到未审核内容。
引用与诚实
好的 RAG 回答:
RAG 在线阶段通常包含检索与生成两步 [agt-rag](/tracks/ai-agents-essentials/lessons/agt-rag)。
混合检索可结合 ES BM25 与向量 [es-query](/tracks/elasticsearch-essentials/lessons/es-query)。
未检索到 时 prompt 要求:「知识库无相关内容,请勿编造 track 链接」——与 agt-prompt 约束一致。
常见失败模式
| 现象 | 可能原因 |
|---|---|
| 答非所问 | chunk 太大/太小;query 未改写 |
| 仍幻觉 | prompt 未强制 grounded;k 太小 |
| 重复冗长 | 多 chunk 内容重叠;缺 rerank |
| stale | 索引未随 git merge 更新 |
Agent 层把 RAG 包成 agt-tools 的 search_docs,并在 agt-structured 里要求 citations[]。