今天是2024年10月21日,星期一,北京,天气晴。
本文来看两个工作,一个是知识图谱用于RAG查询扩展的思路,来做下实现细解读,属于知识图谱与RAG的结合范畴,一个是关于RAG发展的一个阶段性综述,提到的几个演化的点和未来的方向,值得看看。
供大家一起参考并思考。
一、知识图谱用于RAG查询扩展
先说场景,有的时候会面临具有文本和关系要求的复杂搜索查询,现有的方法大多关注于增强搜索查询与目标文档之间的文本相似性,而忽略了文档之间的关系。
例如,问题:Find me a highly rated camera for wildlife photography compatible withmy Nikon F-Mount lenses。查询指定了产品的文本要求“高评分”和“野生生物摄影”,以及关系要求“与尼康F卡口镜头兼容”。
最近的这个工作,《Knowledge-Aware Query Expansion with Large Language Models for Textual and Relational Retrieval》,https://arxiv.org/abs/2410.13765,提出了一个知识感知查询扩展框架,利用文档文本来丰富KG节点的表示,并采用基于文档的关系过滤来提取查询聚焦的关系。然后,通过收集的文本和关系知识作为输入,LLM生成查询扩展,这些扩展既贴近文档语料库,又保留了用户指定的文档关系。扩展后的查询将用于Knowledge-Aware Retrieval(KAR)最终检索。
可以看几个点:
1、现有几种扩展方式的对比
查询扩展一直是信息检索应用中广泛采用的技术,它通过添加额外的上下文来扩展原始查询,以匹配目标文档。
早期的研究使用最初检索到的文档作为伪相关性反馈(PRF),提取相关内容作为补充信息。然而,这些方法的有效性受到初始检索质量的限制。
最近,LLM增强的信息检索成为一个突出的领域,其中LLM被用来生成查询扩展,利用其固有的知识。
其中有一个结构化扩展的部分,那就是里面的doc-struct变量,就是对文档结构信息的定义,类似于schema,模型还写的目标是生成这种结构信息,类似于填槽操作:
例如:
HyDE使用LLM直接生成假想文档,这些文档回答了查询,然后使用它们的嵌入来检索相似的真实文档,如其prompt如下:
又如AGR,一个多步骤的查询扩展框架,分析-生成-细化,以结合LLM的自我细化能力,并以初始检索作为参考,使用多步骤框架来分析、生成,然后基于最初检索到的前n个文档进行优化,以利用大模型进行扩展优化。所以看起来prompt会复杂些,包括多个步骤,抽取Extract抽取query关键词,Analyze根据关键词跟query进行分析得到分析结果,再送入第一次Generate生成一个假文档,再送入第二次Generate,再生成多个假文档,最后送入Refine中获得最后的答案。
所以,prompt的构成如下:
又如,Query2Doc通过提供少量示例进一步改进了扩展质量,还探索了使用思维链作为扩展。为了解决LLM可能缺乏特定领域知识的限制。
接着,我们可以看个具体的例子,下图1展示了HyDE、RAR和KAR对于一个包含文本和关系要求的半结构化产品搜索查询生成的查询扩展示例,图1中的用户查询指定了产品的文本要求“高评分”和“野生生物摄影”,以及关系要求“与尼康F卡口镜头兼容”。
虽然HyDE和RAR丰富了文本信息,例如“野生生物”和“高评分”,但它们构建了错误的文档关系,例如“尼康Coolpix P1000”与“F卡口镜头”的兼容性。此外,可以看到KAR这个方法,多了一个叫Relations的字段,这个就是接下来要说的方案。
2、知识感知的查询扩展框架(Knowledge-Aware Retrieval (KAR))具体实现
首先是对文本和关系半结构化检索的查询扩展进行如下定义:
假设一个知识库包含一组文本文档D和一个知识图谱G = (V, R),其中di ∈ D是描述实体i的文本文档,vi ∈ V是知识图谱中对应的实体节点,R是不同节点之间的关系集。
例如,在图2中的论文搜索场景中,每篇论文i都有一篇包含摘要、会议、出版日期等信息的文本文档di,以及在知识图谱G上的对应节点vi,它编码了与其他节点的关系,如论文引用、作者和研究领域。
现在,给定一个查询q,它具有来自D中的非结构化文本和G中结构化关系的要求,半结构化检索的目标是输出一组文档A ⊆ D,使得每个文档描述的实体都满足查询q指定的文本和关系要求。
为了弥合查询和文档之间的差距,目标是根据可用的文本和关系知识来扩展原始查询q,生成查询扩展Qe,如下所示:
其中f代表一个查询扩展函数,扩展后追加到q作为扩展查询q'用于最终的文档检索。
先看其prompt,分成两个阶段
再来细看其实现框架,如下图:
1)实体解析
作为初始步骤,首先使用LLM从原始查询q中提取文档结构中明确提及的实体,表示为Eq,也考虑原始查询q本身作为一个伪实体,代表要检索的目标实体文档。
然后,对于论文搜索查询的实体可能包括作者姓名、论文标题和查询本身。
2)实体文档检索
对于Eq中提到的每个实体i,使用现成的文本嵌入模型从D中检索其关联的文本文档di。
如图2所示,作者文档包含论文和引用计数信息,而论文文档包含摘要和出版日期等出版信息。
3)知识图谱关系传播
基于半结构化知识库,将每个文档链接到知识图谱中对应的实体节点vi。
并对于每个节点vi,根据G中的知识图谱关系提取其h-hop邻居。
将这些邻居节点的集合表示为Ni,它们与vi的关系集合表示为Ri,例如,作者撰写论文,论文引用论文。
类似地,将每个邻居节点vj ∈ Ni链接到其对应的文本文档dj。
3)基于文档的关系过滤
对于密集的知识图谱,一个节点可能有很多邻居,包括与查询无关的节点,所以要剪枝。
现有的基于KG的方法通过评分节点和查询之间的相关性来过滤不相关的关系到基于实体名称的语义相似性。然而,这种方法忽略了用户查询的实体的丰富文本细节。
例如,在图2中的知识图谱搜索中,论文搜索的KG中的实体名称仅仅是论文标题,而论文的进一步细节,如摘要内容“高分辨率图像恢复”和出版信息“2010年”,通常在KG中不可直接获得,尽管这些信息经常被用户查询。
为此,利用相关的文档文本来丰富KG节点的表示,并使用基于文档的关系过滤来获取查询聚焦的关系。
具体来说,对于邻居节点集合Ni,不仅使用实体名称,而是将每个邻居节点的文本文档dj嵌入到文本嵌入模型中,表示为xj = Embed(dj),并也使用相同的嵌入模型嵌入原始查询q,表示为xq = Embed(q),然后,计算每个节点vj与查询q的语义相似性,并将其评分为:
这更准确地反映了查询和邻居节点之间的相关性,利用了除了实体名称之外的更丰富的文本细节,但这变成了Q-D查询,效果不一定好吧?基于相似性评分,选择评分最高的k个节点作为查询聚焦的邻居:
并导出相应的查询聚焦关系Ri,q ⊆ Ri,从而完成关系剪枝。
不过,由于基于文档的关系过滤使用现成的文本嵌入模型,因此它不需要像大多数图神经网络在知识图谱中添加新节点时那样进行重新训练。
4)文档三元组构建
有了过滤后的邻居节点和关系,进一步利用丰富的文本信息来构建基于文档的知识三元组,包括文档内部和外部的信息。如图2所示:
形式化如下:
其中ri,j表示知识图谱中从节点vi到节点vj的关系,例如,论文引用论文,而di和dj是与vi和vj相关联的文档文本,包含每个节点的细节,例如,论文摘要、会议和出版日期。
这样的文档三元组不仅提供了丰富的文本细节,还保留了知识图谱中的结构化关系知识,以增强信息的准确性。
5)知识感知扩展
最后一步,将文档三元组Tq转换为文本,与原始查询q一起作为LLM的输入。
利用其大模型的文本推理能力,提示LLM从Tq中提取有用信息,并生成帮助回答查询q的查询扩展,如下所示:
通过单个LLM推理采样n个响应,并将它们连接作为最终扩展,追加到原始查询。定义的扩展查询q'然后用于最终的基于嵌入的文档检索。
所以,在整个查询扩展过程中,利用文档和知识图谱关系的协作。
二、再看关于RAG发展的一个阶段性综述
关于RAG的综述,我们已经讲过很多了,对于跟进技术的发展史很有帮助的,最近又有个新的可以关注,如《A Comprehensive Survey of Retrieval-Augmented Generation (RAG): Evolution, Current Landscape and Future Directions》,https://arxiv.org/abs/2410.12837,介绍了RAG从基础概念到当前最新技术的发展。
可以看几个点:
一个是技术演化,如下所示,一个时间线:
一个是对当前RAG系统的不足认知:
1)可扩展性和效率:随着RAG模型需要处理的外部数据库的规模和动态增长,高效的检索算法变得至关重要。高计算成本和内存需求也使得在实时或资源受限的环境中部署RAG模型变得困难。
2.)检索质量和相关性:确保检索文档的质量和相关性是一个重要问题。检索模型有时可能会返回不相关或过时的信息,这会负面影响生成输出的准确性。提高检索精度,尤其是对于长形式内容生成,仍是一个活跃的研究领域。
3)偏见和公平性:与其他机器学习模型类似,RAG系统可能会因为检索数据集中存在的偏见而表现出偏见。基于检索的模型可能会放大检索知识中的有害偏见,导致生成的输出带有偏见。开发用于检索和生成的偏见缓解技术是一个持续的挑战。
4)连贯性:RAG模型经常在将检索到的知识整合到连贯、上下文相关的文本中遇到困难。检索段落与生成模型输出之间的对齐并不总是无缝的,导致最终响应中出现不一致或事实错误。
5)可解释性和透明度:像许多AI系统一样,RAG模型通常被视为黑盒,对于检索如何影响生成的透明度有限。提高这些模型的可解释性对于在关键应用中建立信任至关重要。
一个是对未来RAG研究的方向,其中3个比较现实:
1)增强多模态集成:未来的研究应专注于改进多模态融合技术,实现不同数据类型之间的无缝交互。这包括开发先进的方法来对齐和合成跨模态的信息,以及研究跨模态检索,以提高视觉问答和多媒体搜索等应用的性能。
2)扩展和效率:随着RAG模型在更大规模应用中的部署,可扩展性成为一个关键问题。研究应集中在开发能够在不牺牲性能的情况下扩展检索和生成过程的方法。这涉及到分布式计算和高效索引方法的开发,以及优化检索和生成组件以减少计算资源和延迟。
3)个性化和适应性:未来的RAG模型应专注于根据个体用户的偏好和上下文个性化检索过程。这包括开发基于用户历史、行为和偏好适应检索策略的技术,以及通过更深入地理解查询和文档库的上下文和情感来增强RAG模型的上下文适应性。
总结
本文主要介绍了两个工作,一个是知识图谱用于RAG查询扩展的思路,属于知识图谱与RAG的结合范畴,一个是关于RAG发展的一个阶段性综述,提到的几个演化的点和未来的方向,值得看看。
参考文献
1、https://arxiv.org/abs/2410.13765
2、https://arxiv.org/abs/2410.12837
关于我们
老刘,NLP开源爱好者与践行者,主页:https://liuhuanyong.github.io。
对大模型&知识图谱&RAG&文档理解感兴趣,并对每日早报、老刘说NLP历史线上分享、心得交流等感兴趣的,欢迎加入社区,社区持续纳新。
加入会员方式:关注公众号,在后台菜单栏中点击会员社区->会员入群加入