过去两年,大语言模型(large language model,LLM)在理解与生成方面展现出强大能力,但其在特定行业应用中的局限性也逐渐显现,正如上篇《检索增强生成(RAG)为何Demo易,落地难?》介绍 LLM 在专业领域的应用面临可靠性挑战:
行业知识缺乏、知识缺乏全局性,推理效率低。知识缺乏限制了LLM的推理能力,实际落地项目中,经常出现逻辑错误或问题分解错误,尤其时在处理复杂问题时,模型回复的准确性和稳定性极容易受输入条件变换影响,尽管引入 Chain-of-Thought (COT) 等推理方法,仍难以很好地解决这类问题。
检索召回机制、不一致性影响模型可靠性。召回机制的不精确也影响生成内容的可靠性,特别是在垂直领域中的复杂关联知识处理上表现不足,与此同时受用户提示的主观影响,对数据解读可能出现信息失真,前后不一等问题;此外,模型自身也可能存在幻觉问题这些推高了用户甄别信息难度,降低了模型的可靠性。
然而,真实的落地场景中,企业对知识的准确度要求、精度要求非常高,对LLM可靠度存疑,直接影响其落地效果和市场规模,于是人们提出了具有改善可靠性的GraphRAG技术框架。
GraphRAG(Graph Retrieval Augmented Generation, GraphRAG)是检索增强生成的高级变体,它利用图谱来增强信息检索和生成能力。与传统的RAG方法(将文档集合视为平面的、非结构化的数据集)不同,GraphRAG将信息转换为实体和关系的语义网络。GraphRAG的关键步骤在预处理索引、图谱构建、问句检索。
S1. 预处理与索引
摄取文本数据,利用LLM(如GPT-4等)提取文本数据的实体及其关系。与传统知识图谱不同,该方法无预定义本体来组织实体及关系,而是利用LLM动态生成上下文相关的本体,这意味着GraphRAG的图谱是动态、灵活的,随传入数据的变化而变化。
通过与实体关系边将一个实体映射到另一个实体。动态图谱通过关系边将实体互联,并结合权重或其他属性构建语义网络。
S2. 构建知识图谱
通过社区检测等算法,将实体和关系分组形成语义集群,并总结不同抽象层次上的主题概念。
通过摘要生成为各语义组团提炼关键信息。
S3. 问句检索
在进行查询时,GraphRAG利用已构建的知识图谱采用基于检索的方法检索相关信息:
全局搜索:此模式基于组团摘要检索答案,对涉及整个数据语料库的整体性问题进行推理提供对数据集的广泛理解。
本地搜索:此模式关注特定实体及其邻居,允许详细推理和精确答案。它利用像LanceDB这样的向量数据库来有效地检索相关实体。
相比于标准 RAG 使用向量相似度和向量数据库进行检索,Graph RAG 利用知识库进行更全面、系统的信息检索,不仅依赖矢量相似度,还通过动态构建的知识图增强了语义关联与上下文理解,从而提高了检索的完整性和准确性。
GraphRAG从原始文本构建一个动态知识图,提取数据中的基本实体、关系和摘要,能够更有效地综合信息,为复杂查询提供了更准确和全面的答案,在很大程度上克服了RAG方法忽视文档关系、信息冗余、缺乏全局性的问题,显著增强了检索的相关性、准确性和全面性。相比预训练、微调,GraphRAG是当下性价比相对较高的LLM落地方案,不像预训练那样需要巨大的计算资源进行全面的模型训练,也不像微调那样需要大量的标注数据来进行领域适配。相较于RAG,知识图谱的引入增强了模型对知识的结构化理解,减少了单纯依赖文档拼接的工程工作量。
然而,由于知识图谱生成的动态性,可能引入新的语义不一致的问题,使GraphRAG可能不适用于对信息精度、置信度、延时要求高的工业级应用场景:
对大模型调用密集,token消耗成本高昂。GraphRAG预处理阶段需依然需要将数据切分成块,尽管粒度可能比RAG更大,使用LLM来识别这些数据块中的实体和它们之间的关系,意味着需要为每个数据块开启一个提示(Prompt),并通过 LLM 进行推理和抽取,这是一个高token消耗的过程,如果实时进行也必然会面临延时问题。
无本体的图谱构建,图谱规模容易膨胀。GraphRAG利用大语言模型自动构建图谱,无需预定义、创建本体,提取数据块中所有内容,容易形成一个巨大的图谱,实体和关系过多,图谱过于广泛而不具体,所提取的实体关系难以被有效利用。一方面,信息冗余、计算资源浪费,增加系统的负担;另一方面也影响后续检索生成效果。
针对文本内容提取图谱数据,不适用于非文本内容。GraphRAG主要利用大语言模型提取文本内容,对于表格、图表、图像等非文本内容的支持有限,增加了处理不同类型数据的复杂性。
数据质量要求高,GraphRAG依然难以在混乱中找到意义。对知识图谱而言,“好的数据”意味着好的关系,如果拿一堆内部未经过合理预处理、分类的文件,扔到GraphRAG系统中,那么创建的知识图谱也难以支撑后续的搜索和生成效果。
维护复杂且并未解决幻觉问题。相比于RAG直接更新,GraphRAG每次更新都需要更新整个图谱,需要密集的计算和管理,维护难度远大于RAG。此外,将实体和关系分组形成语义集群,并据此生成摘要,以用于检索和生成回答用户问题,可能会引入更多幻觉问题。
综上,GraphRAG基于语义集群生成摘要,关注了文档关系、信息简练、考虑了知识的全局性,这使得GraphRAG比较适用于摘要生成类任务(成本可控的前提下)。但是,GraphRAG并没有完全克服LLM幻觉问题,图谱构建、维护也不轻量、不经济,并不适用于细粒度事实类问答、逻辑推理类任务。