支持私有化部署
AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


GraphRAG全局问答工程化实践

发布日期:2024-12-13 12:11:18 浏览次数: 2165 作者:亚信科技新技术探索


GraphRAG作为一种结构化和层次化的增强检索生成方法正逐步展现出其在全局问答工程化实践中的巨大潜力。本文深入探讨了GraphRAG的核心理念和相关技术GraphRAG落地过程中的实践经验进行总结,期望能为关注全局问答效果学者与从业者提供一定


GraphRAG全局问答工程化实践
亚信科技(中国)有限公司
摘要本文对 GraphRAG 落地过程中的挑战展开深入剖析,并针对一系列问题提出相应方案,旨在提升GraphRAG的问答效果,尤其是全局问答效果,进而推动其在知识问答场景中得到广泛应用,为企业打造高效、智能的知识问答系统提供有力支持。

引言

传统RAG(Retrieval-Augmented Generation)通过从文档数据库中检索相关信息来引导生成过程,从而提升内容的准确性和相关性。然而,RAG在实际应用中也存在一些问题和短板,主要包括:


•  检索质量:知识库内容的噪声或文档之间缺乏标准化可能导致检索质量下降。



•  检索效率:在实时应用时,大规模数据集上的高效检索始终是一个亟待解决的难题。



•  上下文理解:对于复杂且需要深入理解背景知识的任务,RAG方式或许表现不佳。



•  结构化数据的检索与融合:RAG通常依赖文本形式的数据,难以直接利用结构化的知识图谱信息。


•  可解释性:生成的内容在可解释性方面存在不足

图1:GraphRAG主要优势


GraphRAG(Graph Retrieval-Augmented Generation)通过整合知识图中的结构化信息来解决RAG的局限性,其主要优势在于:



•  增强检索效率和质量:通过使用图结构来表示知识,能够更高效地检索相关信息;此外,图结构允许模型考虑实体之间的关系,从而提高检索结果的相关性。



•  更好的上下文理解:利用图中的路径和节点属性,可以更好地捕捉长期依赖和上下文信息,有助于模型在多轮对话或处理复杂文档时做出更加合理的决策。



•  有效利用结构化知识:直接利用知识图谱中的结构化信息,能够更好地理解和利用领域知识,生成更加准确和丰富的答案。



•  提高可解释性:可以更容易地追踪生成内容的来源,提高其可解释性。


总的来说,GraphRAG通过结合知识图谱的结构化信息和检索增强生成技术,提供了一种更高级的信息检索方法。


GraphRAG概述

GraphRAG是一种结构化和层次化的方法,用于增强检索生成(RAG)。与传统使用纯文本片段的语义搜索方法不同,GraphRAG将大语言模型生成的知识图谱与先进的图机器学习技术相结合。



具体来说,对于复杂信息,GraphRAG通过实体、关系和属性抽取技术将非结构化文本等重新组织成结构化知识图,使模型能更好地理解和利用信息间的相互关系。应用时,它首先利用大语言模型对领域知识进行知识图谱化,构建可“图查询”的知识图谱数据库,还可将全域知识库分割成多社区模块的知识图谱以及构建多层次知识图谱。


图2:GraphRAG示意图


检索时,GraphRAG会同时对知识向量库和知识图谱数据库进行检索,将检索到的知识图谱信息和知识向量信息集成转化为 “提示词”,再由LLM生成答案。与RAG相比,GraphRAG的 “提示词” 内容更丰富,包含查询信息、相关上下文信息以及从领域知识图谱库中检索到的相关 “知识图谱” 信息,能进一步提升LLM生成答案的准确性和可靠性,弥补了RAG在复杂信息领域的不足。


GraphRAG落地过程中的挑战
RAG 在针对整个文本语料库的全局性问答时表现不佳,例如“数据集的主要主题是什么?”,这本质上是一个聚焦查询的摘要(QFS, Query-Focused Summarization)任务,而非显式的检索任务。而GraphRAG基于文本构建知识图谱,在处理聚焦查询的摘要任务时,利用基于图谱提取的社区和社区摘要,能显著提升全局问答的效果。但是,在实际落地过程中,我们仍会遇到诸多挑战,具体表现为:



•  如何接入本地部署的大模型服务:GraphRAG默认使用OpenAI的大模型服务和嵌入模型服务,在落地过程中,需要使用本地部署的大模型服务和嵌入模型服务,这就需要本地的大模型服务和嵌入模型服务符合OpenAI的接口方式,同时,本地嵌入模型服务还需要考虑常规的输入文本和输入token ids的差别。



•  支持文件类型有限:GraphRAG目前只支持txt和csv格式文本处理,但实际应用场景中,文件格式多种多样,如何兼容更多的文件类型是一个迫切需要解决的问题。



•  大模型提取的实体质量参差不齐:GraphRAG提取实体时,需要指定待提取的实体类型信息,并基于大模型提取指定实体类型的实体数据。然而输入给大模型的实体类型不同,或采用不同的大模型,都可能对最终提取的实体效果产生影响,并进一步影响构建的图谱效果和问答效果。实践中我们发现,大模型提取出的实体类型可能和实体并不匹配,以及实体值和实体类型相同的情况,甚至可能出现提取的实体为空的情况,直接导致无法继续构建图谱。



•  Prompt提示词的中文化和场景优化:当前prompt提示词主要以英文为主,在处理中文文本时,输出的实体,边以及摘要信息通常也是英文的,对于母语为汉语的用户来说,会影响阅读体验,同时,也可能会对GraphRAG后续的中文处理产生不利影响。在不同的应用场景中,往往存在特定的行业术语和专业词汇,对Prompt提示词进行场景优化,可以使其更好地理解和处理这些专业术语,提高在特定领域的回答准确性和专业性。



•  难以判断问题属于全局还是局部问题:当问题中的概念涵盖范围过大且缺乏具体限定词时,或是一些具有多义性的词语在问题中出现时,GraphRAG无法明确是从整个知识图谱还是从局部的子图进行搜索解答。如果问题仅仅是一些孤立的关键词,没有任何相关的背景信息或者上下文关联,GraphRAG也很难判断是全局还是局部问题。

•  所构建图谱的性能问题:在图谱构建阶段,涉及文本的加载与切分。其中,对于每一个切分块,均会调用大模型进行实体和关系的提取;同时,对于检测到的每个社区,也会调用大模型生成社区摘要。因此,倘若文档较大,切分的文本块数量较多,那么大模型服务将会成为构建图谱的瓶颈,严重影响图谱的构建效率。

GraphRAG实践经验分享



GraphRAG整个Pipeline可划分为索引(Indexing)与查询(Query)两个阶段。索引过程利用LLM提取出节点(如实体)、边(如关系)和协变量(如 claim),然后利用社区检测技术对整个知识图谱进行划分,再利用LLM进一步总结。最终针对特定的查询,可以汇总所有与之相关的社区摘要生成一个全局性的答案。

图3:GraphRAG实现方式

•  GraphRAG借助大语言模型处理整个数据集,以提取实体和关系,从而构建起全面的知识图谱的基本要素。


•  GraphRAG运用社区检测算法,识别紧密相关实体的集群,随后系统生成这些实体及其关系的嵌入表示,从而实现高效的语义搜索功能。



•  当有查询接入时,GraphRAG可以执行两类搜索。对于宽泛性的问题,通过使用全局搜索,遍历整个图谱以总结主题和概念。对于具体的查询,则采用局部搜索,提取相关的子图,并结合图结构与原始文本数据以提供详细的且有上下文的答案。



面对GraphRAG落地过程中存在的挑战,我们通过项目实践,总结出一套切实有效的方法,使得RAG问答,特别是全局问答效果显著提升。


(1)适配本地模型服务



为了更好地支持OpenAI接口方式,选择并本地部署合适的大模型服务和嵌入模型服务。比如,通过评估大模型在自然语言处理任务中的准确性和效率,以及嵌入模型在向量表示方面的优劣等,选择适合的本地部署大模型。



此外,鉴于本地嵌入模型服务仅接受文本输入,所以有必要修改GraphRAG 源码。具体做法是把嵌入模型服务的输入由token ids 转换为文本,之后再把文本输入本地嵌入模型服务,以确保成GraphRAG 与本地模型服务的无缝适配。



(2)支持更多文件类型和切分方式



•  增加多种文件类型解析在GraphRAG中,接入当前RAG能力中多种文件类型的解析和切分能力。例如,通过增加对pdf,word,excel,html,markdown等文件类型的加载,从而使GraphRAG能够处理更多类型的文件。



•  提供灵活切分策略GraphRAG提供了灵活的文本切分策略,既可以根据token数量来切割,有助于控制输入到模型中的文本长度,避免过长或过短的文本对模型性能产生不利影响;也可以基于句子结构来进行划分,更符合语言的自然逻辑。为了更好地适应不同文件的特点,在实际应用时需采取多种合适的切分方法。比如,对于某些特定格式的文件,可以采用循环字符切分,适用于具有特定字符模式的文件;按页分割,常用于文档类文件;按行拆解,对于一些以行为单位组织的文件很有效;根据章节目录进行组织,适合结构清晰、有章节划分的文件。通过这些灵活的切分方式,以进一步提升GraphRAG在各种场景下的实用性和有效性。



(3)指定实体类型提取实体



•  取消默认实体类型设置在 GraphRAG 进行文本实体提取时,原本需用户指定实体类型列表,以助力大模型完成实体抽取工作;若用户未指定,则会启用默认实体类型,如 organization(组织)、person(人物)、geo(地理)、event(事件)。然而,默认的实体类型可能并不总是与用户的特定文本内容完全匹配。为解决该问题,取消了默认实体类型的设置,改为让大模型自己根据文本进行实体抽取,并输出对应的实体类型。



•  用户可编辑实体类型允许用户对大模型自动提取的实体类型加以编辑。大模型抽取实体后,用户可以根据自己对文本内容的理解和实际需求,对实体类型进行调整和优化。随后基于用户优化后的实体类型构建图谱,这样可以在一定程度上保障构建的图谱质量,使图谱更符合实际应用场景的需求。



(4)Prompt提示词场景优化



•  提示词汉化及优化在GraphRAG中,实体抽取,关系抽取,摘要生成和问答等操作均借助了大模型进行处理,而这些环节都涉及到提示词工程。首先进行提示词汉化,将默认的英文提示词转换为中文,以便更好地适应中文用户的需求。然后针对应用场景进行优化,根据不同的应用场景特点,调整提示词的内容和表达方式,使GraphRAG能够更好地理解用户的需求,显著提升了GraphRAG在特定应用场景下的效果。例如,在医疗领域应用时,提示词要更侧重于医学术语和相关概念;在金融领域应用时,则要突出金融相关的词汇和逻辑。



•  统一配置管理如图 4,将这些提示词模板整合起来并放置在一个config 文件夹中,以便于对提示词进行修改和更新,并在不同的应用场景中快速切换和使用合适的提示词模板。


图4:统一配置提示词模板


(5)问题属性判断



•  明确问答方式及逻辑在进行GraphRAG问答时,需要用户指定问答方式,即选择全局问答还是局部问答,因为不同的问答方式背后的处理逻辑不同。



•  局部问答逻辑在进行局部问答时,需要提供实体,关系,社区摘要以及文本块,然后根据query通过向量相似方法寻找与之相关的实体,再基于这些相关实体去查找相关边,从而构建local_context。同时,根据上述相关实体,寻找与query相关的社区,构建出community_context。最终final_context包含local_context,community_context,以及相关知识块,将final_context用于构建search_prompt并送入大模型,这样大模型就可以对query进行局部检索问答。



•  全局问答逻辑进行全局问答时,主要以社区摘要信息为依据进行检索,检索过程分为map和reduce两个阶段。在map阶段,根据query对社区摘要提取关键点,在reduce阶段,则基于所有提取出的关键点和query得到最终回答。



•  默认与可选设置由于局部问答和全局问答的检索逻辑存在差异,以明确query属于摘要性的全局问题还是局部问题,对检索结果极为重要。GraphRAG在处理全局问答方面表现出色,同时也具备处理局部问答的能力。因此,默认使用全局方式进行问答,但同时也支持用户根据自己的需求选择使用何种方式进行问答,使得GraphRAG能够更加灵活地适应不同用户的需求。



(6)图谱构建中的性能权衡



GraphRAG 内部会依次对文本块进行实体与边信息的提取,也会逐个为社区生成摘要。在这个过程中,若处理某个文本块或社区时大模型调用出错,内部会捕获异常,这可能致使pipeline执行看似 “成功”,但却未得到预期结果。由此可见,大模型调用服务在图谱构建流程中是极为关键的步骤,需要确保在出现错误时能够及时发现并采取相应措施,避免错误结果对图谱构建质量产生严重影响。



当多个任务并发时,必然会有部分大模型请求处于等待状态。此时,请求的超时时间、最大重试次数等参数决定了大模型调用能否成功。所以,应当依据所选用的大模型情况以及应用场景,确定恰当的大模型请求参数。例如,如果选用的大模型响应速度较快,可以适当缩短超时时间;如果发现大部分请求在首次尝试时就成功了,可以适当减少重试次数;如果经常遇到网络波动,可以增加重试次数。通过合理确定这些参数,在效率和结果之间达成最佳平衡,提高图谱构建的性能。


GraphRAG未来发展展望
随着大模型技术和自然语言处理的不断进步,GraphRAG作为一种结合了知识图谱和检索增强生成技术的方法,在企业全局问答工程化实践中展现出巨大潜力。展望未来,GraphRAG的发展可能会集中在以下几个方向:




图5:生成式AI技术发展曲线


•  多模态融合:在企业实际应用场景中,信息往往是多模态的,包括文本、图像、音频等。未来的GraphRAG系统有望整合图像、视频等多模态数据源,利用跨模态学习技术提取结构化信息,并将其融入到知识图谱中,提供更加丰富和全面的答案。多模态数据的加入不仅能够拓宽信息来源,还能提高问题解答的多样性和准确性。



•  技术融合与创新:GraphRAG 有望与更多先进技术融合。例如,通过引入增量学习机制,使系统能够持续从新数据中学习并更新现有知识图谱,从而保持信息的时效性和准确性。同时,可能会引入更先进的图神经网络架构,增强对知识图谱中复杂关系的理解和处理能力,进一步提升模型性能。



•  可扩展性和性能优化:为了适应大规模企业数据和复杂的应用场景,GraphRAG需要在性能优化和可扩展性方面不断进步,包括提高知识图谱的构建效率,减少模型训练和推理时间,以及能够处理更大规模的知识图谱和更多的用户请求。同时,优化算法和数据结构,提高系统的稳定性和可靠性。


综上所述,GraphRAG的未来发展将是一个多维度、跨领域的进程,它将不断适应新的技术趋势,满足不断变化的市场需求,并为用户提供更加智能、高效和安全的知识问答服务。

53AI,企业落地大模型首选服务商

产品:场景落地咨询+大模型应用平台+行业解决方案

承诺:免费场景POC验证,效果验证后签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

添加专属顾问

回到顶部

加载中...

扫码咨询