技术笔记

GraphRAG:实体合并与证据回溯

普通片段检索适合回答局部事实问题;跨文档关系或全局主题总结可能需要实体、关系与社区摘要。

2026年5月20日阅读约 2 分钟
GraphRAG知识图谱溯源

何时需要图结构

普通片段检索适合回答局部事实问题;跨文档关系或全局主题总结可能需要实体、关系与社区摘要。图结构增加了索引成本,也引入实体识别错误和错误关系传播,因此不应默认所有知识库都采用 GraphRAG。

每条关系应记录来源文档、段落、版本及抽取方法。模型抽取到的关系是一条待核验主张,不是自动成立的事实。两个同名实体只有在上下文、类型或稳定标识一致时才能合并。

可运行的带来源关系合并

import assert from "node:assert/strict";
function mergeEdges(edges) {
  const map = new Map();
  for (const edge of edges) {
    const key = JSON.stringify([edge.from,edge.type,edge.to]);
    const row = map.get(key) || {...edge,sources:new Set()};
    row.sources.add(edge.source);
    map.set(key,row);
  }
  return [...map.values()].map(e=>({...e,sources:[...e.sources]}));
}
const edges=mergeEdges([
  {from:"A",type:"depends_on",to:"B",source:"doc-1#p-3"},
  {from:"A",type:"depends_on",to:"B",source:"doc-2#p-8"}
]);
assert.equal(edges.length,1);
assert.equal(edges[0].sources.length,2);

社区摘要不能替代原文

社区摘要是派生数据,应保存依赖的边和原文版本。原文撤回或修订后,受影响的实体关系和摘要都需要重新计算。只更新向量索引而保留旧社区摘要,会让已经撤回的观点再次出现在答案里。

评测至少包含局部事实、跨文档关联、全局总结和实体歧义四类问题。比较答案证据覆盖率与索引成本,避免只展示一张复杂关系图就认定检索质量更高。

原始资料

感谢阅读本文

如果你觉得内容有帮助,欢迎点赞支持或分享给同行开发者。

1858 次阅读295 人赞过