微信扫码
与创始人交个朋友
我要投稿
发布时间:2024 年 08 月 09 日
RAG
HybridRAG: Integrating Knowledge Graphs and Vector Retrieval Augmented Generation for Efficient Information Extraction
在金融领域,从财报电话会议记录等非结构化文本中提取复杂信息对大型语言模型(LLM)构成挑战,即便采用先进的检索增强生成(RAG)技术。为此,我们创新性地提出了 HybridRAG 方法,融合了基于知识图谱的 GraphRAG 和 VectorRAG 技术,旨在提升金融文档问答系统的信息提取能力,生成精准且上下文贴切的答案。实验证明,HybridRAG 在检索和生成阶段均超越了单一的 VectorRAG 和 GraphRAG 技术,不仅在金融领域,该技术还具有广泛的应用潜力。
https://arxiv.org/abs/2408.04948
加入社群讨论
如无法加入,请+微信 iamxxn886
随着微软 GraphRAG 的开源,GraphRAG 受到了越来越多人的关注和重视,今天这篇文章是来自著名金融巨头:贝莱德集团,以及 AI 巨头:英伟达。
对于金融分析师而言,从新闻文章、收益报告以及其他财务文件这类非结构化数据源中提取并分析信息极为关键,只有这样才能有机会在潜在的信息不对称中占据优势。
这些非结构化数据中蕴含着能左右投资决策、市场预测和整体市场情绪的宝贵观点。但由于其非结构化的特质,传统的数据分析手段难以有效提取和运用此类信息。
随着大语言模型的出现和发展,已逐渐成为金融服务和投资管理的有力工具,在情感分析、市场趋势预测以及自动报告生成等任务中极具价值。比如:从年度报告和其他财务文件中提取信息,能极大提升金融分析师的效率与准确性。强大的信息提取系统能助力分析师迅速收集相关数据、识别市场趋势并做出明智决策,从而制定出更优的投资策略和风险管理方案。
尽管大型语言模型在金融应用中潜力巨大,但在运用预训练模型从训练数据之外的财务文件中提取信息,并减少幻觉的过程中,存在显著挑战:
• 财务文件通常包含特定领域的语言、多样的数据格式以及独特的上下文关系,通用训练的大型语言模型对此处理欠佳。
• 由于不同文本来源在术语、格式和上下文方面存在差异,从多个财务文件中提取一致且连贯的信息颇具难度。
• 财务文件中的专业术语和复杂数据格式,致使模型难以提取出有意义的见解,进而引发不准确的预测、被忽视的洞察以及不可靠的分析,最终阻碍做出明智决策。
VectorRAG 指的是我们传统的 RAG 流程,如上图所示。由于语言模型的上下文限制,外部文档被分割成多个片段,并使用嵌入模型转换为嵌入向量后存储于向量数据库中。检索组件随后在向量数据库中执行相似性搜索,以识别和排序与查询最相关的片段。排名最高的片段被检索并聚合,为生成模型提供上下文。
然而,对于财务文件,VectorRAG 作为独立解决方案存在重大挑战。比如,VectorRAG 系统常采用段落级分块技术,假定这些文件中的文本长度一致。此方法忽略了财务报表的层次结构特性,可能导致关键上下文信息的丢失,进而无法进行精准分析。
知识图谱(Knowledge Graph, KG)是现实世界实体、属性及其关系的结构的表示,通常存储在图数据库或三元组存储中。由节点(代表实体)和边(代表关系)构成,以及两者的标签和属性。三元组是 KG 中的基本信息单元,包括主体、谓词和对象。
构建 KG 的大多数方法论包括知识提取、知识改进和知识适应三个主要步骤。在这篇论文中,作者没有采用知识适应,而是将 KG 视为静态图。
知识提取(Knowledge Extraction):是从非结构化或半结构化数据中提取结构化信息,如文本、数据库和现有本体。主要任务包括实体识别(entity recognition)、关系提取(relationship extraction)和指代消解(co-reference resolution)。
知识改进(Knowledge Improvement):- 知识改进的目的为了提升知识图谱(KG)的质量与完整性,消除冗余,填补提取信息中的空缺。主要任务是知识图谱的补全与融合。通过诸如链接预测和实体解析等方法,推断图中的缺失实体和关系。
链接预测依据图结构和特征预测两个实体间关系的有无及类型,实体解析则对来自不同来源的同一实体的不同表征进行匹配与合并。
知识融合将多源信息加以整合,构建一个连贯统一的知识图谱。这涉及化解源信息间的冲突和冗余,比如相互矛盾或重复的事实,并基于规则、概率或语义相似度对信息进行聚合或协调。
基于知识图谱的检索增强生成(RAG),即 GraphRAG,也和 VectorRAG 一样从基于用户输入的查询起步。
VectorRAG 和 GraphRAG 的主要区别在于检索部分。GraphRAG 的查询用于在知识图谱中检索与查询相关的节点(实体)和边(关系)。从完整的知识图谱中抽取由这些相关节点和边构成的子图来提供上下文。把子图与语言模型的内部知识相融合。语言模型利用这一组合上下文生成回答,生成的回答既受知识图谱结构化信息的影响,又受其预训练知识的作用。
GraphRAG 能够依据从金融文档中提取的结构化信息生成更精准且具上下文感知的响应。但也存在一些不足:
• 在抽象问答任务或问题未明确提及实体时,通常表现欠佳
• 处理海量金融数据并持续更新知识图谱以反映金融市场的动态特性,技术难度大且资源耗费巨大。
鉴于以上 VectorRAG 和 GraphRAG 的问题,作者提出了一种新的 RAG 技术:HybridRAG。将前述两种不同的 RAG 技术:VectorRAG 和 GraphRAG 进行融合,通过这两种上下文的结合,能够发挥两种方法的优势。VectorRAG 部分提供了基于相似性的广泛信息检索,而 GraphRAG 部分则提供了结构化且关系丰富的上下文数据。
作者借助 PyPDFLoader 导入 PDF 文档,然后运用 RecursiveCharacterTextSplitter 将其分割为文档块。分块策略采用 2024 个字符的大小和 204 个字符的重叠,既确保全面涵盖,又维持跨段边界的上下文。
上表汇总了使用基于提示的方法从收益电话会议记录中提取的实体详情。
LLM 利用一组精心筛选的动词来识别这些实体之间的关系,捕捉公司叙述中的细微交互。
关键改进在于提示工程增强,用于生成知识三元组的结构化输出格式。每个三元组呈现为嵌套列表 ['h', 'type', 'r', 'o', 'type','metadata'],其中 'h' 和 'o' 分别代表头实体和对象实体,'type' 指明实体类别,'r' 表示关系,'metadata' 封装了其他的上下文信息。这种格式实现了信息的丰富多维呈现,有助于更精细的下游分析。
知识提取 Pipeline 的结果汇总形成整个文档的综合知识图谱特征,使得对大型文档的处理具备可扩展性,同时在每个块内保持本地上下文。
最后,将提取的三元组从初始字符串格式转换为 Python 数据结构,并存储在 pickle 文件中。这便于在后续分析阶段轻松检索和进一步处理知识图谱数据。
本方法在从公司文档中自动提取知识方面取得了重大进展。通过将先进的自然语言处理技术与结构化的信息表示方法相结合,创建了一个丰富、可查询的知识库,捕捉到公司叙述中存在的复杂关系和关键信息。这种方法为商业领域的财务分析和自动推理开辟了新的可能性,未来将进一步深入探索。
基于 RAG 的理念,构建一个系统,借助大型语言模型的强大功能和语义搜索的高效性,对有关公司财务信息的查询提供具备上下文感知且准确的回答。
整个系统利用了 Pinecone 向量数据库,使用 OpenAI 的 text-embedding-ada-002 模型、将电话会议记录中的文本数据转换为高维向量表示。这种向量化流程实现了语义相似性搜索,显著提高了检索信息的相关性和准确性。下图展示了作者使用的配置参数。
系统使用了 LangChain 框架构建。
• 开始于一个上下文检索步骤,即查询 Pinecone 向量存储库,以获取针对给定问题的最相关文档块。此检索过程通过针对季度、年份和公司名称的特定过滤器进行了精细调整,确保所检索的信息相关性和时效性。
• 检索完成后,实施了一个上下文格式化步骤,将检索到的文档块整合为连贯的上下文字符串。此格式化的上下文成为语言模型响应生成的信息基础。
• 作者开发了一个复杂的提示模板,指示语言模型充当专家问答系统,强调仅利用所提供的上下文信息,且避免在生成的响应中直接提及上下文。对于核心语言处理任务,集成了 OpenAI 的 GPT-3.5-turbo 模型,该模型处理格式化的上下文和查询,生成内容丰富、连贯且与上下文契合的自然语言响应。
• 为评估系统的性能,构建了一个综合框架,其中包括为每个公司的收益电话准备特定的问答对自定义数据集。系统处理该数据集中的每个问题,并依据检索到的上下文生成答案。评估结果,涵盖原始问题、生成的答案、检索到的上下文和真实情况,被编译为结构化格式(CSV 和 JSON),以利于进一步分析。
对于 GraphRAG,开发了一个专为公司电话会记录设计的问答系统。
• 知识图谱构建:- 首先运用第前面提到的基于提示工程的方法,从公司文档中提取一组知识三元组来构建 KG。这些三元组存储在一个 pickle 文件中,以主语 - 谓语 - 宾语关系的形式呈现结构化信息。使用 LangChain 库中的 NetworkxEntityGraph 类来创建和管理图结构。每个三元组都被添加至图中,其中封装了头实体、关系、尾实体和其他元数据。使用 LangChain 的 GraphQAChain 类实现问答功能。将 KG 与 LLM 相结合以生成响应。GraphQAChain 遍历 KG 以查找相关信息,并使用语言模型依据检索到的上下文生成连贯的答案。用于 GraphRAG 的 LLM 模型和其他库的配置摘要如下表所示。在 KG 中,由于信息是以实体和关系的形式存储的,且一个单个实体可能存在多个关系,为从 KG 中提取相关信息,采用了从指定实体出发、深度为一的深度优先搜索策略。
为了评估 GraphRAG 系统的性能,依循下述步骤:
• 数据集准备:采用预先生成的包含针对收益电话会议记录的问答对的 CSV 文件。
• 迭代处理:针对数据集中的每个问题,我们 GraphQAChain 来生成答案。
• 结果编译:把结果(涵盖原始问题、生成的答案、检索到的上下文以及真实答案)编译成结构化格式。
对于 HybridRAG 技术,在获取来自 VectorRAG 和 GraphRAG 的所有上下文信息后,将这些上下文拼接起来,借助这两种技术形成一个统一的上下文。
然后将合并的上下文被输入到答案生成模型中以生成回应。用于生成回应的上下文相对较大,这会影响生成回应的精准度。
首先附上来自 VectorRAG 的上下文,其后是来自 GraphRAG 的上下文。所以,生成答案的精度取决于源上下文。
如果答案是从 GraphRAG 上下文生成的,其精度会较低,因为 GraphRAG 上下文在提供给答案生成模型的上下文序列中是最后添加的,反之亦然。
为了评估 HybridRAG 的效果,作者建立一整套评估指标体系:
忠实度是一个关键的评估指标,用于衡量生成的答案能在多大程度上从提供的上下文中推断出来。对忠实度指标的实现包括一个两步流程:
• 语句提取:利用 LLM 将生成的答案分解为一系列简洁的陈述。这一步骤对于将复杂答案拆解为更易于管理和验证的单元至关重要。用于此步骤的提示是:
“给定一个问题和答案,请从给定答案的每个句子中创建一个或多个陈述。
问题:[问题]
答案:[答案]”。
• 语句验证:对于每个提取的陈述,使用 LLM 来确定它是否可以从给定的上下文中推断出来。这个验证过程使用的提示是:
“考虑给定的上下文和以下陈述,然后判断它们是否得到了上下文中信息的支持。在得出每个陈述的结论(是/否)之前,为每个陈述提供简短的解释。在给定格式的末尾,按顺序为每个陈述提供最终的结论。不要偏离指定的格式。”
声明:[声明 1]
……
声明:[声明 n] 。
忠实性得分计算方法为 F=V/S,这里 ? 代表得到支持的语句数目,而 ? 代表语句的总数目。
答案相关性指标评估生成的答案在多大程度上解决了原始问题,不考虑事实准确性。该指标有助于识别不完整的答案或包含无关信息的回复。
包含以下步骤:
• 问题生成:我们促使大型语言模型(LLM)根据给定的答案生成 n 个潜在问题:
“为给定的答案生成一个问题。
答案:[答案]” 。
• 然后,使用 OpenAI 的 text-embedding-ada-002 模型获取所有生成问题和原始问题的嵌入。
• 接着,我们计算每个生成问题的嵌入与原始问题的嵌入之间的余弦相似度。
• 最后,答案相关性得分(AR)计算为所有生成问题的平均相似度。这里的 sim(?, ??) 表示原始问题 ? 与每个生成问题 ?? 嵌入向量之间的余弦相似度。
一种衡量检索上下文片段与特定问题的真实情况相关性的指标。度量在上下文的前 K 个排名中,相关项所占的比例。上下文精度的计算公式是在 K 的排名中,每个排名 k 的精度与一个二元相关性指示器 ?? 的乘积之和,然后除以上 K 个结果中相关项的总数量。
每个排名 k 的精度是通过 k 处的真阳性数与 k 处的真阳性数和假阳性数的总和之比来确定的。
这一指标有助于评估上下文对真实情况的支撑力度,更高的分数表示更精确的匹配度。
该指标用于衡量检索到的上下文与标准答案(作为确切的正确回答)的契合度。
通过对比标准答案中的每一句话,判断其是否能在检索到的上下文中找到依据,来量化这一指标。
上下文召回率的计算公式是,可追溯至上下文的标准答案句子数量与标准答案中句子总数的比值。
数值越高,介于 0 到 1 之间,表示上下文与答案的契合度越好,即上下文召回率越高。
对三种不同的 RAG 管道的检索和生成部分予以评估。评估 RAG 的输出也是一个活跃的研究领域,目前尚未有被普遍认可的标准工具,作者使用了当下流行的框架 RAGAS 来评估这三个 RAG 管道,并对它们做了一些修改,以进行更精准的比较。
VectorRAG、GraphRAG 和 HybridRAG 方法在性能上存在显著差异,如上表:忠实度(F)、答案相关性(AR)、上下文精确度(CP)和上下文召回率(CR)。
• 忠实度:GraphRAG 和 HybridRAG 表现出色,均达到 0.96 的分值,而 VectorRAG 稍显落后,得分为 0.94。
• 答案相关性:得分在不同方法中各异,HybridRAG 表现最优,为 0.96,其次是 VectorRAG 为 0.91,GraphRAG 为 0.89。
• 上下文精度:,GraphRAG 最高,为 0.96,远超 VectorRAG(0.84)和 HybridRAG(0.79)。
• 上下文召回:VectorRAG 和 HybridRAG 均取得满分 1,而 GraphRAG 落后,为 0.85。
总体而言,这些结果表明 GraphRAG 相较 VectorRAG 有所提升,尤其是在忠实度和上下文精度方面。
此外,HybridRAG 成为最为平衡且有效的方法,在忠实度和答案相关性等关键指标上优于 VectorRAG 和 GraphRAG,同时保持了高上下文召回率。
HybridRAG 所呈现的相对较低的上下文精度(0.79)可归因于其独特的将 VectorRAG 和 GraphRAG 方法的上下文相结合的方式。虽然这种整合能够实现更全面的信息检索,但也引入了可能与真实情况不完全相符的额外内容,从而影响了上下文精度指标。
尽管如此,HybridRAG 在忠实度、答案相关性和上下文召回方面的出色表现彰显了其有效性。
综合考虑整体评估指标,HybridRAG 成为最具前景的方法,在高质量答案与全面的上下文检索之间实现了平衡。
总体来说:
• 在抽取式问题中,GraphRAG 比 VectorRAG 表现更佳。
• 在摘要式问题中,VectorRAG 表现更优,其中信息在原始数据中未被明确提及。并且,每当问题中未明确提及实体时,GraphRAG 有时无法正确回答问题。
• HybridRAG 总体表现出色,因为每当 VectorRAG 在抽取式问题中无法获取正确的上下文时,它会回退到 GraphRAG 来生成答案;每当 GraphRAG 在摘要式问题中无法获取正确的上下文时,它会回退到 VectorRAG 来生成答案。
• 论文原文: https://arxiv.org/abs/2408.04948
• 获取更多最新 Arxiv 论文更新: https://github.com/HuggingAGI/HuggingArxiv!
• 加入社群,+v: iamxxn886
• 点击公众号菜单加入讨论
53AI,企业落地应用大模型首选服务商
产品:大模型应用平台+智能体定制开发+落地咨询服务
承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2024-11-24
RAGChecker:显著超越RAGAS,一个精细化评估和诊断 RAG 系统的创新框架
2024-11-23
FastRAG半结构化RAG实现思路及OpenAI O1-long COT蒸馏路线思考
2024-11-23
检索增强生成(RAG):解密AI如何融合记忆与搜索
2024-11-23
如何提高RAG系统准确率?12大常见痛点及巧妙解!
2024-11-23
RAG 2.0性能提升:优化索引与召回机制的策略与实践
2024-11-22
RAG技术在实际应用中的挑战与解决方案
2024-11-22
从普通RAG到RAPTOR,10个最新的RAG框架
2024-11-22
如何使用 RAG 提高 LLM 成绩
2024-07-18
2024-05-05
2024-07-09
2024-05-19
2024-07-09
2024-06-20
2024-07-07
2024-07-07
2024-07-08
2024-07-09
2024-11-06
2024-11-06
2024-11-05
2024-11-04
2024-10-27
2024-10-25
2024-10-21
2024-10-21