RAG 系统概览
1. 一句话结论
RAG(Retrieval-Augmented Generation,检索增强生成)先从受控知识源中找到与问题相关的证据,再把证据连同问题交给模型生成回答;它的可靠性主要取决于知识质量、切块、检索、过滤、引用和评估,而不只是向量数据库或语言模型。
2. RAG 解决什么问题
模型参数中包含训练时学习到的统计知识,但这些知识难以及时更新,也不天然带有可核验来源。RAG 把外部知识作为可更新的非参数记忆,使系统能够:
- 使用组织内部或专业领域资料回答问题。
- 在不重新训练模型的情况下更新知识。
- 将回答连接到具体文档和段落。
- 根据权限、领域、语言或版本限制检索范围。
- 把通用模型能力与 CBL 的专业知识组合起来。
RAG 不会自动保证答案正确。错误资料、失败检索、不当切块或模型对证据的误读,仍然会产生错误回答。
3. 完整流程
RAG 包含离线索引和在线问答两条流程。
离线索引
知识原件
↓
解析正文与元数据
↓
按语义结构切块
↓
生成关键词索引与 Embedding
↓
写入搜索索引并保留来源映射
在线问答
用户问题
↓
理解查询与确定检索范围
↓
关键词 / 向量 / 混合检索
↓
元数据过滤与结果重排
↓
组织证据上下文
↓
模型生成带引用回答
↓
质量检查、反馈与评估记录
索引是知识原件的派生物。模型、Embedding 或切块策略改变时,应能够从 Markdown 和资产源重新生成索引。
4. CBL 的知识源
CBL 建议保留以下来源层次:
- Git Markdown:公开知识正文、front matter 和修订历史,是主要知识原件。
- R2 资产:未来用于 PDF、数据表、原始图片、数据集和较大附件。
- 结构化数据:未来可能存放产品参数、文档索引、评估结果和任务日志。
- 外部来源:论文、标准、厂商资料和官方网页,只在授权与引用边界内使用。
公开网站本身也可以作为托管搜索服务的数据源,但 Git 中的 Markdown 仍应是内容治理和版本控制的中心。
5. 文档解析与切块
切块的目标不是把所有文档机械切成相同长度,而是让每个检索单元表达一个能够独立理解的问题或结论。
CBL 建议:
- 优先沿 H2/H3 标题边界切块。
- 在每个块中保留文档标题和标题路径。
- 一句话结论、参数表、误区和参考资料使用不同的处理策略。
- 避免把表头与表格内容拆开。
- 过短相邻段落可以合并,过长章节再按段落细分。
- 为块保留少量上下文重叠,但不重复大段内容。
- 不把导航、footer 和页面模板噪声写入知识索引。
不存在适合所有文档的固定 Token 数。最终大小应通过检索评估决定,而不是只看行业常用数值。
6. 最小元数据模型
每个检索块至少应保留:
| 字段 | 作用 |
|---|---|
canonical_id | 识别原始文档,即使标题或 URL 变化仍能保持关联 |
chunk_id | 唯一识别文档中的具体检索块 |
title | 文档标题 |
heading_path | 当前块所在的 H2/H3 层级 |
source_url | 回到公开页面或授权来源 |
domain | 限定 Photonics、AI 等主要领域 |
visibility | 区分 public、internal、private 和 restricted |
status | 排除 archived,或降低 draft 内容的权重 |
language | 支持中文、英文和未来多语言检索 |
last_reviewed | 判断内容时效性 |
content_hash | 检测内容是否变化并支持增量重建 |
向量元数据适合存储检索和过滤所需的短字段。完整正文和大附件仍应保留在原始知识源中。
7. 关键词、向量与混合检索
关键词检索
适合精确术语、型号、公式、标准编号和缩写。例如 G15978-0020P 或 canonical_id 不应只依赖语义相似度。
向量检索
适合自然语言问题、同义表达和概念相似性。例如“APD 为什么需要温度补偿”可以匹配没有完全相同措辞的相关章节。
混合检索
混合检索结合关键词和向量结果,再进行融合或重排。对于同时包含中文、英文术语、产品型号和专业概念的 CBL,混合检索通常比单一路径更合理。
8. 元数据过滤与排序
在计算语义相似度之外,应先确定哪些内容有资格参与回答。公开 CBL 可以使用:
visibility = publicstatus不等于archived- 与用户问题匹配的
domain - 当前语言或允许的多语言范围
排序还可以考虑:
- 与查询的关键词和语义相关度。
stable、review、draft的内容成熟度。- 最近复核时间。
- 是否来自原始资料、标准或官方文档。
- 多个结果是否只是同一段内容的重复版本。
过滤字段需要在建立索引前规划。向量数据库通常只对明确建立索引的元数据字段提供高效过滤。
9. 回答与引用
检索结果进入模型前,应组织成带编号的证据块,并保留标题、URL 和章节。回答阶段要求模型:
- 优先依据检索内容回答。
- 对没有证据支持的部分说明不确定性。
- 把事实来源和模型推断区分开。
- 在关键结论附近给出引用,而不是只列文末资料。
- 当资料冲突时展示冲突,不强行合并成单一结论。
- 找不到足够材料时拒绝编造,并建议需要补充的资料。
引用存在不等于引用正确。系统仍需要验证引用是否真正支持对应句子。
10. 评估体系
RAG 至少需要分别评估四个层次:
内容质量
- 来源是否可靠、可公开和仍然有效。
- 文档是否有清晰边界和最近复核日期。
检索质量
- 正确证据是否出现在前若干结果中。
- 结果是否被错误领域、重复内容或旧版本占据。
回答质量
- 结论是否受到检索材料支持。
- 是否遗漏关键条件或夸大证据。
- 引用是否指向正确文档和章节。
系统质量
- 延迟、成本和失败率是否可接受。
- 内容更新后索引是否及时刷新。
- 权限过滤是否在后端可靠执行。
测试集应来自真实问题,例如“为什么 APD 不能使用固定 40 V 偏压”,并包含期望证据、关键结论和不可接受回答。
11. 公开与私有隔离
公开与私有知识不能只依赖提示词或前端按钮隔离。建议:
- 使用独立数据源、索引和访问凭证。
- 私有检索在后端验证身份和权限。
- 不把 private 或 restricted 内容发送到公开模型或日志。
- 对每个回答记录使用了哪些文档和权限范围。
- 禁止公开回答通过跨索引检索接触私有内容。
即使向量本身不易被人直接阅读,也应把 Embedding 和元数据视为派生敏感数据。
12. Cloudflare 上的两条实施路线
托管 AI Search
Cloudflare AI Search 可以连接自有网站、R2 或上传文件,自动处理索引,并支持关键词、向量、混合检索和元数据过滤。
适合 CBL 的公开试点,因为:
- 可以直接从已部署网站开始。
- 运维和索引管道较少。
- 适合先验证真实问题和搜索体验。
需要验证它对 CBL 自定义 front matter、章节引用、中文切块和刷新时效的支持是否满足要求。
自定义 Workers + Vectorize
自建流程可以使用 Worker 负责解析和查询,Vectorize 保存向量与检索元数据,R2 或其他存储保存原文与附件。
适合以下情况:
- 需要完全控制切块和增量更新。
- 需要自定义混合检索、重排与引用格式。
- 需要复杂权限或公开、私有多套索引。
- 需要独立评估、日志和模型路由。
代价是需要自己维护摄取、去重、重建、错误恢复和监控。
CBL 初期应优先验证托管路线,确认不足后再决定是否自建,不需要现在同时实现两套系统。
13. 分阶段实施
当前:元数据准备
- 继续补齐
canonical_id、domain、visibility、status 和last_reviewed。 - 保持 Markdown 标题层级和参考资料规范。
- 建立真实问题清单,作为未来评估集。
约 15 至 20 篇文档:搜索试点
- 先上线站内关键词搜索。
- 试验 Cloudflare AI Search 对公开网站的索引效果。
- 比较中文术语、英文缩写和型号的检索质量。
约 30 篇稳定文档:公开 RAG
- 建立带引用的问答入口。
- 加入 domain、status 和语言过滤。
- 用真实问题集测试检索与回答。
- 明确无法回答和资料不足时的行为。
私有知识形成规模后:独立私有 RAG
- 使用独立存储、索引、身份验证和日志策略。
- 先解决访问控制和数据生命周期,再增加 Agent 能力。
14. 常见误区
- “有向量数据库就有 RAG”:向量库只是检索组件之一。
- “块越小越容易命中”:过小会丢失条件和上下文,过大则引入无关信息。
- “相似度最高就是正确证据”:语义相似不等于事实支持,需要过滤、重排和评估。
- “RAG 可以消除幻觉”:它能提供证据,但模型仍可能忽略、误解或超出证据。
- “私有内容加一个 visibility 字段就安全”:安全边界必须落实在存储、索引和后端权限中。
- “先接聊天界面,再补评估”:没有真实问题集就无法判断系统是否真的改进。
15. 与其他主题的关系
- AI 人工智能概览
- AI 系统地图
- CBL 文档规范 1.0
- 后续主题:知识库元数据、RAG 评估、Embedding 基础、混合检索和 Agent 工作流。
16. 参考资料
- Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks,Lewis 等,2020。RAG 的代表性原始论文。
- Cloudflare AI Search,Cloudflare,访问日期 2026-08-27。用于核对托管索引、自然语言搜索和持续同步能力。
- Cloudflare AI Search configuration,Cloudflare,访问日期 2026-08-27。用于核对关键词、向量、混合检索、切块和元数据配置。
- Build a Retrieval Augmented Generation AI,Cloudflare,访问日期 2026-08-27。用于核对 Workers、Vectorize、D1 和模型组成的自定义 RAG 路线。
- Cloudflare Vectorize metadata filtering,Cloudflare,访问日期 2026-08-27。用于核对向量元数据过滤机制。
17. 修订记录
- 2026-08-27:建立 CBL 的 RAG 概念、元数据、检索、引用、评估和实施路线。