首页 > 教程攻略 > ai资讯 >也看CommunityKG-RAG用于事实核查任务:从建库到检索技术实现思路解读

也看CommunityKG-RAG用于事实核查任务:从建库到检索技术实现思路解读

来源:互联网 时间:2026-08-24 14:24:29

这篇文章,我们来聊聊Graph/KG-RAG中一个非常有意思的应用方向——将知识图谱的社区结构用于事实核查。微软等团队的方案中经常提到“社区”这个概念,但具体怎么落地?最近看到一篇有趣的工作,正好给出了一个参考答案。

这篇工作发布于8月下旬,值得花点时间研究一下。

一、CommunityKG-RAG:当事实核查遇上社区结构

先搞清楚事实核查到底在干什么。

简单来说,事实核查任务的目标是:给定一个声明,从海量文本中定位最相关的前n个句子,然后用大语言模型判断这个声明是“被支持”、“被反驳”,还是“信息不足”。

比如,对应的提示词可以设计成这样:

核心问题其实就一个:上下文够不够用?毕竟声明牵扯的实体和关系往往盘根错节。

最近看到的这篇工作,名为

CommunityKG-RAG: Leveraging Community Structures in Knowledge Graphs for Advanced Retrieval-Augmented Generation in Fact-Checking

(论文地址:https://arxiv.org/pdf/2408.08535),提出了一种叫CommunityKG-RAG的新框架。它的思路很直接:把知识图谱中的社区结构融入RAG系统,让事实核查的准确性和相关性上一个台阶。

框架的核心目标有三个:

  • 把结构化和非结构化数据结合起来,利用知识图谱的整合能力提升事实核查效果;
  • 通过社区结构和多跳路径,实现真正上下文感知的检索和多跳利用;
  • 做成一个零样本框架,不需要额外训练或微调,保证可扩展性和适应性。

下面挑几个有意思的点来展开。

1、三种RAG策略的直观对比

论文中的Figure 1做了一个非常直观的比较:不检索、语义检索、以及CommunityKG-RAG,三者放在一起,差异一目了然。

  • 不检索(No Retrieval)

    :大模型直接凭提示回答,没有任何外部上下文。缺乏额外信息,自然很难准确判断声明的真假。
  • 语义检索(Semantic Retrieval)

    :通过计算提示和上下文的嵌入向量余弦相似度来检索信息。比不检索强,但在复杂事实核查中,多跳关系和深层上下文仍然不够用。
  • CommunityKG-RAG

    :利用知识图谱中的多跳信息,通过社区结构来增强信息的准确性和相关性。具体步骤是:构建包含事实核查文章的知识图谱 → 用Louvain等算法识别社区结构 → 将社区中的节点和关系映射为嵌入向量 → 计算声明与社区的相关性得分,选出最相关的社区和句子。

CommunityKG-RAG的核心优势在于:它提供的上下文信息更丰富、更深入,能帮助模型探索声明与实体之间的间接关系,从而显著提升事实核查的准确率。

二、CommunityKG-RAG的工作流程:从建库到查库

Figure 2 详细展示了CommunityKG-RAG的完整流程,从构建知识图谱到最终的事实核查,每一步都交代得很清楚。

1、建库阶段

  1. 事实核查文章集合

    :流程的起点,这些文章是构建知识图谱的基础数据。
  2. 共指消解

    :作为预处理步骤,识别并整合同一实体的不同表达。使用的是一种基于SpanBERT的深度学习方法,已在大型语料库上预训练,能捕获广泛的句法和语义信息。
  3. 分句

    :文章被分解成单独的句子,方便后续处理。
  4. 实体关系提取

    :从句子中提取实体间的三元组关系,使用的关系提取模型是REBEL。
  5. 构建知识图谱

    :节点代表实体,边代表关系。
  6. 社区检测

    :用Louvain算法识别知识图谱中的社区结构——那些节点连接更密集的子图。
  7. 存储

    :社区和相关句子的信息统统存入数据库。

以上所有信息,建库阶段就得提前处理好。

2、检索阶段(分6步)

  1. 声明或用户查询

    :用户提交一个需要核查的声明,触发整个流程。
  2. 节点特征嵌入

    :为知识图谱中的每个节点分配预训练BERT模型的词嵌入,作为实体的语义表示。
  3. 社区检索

    :每个社区视为一个子图Gm=(Em, Rm),包含一组实体节点Em及其关系Rm。社区的嵌入表示φ(m)通过平均Em内节点的BERT嵌入生成。声明c和社区m之间的相关性得分r(c, m),则通过Sentence-BERT生成的句子嵌入与社区嵌入的点积来计算。
  4. 顶级社区选择

    :基于相关性得分排名,选择前δ百分比的社区。这个选择标准确保分析集中在最可能包含与声明相关信息的社区上。
  5. 社区到句子的选择

    :在选定的社区内,进一步计算每个句子p的相关性得分,选择前λ百分比的句子,得到最终的最相关句子子集P*c。
  6. 整合

    :将检索到的句子作为上下文输入到大模型中,与声明一起评估。
  7. 语言模型

    :使用LLaMa等大模型生成对声明的评估。
  8. 事实核查

    :大模型基于提供的上下文,输出“True”、“False”或“NEI”(Not Enough Information)。

三、效果对比与消融分析

1、核心效果对比

Table 1 对比了几种检索方法在声明核查任务上的准确率,结果很说明问题:

  • No Retrieval

    :准确率39.79%。
  • Semantic Retrieval

    :准确率43.84%,比不检索有提升,语义上下文确实管用。
  • KAPING

    :准确率39.41%,甚至略低于不检索。直接把三元组当上下文塞给模型,效果并不理想。
  • CommunityKG-RAG25 100

    :准确率56.24%,显著领先。这里"25 100"代表选择最相关的前25%的社区,并使用这些社区映射到的100%的句子作为上下文。

结论很清晰:CommunityKG-RAG通过精心选择的社区和相关句子来提供丰富上下文,效果远远优于其他方法。

2、有趣的消融分析

1)不同基础语言模型的影响

比较了LLaMa2 7B和LLaMa3 8B两个模型。结果发现,无论用哪个模型,引入CommunityKG-RAG框架后,性能相比不检索的基线都有显著提升。说明这个框架对不同的模型架构都能有效适配。

2)社区到句子选择阈值的影响

在固定社区选择阈值(top 25%)的情况下,调整句子选择阈值(25%、50%、75%、100%)。有趣的现象出现了:阈值从25%增加到50%时,性能反而下降——因为引入了更多噪声或不相关信息。但继续增加到75%和100%时,性能又回升了。这说明在某些情况下,更全面的上下文确实有助于提高事实核查的准确性。

3)顶级社区与句子选择阈值的组合效应

调整δ(顶级社区选择)和λ(社区到句子选择)的阈值,分别设为25%、50%、75%、100%。结果再次印证:增加阈值可能引入噪声,影响模型有效性。但当两个阈值都设置为100%时,性能反而有显著提升——全面考虑可用数据,反而能带来更好的准确性。

总结

这篇文章把我们带回到一个核心问题:Graph/KG-RAG在事实核查任务上到底怎么玩?CommunityKG-RAG框架的实践告诉我们,精确且上下文感知的检索策略,才是关键所在。

归根结底,信息不是越多越好——

适量的、精心选择的上下文信息,对于提高大模型在复杂事实核查任务中的准确性,才是真正重要的