也看CommunityKG-RAG用于事实核查任务:从建库到检索技术实现思路解读
这篇文章,我们来聊聊Graph/KG-RAG中一个非常有意思的应用方向——将知识图谱的社区结构用于事实核查。微软等团队的方案中经常提到“社区”这个概念,但具体怎么落地?最近看到一篇有趣的工作,正好给出了一个参考答案。
这篇工作发布于8月下旬,值得花点时间研究一下。
一、CommunityKG-RAG:当事实核查遇上社区结构
先搞清楚事实核查到底在干什么。
简单来说,事实核查任务的目标是:给定一个声明,从海量文本中定位最相关的前n个句子,然后用大语言模型判断这个声明是“被支持”、“被反驳”,还是“信息不足”。
比如,对应的提示词可以设计成这样:

核心问题其实就一个:上下文够不够用?毕竟声明牵扯的实体和关系往往盘根错节。
最近看到的这篇工作,名为
CommunityKG-RAG: Leveraging Community Structures in Knowledge Graphs for Advanced Retrieval-Augmented Generation in Fact-Checking
框架的核心目标有三个:
- 把结构化和非结构化数据结合起来,利用知识图谱的整合能力提升事实核查效果;
- 通过社区结构和多跳路径,实现真正上下文感知的检索和多跳利用;
- 做成一个零样本框架,不需要额外训练或微调,保证可扩展性和适应性。
下面挑几个有意思的点来展开。
1、三种RAG策略的直观对比
论文中的Figure 1做了一个非常直观的比较:不检索、语义检索、以及CommunityKG-RAG,三者放在一起,差异一目了然。
- :大模型直接凭提示回答,没有任何外部上下文。缺乏额外信息,自然很难准确判断声明的真假。
不检索(No Retrieval)
- :通过计算提示和上下文的嵌入向量余弦相似度来检索信息。比不检索强,但在复杂事实核查中,多跳关系和深层上下文仍然不够用。
语义检索(Semantic Retrieval)
- :利用知识图谱中的多跳信息,通过社区结构来增强信息的准确性和相关性。具体步骤是:构建包含事实核查文章的知识图谱 → 用Louvain等算法识别社区结构 → 将社区中的节点和关系映射为嵌入向量 → 计算声明与社区的相关性得分,选出最相关的社区和句子。
CommunityKG-RAG
CommunityKG-RAG的核心优势在于:它提供的上下文信息更丰富、更深入,能帮助模型探索声明与实体之间的间接关系,从而显著提升事实核查的准确率。
二、CommunityKG-RAG的工作流程:从建库到查库
Figure 2 详细展示了CommunityKG-RAG的完整流程,从构建知识图谱到最终的事实核查,每一步都交代得很清楚。
1、建库阶段
- :流程的起点,这些文章是构建知识图谱的基础数据。
事实核查文章集合
- :作为预处理步骤,识别并整合同一实体的不同表达。使用的是一种基于SpanBERT的深度学习方法,已在大型语料库上预训练,能捕获广泛的句法和语义信息。
共指消解
- :文章被分解成单独的句子,方便后续处理。
分句
- :从句子中提取实体间的三元组关系,使用的关系提取模型是REBEL。
实体关系提取
- :节点代表实体,边代表关系。
构建知识图谱
- :用Louvain算法识别知识图谱中的社区结构——那些节点连接更密集的子图。
社区检测
- :社区和相关句子的信息统统存入数据库。
存储
以上所有信息,建库阶段就得提前处理好。
2、检索阶段(分6步)
- :用户提交一个需要核查的声明,触发整个流程。
声明或用户查询
- :为知识图谱中的每个节点分配预训练BERT模型的词嵌入,作为实体的语义表示。
节点特征嵌入
- :每个社区视为一个子图Gm=(Em, Rm),包含一组实体节点Em及其关系Rm。社区的嵌入表示φ(m)通过平均Em内节点的BERT嵌入生成。声明c和社区m之间的相关性得分r(c, m),则通过Sentence-BERT生成的句子嵌入与社区嵌入的点积来计算。
社区检索
- :基于相关性得分排名,选择前δ百分比的社区。这个选择标准确保分析集中在最可能包含与声明相关信息的社区上。
顶级社区选择
- :在选定的社区内,进一步计算每个句子p的相关性得分,选择前λ百分比的句子,得到最终的最相关句子子集P*c。
社区到句子的选择
- :将检索到的句子作为上下文输入到大模型中,与声明一起评估。
整合
- :使用LLaMa等大模型生成对声明的评估。
语言模型
- :大模型基于提供的上下文,输出“True”、“False”或“NEI”(Not Enough Information)。
事实核查
三、效果对比与消融分析
1、核心效果对比
Table 1 对比了几种检索方法在声明核查任务上的准确率,结果很说明问题:
- :准确率39.79%。
No Retrieval
- :准确率43.84%,比不检索有提升,语义上下文确实管用。
Semantic Retrieval
- :准确率39.41%,甚至略低于不检索。直接把三元组当上下文塞给模型,效果并不理想。
KAPING
- :准确率56.24%,显著领先。这里"25 100"代表选择最相关的前25%的社区,并使用这些社区映射到的100%的句子作为上下文。
CommunityKG-RAG25 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框架的实践告诉我们,精确且上下文感知的检索策略,才是关键所在。
归根结底,信息不是越多越好——
适量的、精心选择的上下文信息,对于提高大模型在复杂事实核查任务中的准确性,才是真正重要的
-
- 关于宇宙的好的网名有哪些
- 角色扮演 | 1
- 网名