我们今天回到RAG话题,来看CausalRAG方案将因果推理应用于RAG的工作,传统的RAG系统面临着严重的限制,包括文本分块导致上下文完整性中断,以及过度依赖语义相似性进行检索,这种相似度容易有噪声,所以可以做下因果性。
另外,关于MCP,我们来看一个开源实现的实践工作,可以去实践下,很好理解。
一、CausalRAG方案将因果推理应用于RAG
传统的RAG系统面临着严重的限制,包括文本分块导致上下文完整性中断,以及过度依赖语义相似性进行检索。
拆开来看,有几个细分限制。
第一个限制源于RAG常见的将文本分割成最小单元的做法。该过程打乱了原文中的自然语言和逻辑联系。 这些联系对于保持上下文完整性至关重要,如果丢失了,就必须实施一种替代机制来恢复它们。
第二个限制在于语义搜索过程。RAG通常基于查询相似性从向量数据库中检索语义上最接近的文档。然而,在许多情况下,回答查询所必需的关键信息并非语义上相似,而是存在因果关系。也就是,RAG对语义相似性的依赖而非因果相关性往往导致检索到表面上相似但逻辑上不相关的相关内容。
之前出现的很多GraphRAG的框架,通过在检索前总结和排名图社区,可以提高检索到的上下文质量,从而提升上下文精确度。但,这仅部分解决了已识别的局限性,因为其总结过程并未完全过滤掉不相关的信息。
所以,其本质上还是走的相似性检索,虽然其在一定程度上能够解决上下文完整性中断的问题,但是还是有一定的噪声。
所以,可以在这些召回的子图的基础上进一步做作噪声去除,通过在图中扩展和追踪具有因果关系的节点。
那么怎么做,那就引入因果,因为相关性的故事不好讲,那就讲讲因果性,搞CausalRAG,也就是将检索建立在因果推理之上。
所以,相应的工作来了,《CausalRAG: Integrating Causal Graphs into Retrieval-Augmented Generation》(https://arxiv.org/pdf/2503.19878),将因果关系图融入检索过程的新框架,通过构建和追踪因果关系,保持上下文连续性,以此提高检索精度。
先说一个重点。注意,这个因果图不是离线索引的,而且实时检索后,对召回出来的图,再做因果过滤跟分析。相当于在GraphRAG上再做了一层噪声过滤。也就是上面这张图
分成两个部分,一个是构图offline,一个是用图online。
1、构图,GraphRAG那套建库逻辑
构图部分主要包括几个步骤:
文本预处理(系统接收用户上传的文档)->信息抽取(使用大模型将文本转换为结构化的图形式,文本并识别出文本中的关键实体和它们之间的关系)->构建图谱(在识别出实体和关系后,将这些信息存储在一个图中,图的节点代表实体,边代表实体之间的关系)->嵌入向量数据库(将构建的图结构嵌入到一个向量数据库中,每个节点和边都会被转换为向量形式,以便于后续的检索操作)
2、在线查库阶段-因果路径分析
因果图不是离线索引的,而且实时检索后,对召回出来的图,再做因果过滤跟分析。相当于在GraphRAG上再做了一层噪声过滤。这个步骤叫做因果路径分析,识别和利用文本中的因果关系,筛选因果节点,并做摘要。从而提高检索和生成的精度和可靠性。
在具体实现上,匹配初始节点(根据用户查询,选择与查询最相关的初始节点,选择距离最小的k个节点,代表与查询直接相关的最相关信息)->扩展搜索(从初始节点开始,沿着图的边扩展搜索,这个过程可以通过遍历图中的边来实现,通过调整扩展参数,可以捕捉文本中的长距离内容)->分析因果关系(使用大模型分析每条路径上的因果关系,确定哪些路径对回答查询最为关键,构建一个精细化的因果图)->生成因果摘要(基于分析结果,生成一个包含关键因果信息的摘要,这个摘要将用于后续的生成过程,以确保生成的响应既相关又准确)。
拆开来看一些细节,看因果路径分析的输入和输出。
输入方面,主要包括初始节点集合、扩展的节点和边集合、图结构以及扩展参数。
其中,
初始节点集合是从用户查询中匹配得到的,代表了与查询最直接相关的实体或概念。这些节点通常是通过计算查询向量与图中节点向量的相似度来选择的。
扩展的节点和边集合是在初始节点的基础上,沿着图的边扩展得到的节点和边集合。这个扩展过程是为了捕捉更广泛的上下文信息,确保因果路径的完整性和准确性。
图结构包含所有实体及其之间关系的图结构。这个图是在文本预处理阶段构建的,并且已经嵌入了向量数据库。
扩展参数包括控制搜索范围的参数,例如扩展步长(step size),决定了在图中扩展搜索的深度和广度。
输出部分包括因果路径集合、因果摘要以及过滤后的信息。
其中:
因果路径集合指一组从初始节点出发,沿着图中的边扩展得到的路径。这些路径代表了实体之间的因果关系。每条路径通常包含一系列节点和边,描述了从一个实体到另一个实体的因果传递。
因果摘要指的基于识别的因果路径,生成一个简化的摘要。这个摘要包含了与用户查询直接相关的因果信息,用于指导生成过程。
过滤后的信息指的是通过因果路径分析,系统能够识别并保留那些与用户查询直接相关的因果信息,过滤掉那些虽然语义上相关但因果上无关的信息。
最后,一旦生成了因果摘要,就将其与用户查询结合起来,为CausalRAG构建一个精炼的提示。这种结构化的最终输入使RAG能够专注于通过因果关系进行推理,而不仅仅是聚合松散相关的文本片段。
3、最后看实现效果
使用Ragas框架评估模型在三个关键指标上的表现:答案准确性、上下文召回率和上下文精确率。准确性衡量生成响应与参考信息的事实一致性,召回率衡量检索到的正确参考信息的比例,精确率衡量检索到的正确响应的比例。
但是,话说回来,这个方案,实际上是个累加操作,构建因果图的计算成本从非结构化文本中构建因果图依赖于基于LLM的提取,这在复杂或模糊的情况下可能会引入额外的成本。大规模文档的计算开销,扩展和分析因果路径的计算成本随着文档变大而增加,在极端情况下(如大量token)可能会影响检索效率。
二、MCP的一个开源实现项目
从Anthropic开源MCP以来,Block、Apollo、Replit、Codeium和Sourcegraph等公司已经为他们的平台添加了MCP支持,OpenAI也加入,发布OpenAI Agent SDK,文档地址:https://openai.github.io/openai-agents-python/mcp/。
再废话一下,模型上下文协议(MCP)是一个创新的开源协议,它重新定义了大语言模型(LLM)与外部世界的互动方式。MCP提供了一种标准化方法,使任意大语音模型能够轻松连接各种数据源和工具,实现信息的无缝访问和处理。MCP就像是AI应用程序的USB-C接口,为AI模型提供了一种标准化的方式来连接不同的数据源和工具。
MCP有以下几个核心功能:Resources资源、Prompts提示词、Tools工具、Sampling采样、Roots根目录、Transports传输层。
看了下,有个开源项目Model Context Protocol(MCP) 编程入门,https://github.com/liaokongVFX/MCP-Chinese-Getting-Started-Guide,有实践代码,大家感兴趣的可以看看。
通过代码可以熟悉开发MCP服务器、调试MCP服务器、开发MCP服务端、Sampling讲解、ClaudeDesktop加载MCPServer、在LangChain中使用MCP服务器、DeepSeek+cline+自定义MCP=图文大师、生成Prompt模板等内容。
如何学习大模型 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 的正确特征了。