KG-RAG大模型问答之KG-Rank排序策略:兼看20240709大模型进展回顾

今天是2024年7月10日,星期三,北京,天气晴。

我们来看两个问题,一个是回顾老刘说NLP20240709大模型进展早报,并对一些技术方案、开源项目相关的进展进行跟踪,这个会有一定的意义。

另一个问题是,面向单跳知识图谱问答场景的KG-Rank排序策略,也是KG-RAG的一部分,思路很简单,也可看看。

供大家一起参考并思考。

1、问题1:老刘说NLP社区20240709大模型进展回顾

先来回顾昨日大模型进展早报,主要围绕在KG-RANKING等各个方面,这是社区例行日常分享,每日一报,欢迎加入社区,一同共享进展

【老刘说NLP20240709大模型进展早报】

1、关于KG-RAG中的KG Ranking问题

《KG-Rank: Enhancing Large Language Models for Medical QA with Knowledge Graphs and Ranking Techniques》,这个工作提出了一个名为KG-Rank的增强大模型框架,结合了医学知识图谱(KG)和排名技术,以提高医学领域长形式问答任务中生成内容的事实一致性。

地址:https://arxiv.org/abs/2403.05881.pdf,代码:https://github.com/YangRui525/KG-Rank

关于这一点,我们在下文进行介绍。

2、关于知识图谱与大模型的一些融合分享

可以看看第三届智能决策论坛知识图谱与大语言模型分论坛,https://www.bilibili.com/video/BV1UJ4m1n7TS

3、一个开源的大模型课程

一个大模型课程:https://github.com/datawhalechina/so-large-lm,对大模型基础知识感兴趣的可以关注。

4、一个很有意思的智能体项目

遇见李白AI 智能体:https://github.com/BinNong/meet-libai,可以看看其实现架构。

https://github.com/BinNong/meet-libai/blob/main/asset/images/architecture.png

5、关于大模型评估进展

评估大模型在结构化输出任务上的表现,包括多标签分类、命名实体识别和合成数据生成等结构化输出的性能: https://github.com/stephenleo/llm-structured-output-benchmarks

6、一个新的大模型训练框架

《LLMBox: A Comprehensive Library for Large Language Models》,可以对比Llamafactory看训练资源要求,如https://github.com/RUCAIBox/LLMBox/blob/main/training/gpu_calculator.py

地址:https://arxiv.org/pdf/2407.05563,代码:https://github.com/RUCAIBox/LLMBox

7、多模态RAG动手实践

图片CLIP、音频Wav2Vec做Embedding嵌入生成,https://mp.weixin.qq.com/s/-zC5m9y2ftDsHMasGjGMmQ

8、关于RAG中的检索策略,有四种不同的构造数据的方案

Query vs Original:简单高效,数据结构是直接使用用户query召回知识库片段;

Query vs Query:便于维护,即使用用户的query召回query,冷启动的时候可以利用模型自动化从对应的知识片段中抽取query;

Query vs Summary:使用query召回知识片段的摘要,构建摘要和知识片段之间的映射关系;

F-Answer vs Original:根据用户query生成fake answer去召回知识片段。

问题2:面向单跳KG问答场景的KG-Rank排序策略

KG-RAG最近受到大家广泛关注,而除了将知识图谱作为chunk的形式约束之外,将已有的知识图谱作为召回源进行增强也是一个很有缺点方向。

这个工作提出了一个名为KG-Rank的增强大模型框架,结合了医学知识图谱(KG)和排名技术,以提高医学领域长形式问答任务中生成内容的事实一致性。

KG-Rank: Enhancing Large Language Models for Medical QA with Knowledge Graphs and Ranking Techniques》 (https://arxiv.org/abs/2403.05881.pdf,代码:https://github.com/YangRui525/KG-Rank)

这个工作的思想在于,KG-Rank应用了多种排名技术来优化三元组的排序,包括相似度排名、答案扩展排名和最大边际相关性(MMR)排名,这些技术有助于过滤不相关数据、突出关键信息,并确保答案的多样性。此外,在重新排名模型方面,使用医学交叉编码器模型对排名后的三元组进行重新评估,以确保选择最相关的三元组。

我们可以看下实现思路:知识图谱事现成的,选择UMLS(Unified Medical Language System)作为医学知识图谱输入。

1、Step 1: Entity Extraction and Mapping实体提取和映射

使用医学命名实体识别(NER)提示从问题Q中提取关键实体,并将其映射到知识图谱G中的相应实体。

具体实现上,直接采用一个医学NER提示PMedNER来识别相关医学实体EQ,然后将每个实体映射到知识图谱G中,相应实体prompt进行提示大模型进行提取:

2、Step 2: Relation Retrieval and Triplet Ranking关系检索和三元组排名

在识别了相应的实体后,从KG中检索它们的一级(one-hop)关系,并提出排名方法以提取最相关的信息。

这涉及到将问题Q和每个三元组编码,编码模型使用UmlsBERT(https://arxiv.org/abs/2010.10391),然后使用以下三个方案对三元组进行排名:

相似度排名:计算问题嵌入q与每个关系嵌入rij之间的相似度得分;

答案扩展排名:先使用LLM生成问题Q的幻觉答案(hallucinatory)A,然后编码[Q, A]的组合以获得文本嵌入t,接着使用扩展的问题嵌入t在向量空间中寻找最相似的三元组;

最大边际相关性(MMR)排名:先确定与问题Q相似度得分最高的三元组。对于剩余的三元组,我们根据已经选择的三元组动态调整它们的相似度得分。

3、Step 3: Re-Ranking重新排名

在排名阶段之后,使用医学交叉编码器模型对三元组进行重新评估,确保选择最相关的三元组。

4、Step 4: Obtaining LLM Response获取LLM响应

将重新排名后的最高三元组与任务提示结合,输入到LLM中以生成答案。

其核心在于结合prompt的模版,如下:

总的来说,这种方案实际上只能做单跳,其使用各种排名策略,最终还是为了解决能够召回大最佳的三元组,其中对于三元组等各种embedding的组合思想,也借鉴,尤其是生成伪答案的方式,其实跟RAG中常用策略也十分类似。

总结

本文主要看了两个问题,一个是回顾老刘说NLP20240709大模型进展早报,并对一些技术方案、开源项目相关的进展进行跟踪,这个会有一定的意义,另一个是面向单跳知识图谱问答场景的KG-Rank排序策略,也是KG-RAG的一部分,思路很简单,也可看看。

参考文献

1、https://arxiv.org/abs/2403.05881.pdf

关于我们

老刘,刘焕勇,NLP开源爱好者与践行者,主页:https://liuhuanyong.github.io。

老刘说NLP,将定期发布语言资源、工程实践、技术总结等内容,欢迎关注。

对于想加入更优质的知识图谱、事件图谱、大模型AIGC实践、相关分享的,可关注公众号,在后台菜单栏中点击会员社区->会员入群加入。


相关推荐

  • CVPR 2024 录用数据出炉!这些方向是大趋势!
  • SpringBoot 如何处理跨域请求?你能说出几种方法?
  • 突发,众多网站流量被盗刷!我特么也中招了
  • 再见One-Hot!时间序列特征循环编码火了!
  • 本周四得到 App 直播,欢迎你来捧场😄🤝
  • 统计学神书之后,国内概率论教材的天花板来了!
  • 暑期限定|机器学习、联邦学习,隐私计算实训营免费参与!
  • ACL2024 | AI的时空穿越记:大型语言模型共时推理的奇幻之旅!
  • 又发了一篇顶会!
  • 【SpringBoot】 Test & Junit5 看这一篇就足够了
  • 29岁,大厂女程序员,总包六折结束北漂,聊聊换城市。
  • Stream很好,Map很酷,但答应我别用toMap()
  • 分享10 个功能强大的单行CSS布局技巧
  • “一秒”宕机一个半小时!这个让程序员抓狂的续一秒,今年无了!
  • 28.3K Star ,你绝不能错过的JSON可视化工具
  • 分享两个浏览器小插件:提升效率美化页面、增加鼠标点击定制效果
  • 张小龙:视频号红利
  • 李彦宏呼吁行业不要卷模型、无人驾驶来了、快手可灵火了
  • Python 是怎么存储字符串的?
  • ES2024新特性:object.groupBy()让分组更简单