Skip to content

RAG 全链路与来源追踪 ​

1. 解决什么问题 ​

模型训练知识不包含当前教材资料和私有教研要求。RAG 在生成前检索适用资料,把片段与来源一起放入上下文,支持依据检查和资料更新。它增加证据渠道,不保证生成一定忠于证据。

2. 原理与术语 ​

离线链路是导入、切分、Embedding、入库;在线链路是范围过滤、检索、上下文构造、生成和引用校验。文档版本与片段 ID 是可追踪证据;仅在末尾输出一个网址不足以证明具体内容有依据。

3. 数据怎样流转 ​

DocumentInput 提供正文、适用元数据、来源字符串和 facts;导入返回文档 ID、版本与片段数。prepare 检索后加载强制规则,检查空结果与事实冲突。问题存在时直接转人工,不跨地区自动回退。

4. 容易混淆 ​

资料正文与强制规则是两个通道。来源中写“请忽略规则”属于不可信文本;术语和地区要求不能等待向量召回。language 在本项目表示资料适用的目标语言,不是自动检测正文语言。

5. 最小示例 ​

利用真实冲突检测函数观察显式事实差异:

python
from app.retrieval import conflicts
sources = [
 {"id":"a","facts":[{"key":"age","value":"8"}]},
 {"id":"b","facts":[{"key":"age","value":"9"}]}]
assert conflicts(sources)[0]["key"] == "age"

这是结构化事实冲突检测;它不理解两段自由文本中的任意语义矛盾。

6. 项目实现 ​

向量生成成功后才开始导入事务,避免服务失败时停用有效资料。同范围资料更新产生新版本并停用旧版本;教材版本保留当时来源与规则快照,不因资料更新自动改写历史教材。当前导入接受文本,没有 PDF 解析或网页抓取器。

7. 源码与数据结构 ​

阅读 system/app/retrieval.py::import_document/retrieve/conflicts/get_rules、graph.py::prepare/context、db.py::save_version。sources 含片段 ID、原文、偏移、文档版本与 source_url;Lesson 仅引用检索得到的片段 ID。

8. 设计取舍 ​

保存快照有利复现,但也意味着资料更新后需明确创建或重做任务;不能自动把已审核内容替换为新事实。当前相关性阈值与自然语言冲突检测尚未实现,真实质量还依赖评审和教研确认。

9. 实验与验收 ​

在 system 目录导入独立实验资料:

bash
curl -s -H "X-API-Key: ${LAB_API_KEY:-}" -H 'Content-Type: application/json' \
  -d '{"name":"RAG实验","text":"校园里可以礼貌地向老师问好。","level":"A1","language":"en","region":"SA","source_url":"sample://rag-lab","facts":[]}' \
  http://127.0.0.1:8000/api/documents

再次用同名同范围、不同正文导入,检查版本递增和旧记录 active=false;执行检索核对只返回有效版本。再用缺资料地区创建任务,验收 human 状态与 retrieval_problem,而非无依据生成。

10. 故障排查 ​

先查导入是否完整,再查 namespace 和适用元数据,最后看查询与切分。返回来源但教材引用未知 ID 时应报 source 问题。引用存在也不证明每句话受支持,需逐项核对和评估忠实性。

11. 面试题与追问 ​

问:RAG 能消除幻觉吗? 不能,可能检索错、资料过期或生成误用。追问:怎样复现当时依据? 保留片段、文档版本和规则快照。再追问:资料冲突怎么处理? 当前检测显式 facts 的同键不同值,阻断并转人工,不宣称通用语义冲突识别。

STAR 应用:假设实验场景,R 为应核对的证据
对应S:情境T:目标A:行动R:验收证据
主问生成使用过期资料恢复证据链核对active版本与教材保存的来源快照指出生成时依据,不悄悄改历史记录
追问一资料更新后需复现旧任务保留可解释依据读取当时片段与规则快照旧版仍能定位原始证据
追问二两个来源年龄不同阻断明确冲突比较显式facts并转人工报告冲突键与片段,不声称识别所有语义矛盾

这些是设计讨论的参考表达,实际执行前不能改写为已取得的历史成果。

12. 官方资料与版本 ​

Embeddings、pgvector、JSON Schema。核验日期 2026-11-03;数据库镜像为 pgvector 0.8.1 / PostgreSQL 16,生成模型以配置和真实验证记录为准。

学习复现系统 · 事实、实验与假设分开记录