如何追溯RAG答案的每一步来源:EdgeQuake知识图谱谱系与引用追踪完整指南
【免费下载链接】edgequakeEdegQuake 🌋 High-performance GraphRAG inspired from LightRag written in Rust; Transform documents into intelligent knowledge graphs for superior retrieval and generation项目地址: https://gitcode.com/gh_mirrors/ed/edgequake
EdgeQuake 是一个用 Rust 编写的高性能 GraphRAG 框架,它把文档转换成智能知识图谱,用于更优的检索与生成。与"只给一段答案"的传统 RAG 不同,EdgeQuake 内置完整的**谱系追踪(Lineage Tracking)**系统:每一条答案背后的实体、关系、文本块,都可以一步步回溯到源文档、源文件甚至具体的行号,让引用追踪(Citation Tracing)真正可审计、可复现。本文是一份面向新手的完整指南,教你读懂这条"从 PDF 到答案"的来源链条,并掌握 3 种最实用的溯源方法。
为什么 RAG 答案需要"来源追溯"?
想象你问系统:"Sarah Chen 的研究方向是什么?"模型回答后,你最关心的往往不是答案本身,而是:
- 📄 这句话来自哪份文档?
- 🔍 具体在文档的哪个位置?
- 🤖 提取这个实体时,用的是哪个 LLM 模型?
普通 RAG 框架经常在这里"失守":答案里的页码、文档名可能是模型"编"出来的,点进去也打不开正确的页面。EdgeQuake 的做法是:在数据入库时就为每一层知识打上来源标记,答案里的每个引用都能验证,而不是事后猜。
谱系追踪的原理:一条五层来源链
EdgeQuake 在摄入文档时,会把整条链路逐级记录。核心结构如下(详细定义见 lineage-tracking.md):
| 层级 | 记录了什么(来源元数据) |
|---|---|
| 📦PDF / 源文件 | 文件名、大小、SHA256 校验和、页数 |
| 📄Document(文档) | 文档类型、使用的 LLM 与 Embedding 模型、处理时间 |
| ✂️Chunk(文本块) | 在文档中的起始/结束行号、字符偏移、Token 数 |
| 🧩Entity(实体) | 来自哪些 chunk、来自哪些源文档 |
| 🔗Relationship(关系) | 关系两端的实体 + 来源 chunk |
整条链的不变式很严格:每个 chunk 必须能指回父文档,每个实体必须至少引用一个来源 chunk——这正是"每个答案都能追溯"的底层保证。
这些结构体在源码中都有清晰定义,例如 chunk 上的行号字段(start_line/end_line)与模型字段:
- 文档类型定义:document.rs
- 文本块类型定义:chunk.rs
- 谱系数据结构
DocumentLineage:lineage.rs
实战一:从一个实体反向追到源文档
这是最常见的场景:你在知识图谱里看到一个实体(比如QUANTUM_COMPUTING),想知道它到底出现在哪些文档里。
步骤 1:调用实体溯源端点。只需一条请求,就能拿到该实体所有来源文档与 chunk:
curl http://localhost:8080/api/v1/entities/QUANTUM_COMPUTING/provenance \ -H "X-Workspace-ID: default" | jq返回结果会告诉你:这个实体被提取了几次、来自哪些文档、每个文档里的哪些 chunk(附行号),以及与之相关的其他实体。
步骤 2:钻进具体 chunk 看原文。拿到chunk_id后查询 chunk 详情,即可看到原始文本、字符范围和其中提取出的全部实体与关系。
步骤 3:一次调用拿全链路。chunk 的 lineage 端点会一次性返回父文档信息、行号区间、使用的 LLM/Embedding 模型、实体清单——单次请求,完整链条,无 N+1 查询(典型文档 P95 延迟 < 200ms)。
完整的分步教程(含 curl / Python / TypeScript / Rust 四种方式)见官方示例:tracing-entity-sources.md。
实战二:从文档正向看"它贡献了哪些知识"
反过来,你上传了一份 PDF,想知道系统从中提取了什么。调用文档谱系端点:
curl http://localhost:8080/api/v1/documents/{document_id}/lineage | jq一次返回完整的谱系树:全部 chunk(含行号、Token 数、内容预览)+ 全部实体(含类型和来源 chunk 列表)。配套的metadata端点则返回扁平的元数据:文件哈希、页数、处理模型等,方便做审计比对。
实战三:在 WebUI 里点点鼠标完成溯源
不想敲命令?EdgeQuake 的 Web 界面把谱系能力做成了可视化面板:
- 文档页侧边栏(Metadata Sidebar):打开任意文档,右侧面板有三块——扩展元数据(全部 KV 字段)、数据层级树(Document → Chunks → Entities,可折叠展开)、来源信息(类型、页数、校验和、文件大小)。
- 谱系浏览器(Lineage Explorer):选择文档后,可以浏览实体图谱并对每个实体点击查看其来源 provenance。
- 知识图谱页:点击任意实体节点,直接记下实体名,就能去调溯源接口。
谱系能力如何支撑"可信引用"
EdgeQuake 的查询引擎支持 6 种模式(naive/local/global/hybrid/mix/bypass,默认mix)。无论哪种模式,检索到的 chunk 都携带着上文那条来源链——答案中的每个引用条目,都可以经由实体 → chunk → 行号 → 文档 → 源 PDF一路验证。
对于带图表的 PDF,谱系还覆盖了多模态资产:视觉转换生成的页面截图会以assets/page-0001.png的形式挂载到文档上,chunk 中引用的图片同样能通过pdf_id+ 资产路径回溯到具体 PDF 页。
常见应用场景速查
| 你的需求 | 用哪个端点 |
|---|---|
| 这个实体出现在哪些文档里? | GET /entities/{id}/provenance |
| 这份文档提取了哪些实体和关系? | GET /lineage/documents/{id} |
| 某个 chunk 的完整来源链? | GET /chunks/{id}/lineage |
| 文档的哈希、页数、模型等元数据? | GET /documents/{id}/metadata |
| 整棵谱系树(chunk + 实体)? | GET /documents/{id}/lineage |
典型落地场景:合规审计(回答必须可举证)、质量对比(同一文档换模型提取后 diff 实体差异)、故障定位(管道哪一步出错一目了然)、多文档冲突排查(同一事实在多份文档中的不同表述)。
总结
EdgeQuake 的谱系与引用追踪体系可以概括为一句话:知识图谱里的每个节点都记得自己从哪里来。五层来源链(PDF → Document → Chunk → Entity → Relationship)在摄入时自动打标,配合 provenance / lineage / metadata 三组 API 和 WebUI 可视化面板,让你既能正向审查"文档变成了什么",也能反向验证"答案来自哪里"——这正是把 RAG 从"黑盒问答"升级为"可审计知识系统"的关键一步。
📚 延伸阅读:
- 谱系架构设计:docs/architecture/lineage-tracking.md
- 谱系 API 完整参考:docs/api-reference/lineage-endpoints.md
- 实体溯源分步教程:docs/tutorials/tracing-entity-sources.md
【免费下载链接】edgequakeEdegQuake 🌋 High-performance GraphRAG inspired from LightRag written in Rust; Transform documents into intelligent knowledge graphs for superior retrieval and generation项目地址: https://gitcode.com/gh_mirrors/ed/edgequake
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考