解决 GraphRAG 检索噪声、过度依赖图谱导致性能下降的痛点

论文:Empowering GraphRAG with Knowledge Filtering and Integration

解决 GraphRAG 问题:

  • 噪音检索:当从外部知识图谱中检索到不相关或误导性的信息时,会干扰模型推理

  • 过度依赖外部知识:模型可能忽略其内部已有的正确信息,导致性能下降。

当检索到的信息与问题不匹配、存在大量噪声或冲突时,GraphRAG 会误导模型,从而导致性能下降。

尤其是当知识图谱中的实体/路径数量过多或出现无关三元组时,LLM 在生成答案时会“过度信任”外部信息,最终比单独使用 LLM 还差。

问: “Filtering”(过滤) 在 GraphRAG 中的目的是什么?

  • :已有研究发现,如果从知识图谱检索到的路径或三元组(即外部信息)里混入了很多“无关”或“错误”信息,反而会干扰模型做出正确回答。

  • 于是就需要“过滤机制”(filtering)来把检索到的噪声或无关信息删掉,只保留对问题最有帮助的那部分。

问:为什么要有 “Integration”(整合) 这一步?

  • :因为有时大模型自己本身就知道答案(内在知识),不一定所有题都要依赖外部的图谱检索。

  • 如果盲目依赖检索到的外部信息,可能会“舍近求远”,或者把本来大模型能正确回答的题目给带偏。

  • 因此上文提到的 Integration 机制会让系统判断——是该用大模型内在知识,还是用外部检索信息,或者把两者结合起来,得到最优解。

为什么仅靠常规的过滤方法(如 PageRank、相似度)也不够?

  • 单纯的“相似度”或“图结构”筛选,无法动态感知 LLM 在具体回答场景下最需要的知识点,也没法实时判断“模型自身已经知道哪些答案,不需要重复信息”。

  • 因此需要更灵活、和 LLM 结合更紧密的过滤与整合机制(如作者提出的Attention 分数 + logits 评估)。

解决思路:

GraphRAG-FI
├── 子解法 1:GraphRAG-Filtering
│    ├── 粗过滤:基于注意力
│    └── 细过滤:基于 LLM 评分
└── 子解法 2:GraphRAG-Integration
     ├── 生成多答案
     └── logits 筛选融合

GraphRAG-Filtering:利用注意力和 LLM 评分进行“双阶段过滤”,只保留最相关、最可信的外部检索路径。

  • 在检索到的大量路径中先用注意力机制“粗过滤”,再用 LLM 评分“细过滤”,得到高优先级外部知识;

GraphRAG-Integration:基于 logits 分值来融合“外部增强答案”和“模型内部答案”,避免模型盲目信任检索内容。

  • 通过 logits 置信度判断来结合“外部增强答案”和“LLM-only 答案”,平衡二者。

问:关于“双阶段过滤”的必要性

作者为什么不直接在“细过滤”阶段就让 LLM 处理全部检索到的路径,而是先做一个“粗过滤”,这样分两步的设计有什么特定优势?难道多调用 LLM 做一次整体过滤不行吗?

论文说明了两阶段过滤的动机——若不先用较轻量级的“注意力阈值”进行粗过滤,LLM 将会在“细过滤”阶段面临过多、甚至成百上千条检索路径,需要计算量大且噪声严重;

此外,一次性让 LLM 处理所有检索结果,成本和复杂度会急剧上升,而“粗过滤”能先把明显无关的信息剔除,再让 LLM 更精细地处理剩余的少量候选,效率和效果都更好。

问:关于“注意力分数”在过滤阶段的依据

作者在使用“注意力分数”进行粗过滤时,选择了中间层(“(middle 2)-th layer”)的注意力,这是否是一种拍脑袋决定?如果换别的层,或是取多层的平均注意力,结果会如何?

作者在文中提到有文献(如 Chuang et al., 2023;Halawi et al., 2023)指出,模型中间层往往对句子级或片段级的关联信息较为敏感,在小规模试验中效果较好。

不过,这并不代表这是唯一正确做法。若取多层平均或取更深层,可能也有竞争力,但会增加计算开销或带来噪声。

作者未在论文中做大规模对比,仅给出提议和小范围实测结果,属于一种经验性选择。

全流程分析

     
    
    ├── GraphRAG-FI【核心方法:融合检索与内在推理】
    │    ├── 输入【问题 + 外部图谱检索结果 + LLM 自身知识】
    │    │    ├── 问题:自然语言提问【用户需求】
    │    │    ├── 检索结果:由外部知识图谱获取的多条路径或三元组【外部支持】
    │    │    └── LLM 自身知识:模型内部预训练参数中蕴含的信息【内在认知】
    │    │
    │    ├── 处理过程【两大模块:GraphRAG-Filtering + GraphRAG-Integration】
    │    │    ├── GraphRAG-Filtering【模块 1:过滤外部信息】
    │    │    │    ├── 阶段 1:基于注意力的粗过滤【路径重要性判断】
    │    │    │    │    ├── 使用 LLM 对检索到的路径或三元组进行注意力评分【提取相关性】
    │    │    │    │    └── 筛选得分较高的部分作为高优先级候选【去除低相关内容】
    │    │    │    └── 阶段 2:基于 LLM 的细过滤【精细化判断】
    │    │    │         ├── 对粗过滤后剩余的高优先级路径,利用 LLM 进一步打分【确认可靠性】
    │    │    │         └── 仅保留得分超过阈值的路径,形成最终可用外部知识【确保准确】
    │    │    │
    │    │    └── GraphRAG-Integration【模块 2:平衡内外部知识】
    │    │         ├── logits 筛选【识别高置信度答案】
    │    │         │    ├── 分别对“LLM-only 答案”与“外部知识增强答案”计算 logits【评估可信度】
    │    │         │    └── 过滤掉低置信度回答,仅保留高分答案【提高鲁棒性】
    │    │         └── 动态融合【综合输出】
    │    │              ├── 根据最终剩余的高置信度答案,选取或合并【答案整合】
    │    │              └── 避免外部信息覆盖模型自身正确答案【防止错误引入】
    │    │
    │    └── 输出【改进后的问答结果】
    │         ├── 最终答案:融合模型自身知识与高质量外部路径【回答精准】
    │         └── 附加解释:可选地列出使用到的关键外部证据【可追溯性】

    数据来源

    论文使用了两个大规模知识图谱问答(KGQA)数据集:

    • WebQSP

      :包含 2,826 条训练数据和 1,628 条测试数据,问题多为 2-hop 推理。

    • CWQ(ComplexWebQuestions)

      :包含 27,639 条训练数据和 531 条测试数据,涉及多跳(最多 4-hop)推理。

    以 ROG 为例,GraphRAG-FI 相比 PageRank 滤法,大约在 Hit 上有 4 个点的提升;相比相似度过滤也差不多是类似幅度。

    三种检索方式都能从 GraphRAG-FI 中收益,但由于检索方式不同,初始噪声水平和子图/路径结构不一样,提升幅度也不同。

    相对而言,GNN-RAG 最初命中率就高,提升空间略小;SubgraphRAG 的基线相对弱,整合后收益最大。

    没想到 GNN-RAG 方法这么好,比 SubgraphRAG 牛逼太多了。

    我之前写的算法就是 SubgraphRAG,现在必须转 ROG、GNN-RAG。

    ### GraphRAG接入知识图谱的方法 GraphRAG是一种基于知识图谱检索增强生成模型,其核心在于利用知识图谱中的结构化信息来提升自然语言处理任务的效果。为了将GraphRAG与知识图谱集成,通常需要完成以下几个方面的设计和技术实现。 #### 数据准备阶段 在这一阶段,主要目标是从原始数据源中提取实体和关系,并将其转化为适合的知识图谱形式。这一步骤可以通过命名实体识别(NER)、关系抽取等技术完成[^3]。具体来说: - **实体识别**:可以采用预训练的语言模型(如BERT)或者传统的机器学习方法(如CRF),用于从文本中抽取出感兴趣的实体。 - **关系分类**:对于每一对已识别的实体,进一步判断它们之间的语义关系是什么。此过程可能涉及监督学习或远程监督策略。 #### 构建知识图谱 一旦获得了足够的实体及其实体间的关联信息之后,则需把这些内容存储到一个统一的知识库当中去形成完整的知识图谱[^1]。常见的做法包括但不限于使用三元组的形式表达事实并存入数据库之中;同时还需要考虑性能优化措施比如索引建立以及分布式部署方案等问题以便于后续查询操作更加高效快捷。 #### 集成至GraphRAG框架内 当拥有了高质量的知识图谱后就可以着手将其嵌入到GraphRAG系统里去了。以下是几个关键点: - **向量化表示**: 将节点(即实体) 和边 (代表两者之间存在的某种特定联系 ) 转换成低维度稠密向量空间里的点, 方便计算机理解和计算相似度得分等等. ```python from transformers import AutoTokenizer tokenizer = AutoTokenizer.from_pretrained('bert-base-uncased') embeddings = [] for entity in entities: input_ids = torch.tensor([tokenizer.encode(entity)]).to(device) with torch.no_grad(): embedding = model(input_ids)[0][:, 0, :] embeddings.append(embedding.cpu().numpy()) ``` - **融合机制的设计**: 设计合理的算法使得外部引入的知识能有效补充内部记忆模块所缺乏的信息,在预测过程中发挥积极作用而不是造成干扰[^2]. #### 实际应用案例分析 假设我们正在开发一款智能客服机器人项目,其中需要用到大量行业专业知识作为支撑材料。此时如果单纯依赖历史对话记录来进行回复可能会因为覆盖范围有限而无法满足实际需求。因此我们可以先收集整理相关领域内的权威资料建立起专属的小型KG再结合上述提到的技术手段最终达到提高问答质量的目的。
    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值