最近在想,很有趣的是,大家做了那么多,没有一个完美方案,总结的来说:监督微调计算成本高且容易过拟合;上下文学习(ICL)依赖于手工模板,效率低且难以处理长上下文;检索增强生成(RAG)依赖于检索文档的质量和相关性,计算成本高;知识图谱(KG)方法需要大量手动构建和维护,扩展性差。
所以,RAG这个补丁越打越多,并且是针对不同的任务再花式地打,所以,这里来回顾下最近一周值得关注的几个工作进展。
一个是关于推理规则用于RAG的一些思路,知识图谱本身也可以作为一些规则约束加进去,关键是怎么挖掘规则,匹配规则。另一个是KGQA范式下的GraphRAG代表工作及EGO-GraphRAG组合设计,这是对昨天话题的延续;另一个是RAG怎么跟之前传统的知识补全模型打配合。
一、KGQA范式下的GraphRAG代表工作及EGO-GraphRAG组合设计
可以看一个关于GraphRAG进展,《EGO-GraphRAG: Modularizing Graph-based Retrieval-Augmented Generation for Design Space Exploration》,https://arxiv.org/pdf/2411.05844,其中针对KGQA范式下的GraphRAG做了一些索引,并针对各个模块的内容做了组合实验,其中有很多关键的技术点可供我们索引。
其出发点在于,现有的RAG方法主要依赖于文档检索,容易引入噪声和冗余信息。最新的趋势是发展基于图的RAG框架(GraphRAG),通过图结构来提取特定的“推理路径”,从而提供更精确和相关的信息。这里面一个重要的点,是怎么找到最佳的路径。
因此,可以看其中具体的点,可以进一步分解为三个相互连接的模块:子图提取、路径过滤和路径细化。
其中提到一些已有的最近进展,可以参考:
1)KB-BINDER:《Few-shot In-context Learning for Knowledge Base Question Answering》(https://arxiv.org/abs/2305.01750) ,为了在统一的无需训练的框架下处理不同KBQA数据集上的问题,KB-BINDER实现了在KBQA任务上的少样本上下文学习。首先,利用像Codex这样的大模型通过模仿一些示例来为特定问题生成逻辑形式作为草稿。其次基于知识库,使用BM25分数匹配将生成的草稿绑定到一个可执行的草稿上。
2)StructGPT:《StructGPT: A General Framework for Large Language Model to Reason over Structured Data》(https://arxiv.org/pdf/2305.09645) ,这个工作的目的是以统一的方式提高大模型(LLMs)对结构化数据的推理能力,构建了专门的接口来从结构化数据中收集相关证据(即阅读),并让LLMs专注于基于收集到的信息进行推理任务(即推理)。
3)ToG:《Think-on-Graph 2.0: Deep and Faithful Large Language Model Reasoning with Knowledge-guided Retrieval Augmented Generation》,核心思想是利用知识图谱(KGs)通过实体链接文档,促进深入且由知识引导的上下文检索。同时,使用文档作为实体上下文,以实现精确高效的图检索,也就是说,ToG在图检索和上下文检索之间交替进行,寻找与问题相关的深入线索,使LLMs能够生成答案。
4)RoG:《Reasoning on Graphs: Faithful and Interpretable Large Language Model Reasoning》 ,核心思想是提出了一个规划-检索-推理框架,其中RoG首先生成由KGs支持的关系路径作为忠实的计划。然后,这些计划被用来从KGs中检索有效的推理路径,供LLMs进行忠实的推理。
5)KELP:《Knowledge Graph-Enhanced Large Language Models via Path Selection》(https://arxiv.org/pdf/2406.13862) ,提出了一个分三个阶段的原则性框架KELP来处理上述问题,通过潜在语义匹配为输入文本生成知识路径的分数,实现更细粒度的灵活知识提取。同时,通过训练KG中选定路径与输入文本之间的编码,也可以考虑与输入文本有间接语义关系的知识路径。
6)DoG:《Debate on Graph: a Flexible and Reliable Reasoning Framework for Large Language Models》(https://arxiv.org/pdf/2409.03155) ,其认为,过长的推理路径分散了答案生成的注意力,以及误报关系阻碍了路径的精细化。所以,提出了一个迭代交互式KGQA框架,利用LLMs的交互学习能力来执行图上的推理和辩论(DoG),即DoG采用子图聚焦机制,允许LLMs在每个推理步骤后尝试回答问题,从而减轻了漫长推理路径的影响,并利用多角色辩论团队逐步简化复杂问题,减少了误报关系的影响。
7)GSR:《Less is More: Making Smaller Language Models Competent Subgraph Retrievers for Multi-hop KGQA》(https://arxiv.org/pdf/2410.06121) ,核心思想将子图检索任务建模为由小型语言模型处理的条件生成任务,并定义子图标识符为一系列关系,每个关系都表示为存储在语言模型中的一个特殊标记。
8)GCR:《Graph-constrained Reasoning: Faithful Reasoning on Knowledge Graphs with Large Language Models》(https://github.com/RManLuo/ graph-constrained-reasoning,https://arxiv.org/pdf/2410.13080) ,核心思想是利用一个轻量级的KG专用LLM进行图约束推理,以及一个强大的通用LLM在多个推理路径上进行归纳推理。
关于这些方案的进一步细节,大家可以看原文。
另外的,对于EGO-GraphRAG,其实际上是做了一个各阶段的排列组合实验。分成三个阶段:
在子图提取阶段,通过缩小搜索空间,从整个图中提取与查询相关的子图。常用的方法包括**个性化PageRank(PPR)、随机游走重启(RWR)**等;
在路径过滤阶段,从提取的子图中检索推理路径。常用的方法包括完整路径过滤、最短路径过滤、迭代路径过滤等;
在路径细化阶段,进一步筛选推理路径,确保只有最相关的路径用于LLMs的推理过程。常用的方法包括BM25、Sentence-Transformers、Rerank模型等,里面提到的这些路径剪枝的方案,可以看看,补充知识体系。
所以,共做了20组实验:
对应的评估指标如下,这其实也是正如该方案的名称,乐高GraphRAG,做的是一个组合对比实验。
可以关注,一个是时间消耗,一个是具体指标;
二、关于ranking思想引入到知识图谱补全(KGC)任务
知识图谱补全任务(从一个不完整的三元组中推断出缺失的实体)也是一个重点,对于这个任务,大模型也卷的挺多,其核心难点在于,如何利用实体上下文信息来增强知识图谱的语义表示;如何有效地结合结构化和非结构化信息来进行推理。还有就是,泛化性怎么去保证,
之前,大家都喜欢用TransE这种嵌入的方式做,但是,现有的基于嵌入的方法仅依赖于知识图谱中的三元组,这容易受到虚假关系模式和长尾实体的影响。
所以,后面大家就想着说,借助更多的信息,例如基于文本的方法在知识图谱三元组和自然语言之间的语义差距上挣扎。除了三元组之外,实体上下文(例如,标签、描述、别名)在增强知识图谱方面也发挥着重要作用。所以,也有直接让大模型生成实体的上下文而做的工作,但坦白说,**生成的这个上下文噪声很大,那怎么办?
很好的方式,就是引入ranking的方法去做过滤,这很自然**。
因此,可以看这种思路的一个实现,《Retrieval, Reasoning, Re-ranking: A Context-Enriched Framework for Knowledge Graph Completion》,(https://arxiv.org/abs/2411.08165),其核心思路在于,设计三个模块。
首先,检索模块从知识图谱中收集支持三元组,
从基础嵌入模型(比如TransE, RotatE, GIE, SimKGC, CoLE, and NBF-Net)中收集可能的候选答案。
并检索每个相关实体的上下文。
这里的支持三元组检索是优先检索与查询三元组具有相同实体和关系的支持三元组(注意,是相同关系和实体),若数量不足则放宽条件,上下文检索指的是从Wikidata知识库中提取与查询三元组和支持三元组中的实体相关的文本上下文信息。
这一步拿到了第一组答案,来自于传统方案;
然后,推理模块使用大模型为每个查询三元组生成潜在答案,具体根据已知实体的描述和支持三元组生成多个可能的答案。
这里有个fewshot,也就是In-context Demonstration,目的应该是让大模型知道这种任务形式,已经检索的支撑三元组,实体的描述,希望能够推出来对应的尾实体;
然后将问题中实体对应的描述来生成多个答案:
也就是说,最后的整体流程如下:
这一步拿到了第二组来源,来自于llm推理
最后,重排序模块结合上述两个模块的候选答案,并微调一个大模型以提供最佳答案。
这里的核心就是微调,整体的效果要比之前TransE要好,加入实体描述信息也是有收益的。
三、关于推理规则用于RAG的一些思路
RuAG(Learned-Rule-Augmented Generation),《RuAG: Learned-rule-augmented Generation for Large Language Models:https://arxiv.org/abs/2411.03349),其核心思路为通过将大量离线数据自动提炼成可解释的一阶逻辑规则,并将其注入大模型(LLMs)中,以增强其推理能力,这里想说明的是,这个的确是有用的。
核心看两点,一个是规则的表示,使用的是一阶谓词逻辑;
一个是在不同任务上,对应推理规则的表示:
以及得到的结果:
其实,这个工作和《RULERAG: RULE-GUIDED RETRIEVAL-AUGMENTED GENERATION WITH LANGUAGE MODELS FOR QUES- TION ANSWERING》(https://arxiv.org/pdf/2410.22353),引入规则知识进行RAG,核心三个东西:
规则库R:包含了用于指导检索和生成的规则,这些规则以自然语言形式表达,如“[实体1, r1, 实体2] 导致 [实体1, r2, 实体2]”;
检索器(RG-retriever):根据查询和规则检索相关文档的组件;
生成器(RG-generator):根据检索到的文档和规则生成答案的组件;
语言模型(LLM):用于理解和生成自然语言的预训练模型;
核心思路在于,通过引入符号规则作为上下文学习(In-Context Learning, ICL)示例,指导检索器检索与查询逻辑相关的文档,并统一指导生成器根据同一套规则生成答案,如这个例子。
其难点在于规则的挖掘,RAG可以Recall任何东西,关键是那个东西要存在,这很重要。
如何学习大模型 AI ?
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
第一阶段(10天):初阶应用
该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。
- 大模型 AI 能干什么?
- 大模型是怎样获得「智能」的?
- 用好 AI 的核心心法
- 大模型应用业务架构
- 大模型应用技术架构
- 代码示例:向 GPT-3.5 灌入新知识
- 提示工程的意义和核心思想
- Prompt 典型构成
- 指令调优方法论
- 思维链和思维树
- Prompt 攻击和防范
- …
第二阶段(30天):高阶应用
该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。
- 为什么要做 RAG
- 搭建一个简单的 ChatPDF
- 检索的基础概念
- 什么是向量表示(Embeddings)
- 向量数据库与向量检索
- 基于向量检索的 RAG
- 搭建 RAG 系统的扩展知识
- 混合检索与 RAG-Fusion 简介
- 向量模型本地部署
- …
第三阶段(30天):模型训练
恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。
到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?
- 为什么要做 RAG
- 什么是模型
- 什么是模型训练
- 求解器 & 损失函数简介
- 小实验2:手写一个简单的神经网络并训练它
- 什么是训练/预训练/微调/轻量化微调
- Transformer结构简介
- 轻量化微调
- 实验数据集的构建
- …
第四阶段(20天):商业闭环
对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。
- 硬件选型
- 带你了解全球大模型
- 使用国产大模型服务
- 搭建 OpenAI 代理
- 热身:基于阿里云 PAI 部署 Stable Diffusion
- 在本地计算机运行大模型
- 大模型的私有化部署
- 基于 vLLM 部署大模型
- 案例:如何优雅地在阿里云私有部署开源大模型
- 部署一套开源 LLM 项目
- 内容安全
- 互联网信息服务算法备案
- …
学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。
如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。