RAG(Retrieval-Augmented Generation)主要依赖于文本相似性进行实体检索,但在处理包含文本和拓扑信息的图结构时显得不足。GRAG旨在解决传统RAG方法在图结构文本中的不足。GRAG强调了子图结构的重要性,提升了检索和生成过程的效果,提高了多跳推理任务中的性能,并有效减少了“幻觉”(即生成错误信息)的发生。GRAG包含四个主要阶段:索引、图检索、软剪枝和生成

1 索引阶段

使用预训练语言模型(PLM)将k跳自我图(k-hop ego-graphs)索引并转换为图嵌入。

  • 在这个阶段,GRAG首先对文本图中的每个节点周围的k跳自我图(k-hop ego-graphs)进行编码,并将这些自我图转换为图嵌入(graph embeddings)。
  • 使用预训练的语言模型(PLM)来将节点和边上的文本属性转换为嵌入向量,然后通过均值池化(mean pooling)操作来获得每个子图的图嵌入。

2 图检索阶段

检索与查询最相关的前N个文本子图。

  • 利用PLM获得问题(query)的嵌入表示,然后计算问题嵌入与每个k跳自我图嵌入之间的相似度。
  • 根据余弦相似度(cosine similarity)找到与问题最相关的前N个文本子图,这些子图将用于后续的生成阶段

3 软剪枝阶段

通过学习基于它们与查询的相关性的缩放因子,对检索出的子图进行剪枝,减少检索到的文本子图中不相关实体的影响。

  • 检索到的子图中可能包含不相关或冗余的节点和边,这些元素可能对最终生成的结果产生负面影响。
  • 为了解决这个问题,GRAG采用了软剪枝方法,通过学习每个节点和边与问题的相关性,来调整它们的属性权重。
  • 使用多层感知机(MLP)来计算节点和边的缩放因子,这些因子基于它们与问题向量的元素距离来确定

4 生成阶段

这个阶段涉及到使用检索到的修剪过的文本子图和原始问题来控制LLM的生成过程。结合修剪过的文本子图和原始查询,使用图神经网络(GNNs)聚合信息,然后对齐图嵌入与LLM的文本向量,生成上下文和事实一致的回答。

  • 提出了一种新颖的提示(prompting)策略,将提示分为硬提示(hard prompts)和软提示(soft prompts)。
  • 硬提示:将检索到的文本子图转换为层次化的文本描述,并与问题文本结合,形成硬提示,以保留语义细节和图拓扑信息。
  • 软提示:通过图嵌入来捕获图的拓扑信息,使用图神经网络(GNNs)和图注意力网络(GAT)来聚合子图中的信息,并通过MLP对齐图嵌入和LLM的文本向量。

5 结语

GRAG在需要详细多跳推理的文本图场景中性能优异。使用GRAG的所有任务中的表现超过了微调过的LLM,且训练成本更低。

论文题目:GRAG: Graph Retrieval-Augmented Generation

论文链接:https://arxiv.org/pdf/2405.16506

PS: 欢迎大家扫码关注公众号_,我们一起在AI的世界中探索前行,期待共同进步!

图检索增强生成--GRAG_数据集

精彩回顾

1. LLM文本数据集775TB:覆盖32个领域,444个数据集

2. 基于网络搜索的长篇问答能力优化:FoRAG

3让LLMs在结构化数据上推理-StructGPT