本文针对检索增强生成RAG技术特别是向量RAG在处理全局性问题时存在的局限性提出了GraphRAG方法。GraphRAG通过将非结构化文本构建成知识图谱并利用层级社区摘要实现了对大规模文档的全局理解。文章详细介绍了GraphRAG的索引构建和查询回答两个核心阶段包括文本分块、信息提取、知识图谱构建、社区划分和摘要生成等步骤。实验结果表明GraphRAG在答案的全面性和多样性上显著优于传统RAG且在处理全局问题时具有较高的效率。文章还讨论了GraphRAG可能存在的问题及优化方法为读者提供了全面深入的学习指导。 前言我们通常使用的检索增强生成技术在处理需要从海量文档中查找特定信息的查询时表现不错。这种方法在论文里被称为向量 RAG (vector RAG)它的工作方式是先在文档库里找到和用户问题最相关的几个文本片段然后把这些片段交给大语言模型 (LLM) 去生成答案。但是向量 RAG 有一个明显的短板。它处理不了那些需要通盘理解整个文档集才能回答的“全局性”问题。比如你想问“这个数据集里主要讨论了哪几个核心主题”或者“过去十年跨学科研究是如何影响科学发现的”这类问题向量 RAG 就很难回答好。因为它每次只能看到文档库的一小部分缺乏一个全局的视角。为了解决这个问题研究人员提出了 GraphRAG。顾名思义这种方法的核心是利用了图 (Graph) 结构。整个过程大致可以分为两个阶段索引构建和查询应答。下面我们来具体看看吧。 GraphRAG 与传统 RAG 的区别在哪GraphRAG vs.传统 RAG:核心能力对比主要的区别体现在处理问题类型的能力、答案的全面性和多样性、答案的直接性以及高效性这几个方面。GraphRAG 的设计初衷是为了解决传统 RAG 难以处理的“全局理解”和“意义构建” (sensemaking) 问题。传统的 RAG 擅长回答那些答案可以在文档中少数几个具体段落里找到的问题。但是当问题需要理解和总结整个数据集才能回答时比如“这个数据集的主要趋势是什么”传统 RAG 就显得力不从心了。实验结果一:性能对比(全面性)实验结果显示在回答全局性问题时GraphRAG 生成的答案在全面性(Comprehensiveness) 和多样性(Diversity) 上显著优于传统 RAG。我从论文里面看到所有 GraphRAG 的变体在全面性指标上的胜率都在 72% 到 83% 之间在多样性指标上的胜率则在 62% 到 82% 之间。这意味着 GraphRAG 的回答能覆盖更多相关细节并提供更丰富的视角。实验结果二:效率对比(Token 消耗)不过传统 RAG 在直接性(Directness) 这个指标上表现更好。这说明它的答案更加简洁、直奔主题。这也很容易理解因为它检索的是最相关的几个文本片段所以答案会更聚焦。对于需要进行多次全局查询的场景GraphRAG 提供了一种非常高效的模式。通过使用最高层级的社区摘要 (C0)它在回答问题的效果上依然优于传统 RAG但所消耗的计算资源 (token 数量) 却大大减少比处理全部源文本要少 97% 以上。这张图表展示了在两个不同数据集上各种方法之间的直接对比胜率。我们可以看到论文提出的 GraphRAG 方法在处理问题时能够生成比 (SS) 更全面、更多样化的答案同时相比于 (TS) 也有一定的优势。不过这种优势是以牺牲答案的直接性为代价的。下面的表格向我们展示了不同方法在处理数据时所涉及的上下文单元数量和 token 消耗。C0 到 C3 代表了 GraphRAG 从最顶层 (最概括) 到最底层 (最详细) 的社区摘要。TS 指的是直接对文本块进行摘要的方法。从表中可以很直观地看到层级越高 (如 C0)需要处理的单元数和 token 数就越少。特别是 C0它的 token 消耗量相比于 TS (可以看作是处理全部内容的基准) 减少了 97% 以上这在处理大规模数据时能极大地节省计算资源。Podcast TranscriptsNews ArticlesC0C1C2C3TSC0C1C2C3TSUnits343679691310166955555179721423197Tokens2665722575656572074610010146113977035264198089811402661707694% Max2.622.255.873.51002.320.757.466.8100这个表格用来衡量答案的量化全面性具体来说就是计算每个答案平均包含了多少个可验证的“事实性声明” (Claims)。SS 指的是传统的语义搜索 RAG。可以看到无论是新闻文章还是播客文字记录所有全局方法 (C0-C3, TS) 提取出的声明数量都明显多于传统的语义搜索 (SS)。这从一个侧面印证了全局方法在全面性上的优势它们的答案包含了更多的信息量。在不同层级的 GraphRAG 变体之间差异则不是特别大。ConditionAverage Number of ClaimsNews ArticlesPodcast TranscriptsC034.1832.21C132.5032.20C231.6232.46C333.1432.28TS32.8931.39SS25.2326.50这张表格衡量的是答案的量化多样性。研究人员将答案中的所有“事实性声明”进行语义聚类簇 (cluster) 的数量越多就代表答案涵盖的主题和视角越丰富。表格中的“Distance Threshold”是聚类算法的一个参数可以暂时不用太关注。核心要看的是“Average Number of Clusters”这一列。我们可以发现在所有条件下C0 (最高层级的 GraphRAG 摘要) 产生的聚类数量都是最多的。这说明尽管 C0 的摘要最概括但它能有效地整合来自不同子社区的信息从而在最终答案中呈现出最高的多样性。同样所有全局方法 (C0-C3, TS) 的多样性都高于传统方法 (SS)。DatasetDistance ThresholdAverage Number of ClustersC0C1C2C3TSSS————————News Articles0.523.4221.8521.9022.1321.8017.920.621.6520.3820.3020.5220.1316.780.720.1919.0619.0319.1318.6215.800.818.8617.7817.8217.7917.3014.80————————Podcast Transcripts0.523.1622.6222.5221.9321.1418.550.621.6521.3321.2120.6219.7017.390.720.4120.0419.7919.2218.0816.280.819.2618.7718.4617.8916.6615.07✨ GraphRAG 是如何工作的graphrag流程图整个流程可以分为两个主要阶段索引构建和查询与回答。这两个阶段的设计都体现了“从局部到全局”的核心思想。 阶段一索引构建这个阶段是 GraphRAG 的基石它的目标与传统 RAG 完全不同。传统 RAG 构建的是“向量索引”用于做语义匹配而 GraphRAG 构建的是一种“知识图谱 层级社区摘要”的复合索引。它的目的是将非结构化的文本转化为结构化的、按主题聚合的知识为后续的全局问答提供一个高效、高质量的输入源。整个构建过程可以细分为五个关键步骤。 第一步文本分块 (Text Chunking)这是所有工作的第一步即将原始文档分割成适合大语言模型处理的文本单元。这里的关键在于平衡成本与召回率。我从论文的附录里看到团队经过测试后选择了600 token作为默认的块大小并设置了100 token的重叠。600 token 的尺寸在实体召回率上表现很好不至于像更大的块那样容易遗漏信息同时调用成本也比更小的块要低。而 100 token 的重叠则是为了避免一个完整的实体关系被分块边界无情地切开。分块的方式也不是简单粗暴地按字数切割而是会优先考虑语义完整性比如按段落、句子甚至是播客中的对话轮次来分割。 第二步信息提取 (Extraction)分好块之后就轮到大语言模型登场了它的任务是从每个文本块中提取出结构化的信息主要有三类实体、关系和主张(Claims)。通过一个 prompt模型会被引导去识别出文本中的实体如组织、人物实体之间的关系如“A 公司收购了 B 公司”以及关于这些实体可被验证的事实性主张如“B 公司股价上涨”。这个过程是可定制的。比如在处理医疗文档时可以在 prompt 中加入“疾病”、“药物”等专业领域的示例引导模型提取出更精准的领域实体。对于特别大的文本块还会用到我们前面提到的“自反思”技术通过多轮检查来补全可能遗漏的实体。 第三步构建知识图谱 (Graph Construction)当所有文本块的结构化信息都被提取出来后下一步就是将它们编织成一张巨大的知识图谱。在这个图谱里每个独特的实体是一个节点实体间的关系则是一条边。一个很有意思的设计是边的权重取决于这个关系在原文中被提及的次数。一个关系被反复提及那么它的权重就越高代表这个关系可能更核心。而提取出的“主张”则会作为属性附加到对应的节点或边上为它们提供事实支撑。 第四步社区划分 (Community Detection)一个包含了成千上万节点和边的知识图谱虽然信息量大但还很杂乱。为了让它变得有序系统会使用社区发现算法对图谱进行“主题聚合”。论文中选用了Leiden 算法因为它在处理大规模图谱时既稳定又高效而且支持层级划分。算法会基于“模块度”的原则把图中连接紧密的节点划分到同一个社区。这个过程是递归的从最顶层的根社区C0开始不断地在社区内划分子社区C1, C2直到最细粒度的叶子社区C3为止形成一个覆盖了整个数据集的层级化主题结构。️ 第五步生成社区摘要 (Summary Generation)最后一步也是为查询阶段做好直接准备的一步就是为每一个层级的每一个社区都生成一份报告式的摘要。这个生成过程采用的是一种自下而上的策略。系统会先为最底层的叶子社区C3生成摘要。它会优先挑选社区内最重要的信息比如权重最高的边、连接最多的节点以及相关主张填充到模型的上下文窗口中然后生成一份详细的摘要。在生成更高层级社区如 C2的摘要时它会利用其下属所有 C3 子社区已经生成好的摘要。如果直接汇总所有底层信息会超出 token 限制模型就会聪明地用这些更精炼的子社区摘要来替代原始的、更冗长的信息从而实现对更大范围主题的概括。通过这五个步骤GraphRAG 就完成了一套复杂但高效的索引构建。最终的产出不再是冰冷的向量而是一个有结构、有主题、有层级的知识库。 阶段二查询与回答知识图谱与社区划分当用户提出一个全局性问题时GraphRAG 并不直接去检索原始文档而是利用前面生成的社区摘要来回答问题。这个过程基于一个“映射-归约” (Map-Reduce) 框架包含了一系列精心设计的步骤。 准备工作选择与打乱摘要在正式开始之前系统需要先做一些准备工作。首先是选择使用哪个层级的社区摘要。这个选择很灵活取决于用户的需求。如果只是想快速地对主题有个大概了解可以选择最顶层的 C0 摘要因为数量少、成本低。如果需要深入了解细节则可以选择更底层的 C3 摘要这里包含的信息粒度最细。选定摘要层级后一个很重要的步骤是随机洗牌。这么做的目的是为了避免信息扎堆。比如某个主题的所有摘要恰好都挨在一起如果它们在分块时被分到了同一个块里而这个块最终又因为排序靠后没能进入上下文窗口那这个主题的信息就可能完全丢失了。洗牌后再按照预设的 token 大小比如 8k将摘要分割成多个“摘要块”这样每个块里都会包含来自不同主题的摘要信息分布更均匀。✨ 映射阶段并行生成“部分答案”准备工作就绪后就进入了“映射” (Map) 阶段。这个阶段的核心思想是并行处理让每个摘要块都独立地生成一个局部的、部分的答案。系统会把用户的问题和每一个摘要块分别发送给大语言模型并利用多线程或分布式计算让这些任务同时运行这极大地提升了处理效率。这里的 prompt 也经过了专门设计它会要求模型扮演一个“综合分析报告的助手”并且必须严格依据摘要块里的信息来回答不能凭空编造。一个关键的要求是回答中必须保留原始社区摘要里的数据引用比如[Data: Reports (1,3,5,more)]这样的格式这为答案的可追溯性提供了保障。在生成每个部分答案之后模型还需要做一件事给这个答案打一个 0 到 100 的帮助度评分(Helpfulness Score)。这个分数评估了这份部分答案对解决用户问题的帮助程度。如果一个摘要块的内容和用户问题完全不相关那么它生成的部分答案得分可能就是 0这样的答案会被直接过滤掉不会进入下一个环节。 归约阶段整合最优信息所有摘要块都生成了带评分的部分答案后就来到了“归约” (Reduce) 阶段。这个阶段的目标是将这些零散的部分答案整合成一个高质量的全局答案。首先系统会把所有通过了过滤的部分答案按照“帮助度评分”从高到低进行排序。这样做的目的是确保最有价值的信息能够被优先考虑。然后系统会按照这个排序从分数最高的答案开始依次将它们的文本内容填充到一个新的上下文窗口中。这个填充过程会持续进行直到窗口被填满为止。我从论文里看到一个有趣的细节研究人员对比了 8k、16k、32k 等不同大小的上下文窗口发现8k 窗口的性能是最好的。这可能是因为更大的窗口容易出现“信息迷失在中间” (lost in the middle) 的问题即模型无法有效利用过长上下文的中间部分。同时如果某个部分答案加进来会导致窗口超限系统会直接舍弃这个答案以及排在它后面的所有答案以保证每个答案的完整性。 最终生成输出全局答案最后一步就是基于这个填充了高质量信息的上下文窗口生成最终的全局答案。此时模型会再次被一个特定的 prompt 指导要求它综合窗口内的所有信息给出一个结构清晰、有理有据的回答。这个最终答案同样需要保留所有的数据引用确保每一个观点都能追溯到来源这使得虚构信息的风险大大降低。更有趣的是这个流程还支持迭代。如果用户对第一次的答案不满意觉得细节不够可以基于答案中的数据引用定位到更深层级的社区摘要然后重复上述的“映射-归约”流程从而实现从全局概览到局部细节的分析。 它可能会有什么问题实体与关系抽取的质量是整个方法的基础。如果模型表现不稳定出现幻觉或者漏掉了关键信息那么构建出来的知识图谱从一开始就是不准确或不完整的这将直接影响后续所有步骤的质量。实体匹配也存在局限性。论文中提到他们使用的是精确字符串匹配来识别同一个实体。这是一个比较简单的方法可能会出问题。例如Microsoft Research 和 MSR 在现实中可能指向同一个机构但这种方法会把它们当成两个独立的实体。在生成社区摘要特别是从子社区摘要生成更高层级摘要的过程中不可避免地会丢失一些细节。为了概括模型可能会忽略一些细微但可能对某些特定问题很重要的信息。社区划分的有效性也依赖于知识图谱的结构。如果图谱因为抽取质量不高而连接稀疏那么划分出的社区可能主题不明确后续生成的摘要质量也会不高。最后GraphRAG 的设计重点是全局性问题。因为它依赖于摘要信息对于那些需要精确定位原始文本中某个具体引述或数据的查询它的表现可能不如直接在原文中进行语义搜索的传统 RAG 方法。 论文中的实验是怎么设计的研究人员设计的实验旨在回答一个核心问题在处理需要全局理解整个文档集的“意义构建”类问题时GraphRAG 是否优于传统方法为此他们首先需要解决两个前置问题用什么数据提问以及用什么标准评判️ 提出正确的问题由于标准的问答数据集侧重于事实检索不适合本次实验研究人员设计了一种自适应的提问方法。他们让大语言模型首先基于对数据集的简短描述生成几种可能会使用这个数据集的用户画像 (Personas) 以及这些用户可能执行的任务 (Tasks)。然后针对每个“用户-任务”组合再让模型生成 5 个需要通盘理解整个数据集才能回答的高层次问题。通过这种方式他们为每个数据集都生成了 125 个定制化的、符合实验目的的测试问题。 评判好坏的标准他们设计了三个专门用于评估“意义构建”答案质量的标准全面性(Comprehensiveness)、多样性(Diversity)、赋能(Empowerment)。同时他们还引入了一个直接性(Directness) 作为对照标准用于评估答案的简洁和切题程度。 实验一大模型当裁判这个实验是评估的核心旨在直接比较不同 RAG方法生成答案的质量。实验数据集包括一个约 100 万词元的播客文字稿数据集和一个约 170 万词元的新闻文章数据集。实验共设置了六种不同的方法来进行两两比较。其中包括四种使用不同摘要层级的 GraphRAG 变体从最顶层最概括的GraphRAG C0到包含更多细节的GraphRAG C1和GraphRAG C2再到最底层最详细的GraphRAG C3。另外两种是作为基线对比的方法。一种是**文本摘要 (TS)它不构建知识图谱直接用 map-reduce 流程来总结所有文本块。另一种是语义搜索 (SS)**它代表了传统的向量 RAG通过向量相似性检索相关的文本块来生成答案。对于 125 个测试问题中的每一个系统都会让任意两种方法生成各自的答案。然后将问题和两个答案同时提交给一个独立的模型裁判让它根据上述四个标准逐一判断哪个答案更好。 实验二量化指标来验证这个实验的目的是为了用一种更客观的数值指标来确认和验证实验一中模型裁判主观判断的有效性。研究人员从每个答案中抽取出可验证的事实性声明 (factual claims)。他们使用了一个名为 Claimify 的工具来完成这个抽取过程。一个事实性声明是指明确陈述了某个可验证事实的简单陈述。例如对于下面这个来自答案的句子“加州和纽约都实施了激励措施来鼓励可再生能源的采用这凸显了可持续性在政策决策中的广泛重要性。”这个句子会被分解成两个独立的、可以被核查的事实性声明加利福尼亚州实施了鼓励可再生能源采用的激励措施纽约州实施了鼓励可再生能源采用的激励措施。通过这种方式研究人员能够量化每个答案中包含的事实信息量。他们定义了两个量化指标量化全面性即每个答案中包含的独立声明的平均数量以及量化多样性通过对声明进行聚类计算形成的簇的数量来衡量。 实验告诉了我们什么实验结果很清晰地表明在处理需要通盘理解整个数据集才能回答的“全局性”问题上GraphRAG 的表现显著优于传统的向量 RAG 方法尤其是在答案的全面性和多样性方面。一个有趣的发现是即便是和同样处理全局问题、但不构建知识图谱的“文本摘要” (TS) 方法相比GraphRAG 依然有微小但持续的性能优势。这说明将文档内容构建成知识图谱这一步确实对生成更高质量的答案有帮助。GraphRAG 还展现了它高效的一面。当使用最高层级、最概括的社区摘要 (C0) 来回答问题时它在全面性和多样性上依然能胜过传统 RAG但所消耗的计算资源也就是 token 数量却减少了超过 97%。同时研究人员通过提取答案中的“事实性声明”数量和多样性从量化角度也验证了上述结论。全局方法生成的答案确实包含了更多、更丰富的事实信息。当然实验也客观地指出了 GraphRAG 的相对弱点。由于传统向量 RAG 的检索范围更聚焦它生成的答案在直接性上表现是最好的。✨ 扩展知识自我反思分块提升实体提取召回效率在 GraphRAG 的文本分块与实体提取环节中“自反思” (self-reflection) 技术是为解决“大尺寸文本块导致实体提取召回率下降”而设计的核心优化手段具体实现流程与逻辑如下 一、核心问题大尺寸文本块的实体提取痛点文本分块大小存在天然权衡长文本块如 2400 token可减少 LLM 调用次数、降低成本但 LLM 容易遗漏早期或低频出现的实体。实验数据显示当块大小从 600 token 增至 2400 token 时GPT-4 提取的实体引用数量近乎减半。这是因为 LLM 在处理长文本时存在“注意力分散”或“信息衰减”问题无法全面捕捉所有关键实体。为解决这一矛盾GraphRAG 引入“自反思”技术在不缩小块大小仍保留低成本优势的前提下通过多轮 LLM 交互补全遗漏的实体确保提取质量。 二、“自反思”技术的具体实现步骤“自反思”是一个多阶段迭代式的 LLM 交互流程核心是让 LLM 先生成初始结果再对结果进行“自我评估-补全优化”具体分为 3 个关键步骤初始实体提取首先将大尺寸文本块输入 LLM生成初始实体列表。此时的结果可能存在遗漏。自我评估将“初始实体列表原始文本块”重新输入 LLM通过一个强制二元决策的 prompt 让 LLM 评估是否有实体遗漏LLM 只能回答“是”或“否”。补全优化若 LLM 评估结果为“是”则触发补全流程。通过一个强化提示引导 LLM 细致地补全遗漏的实体。这个“补全-评估”的循环会重复进行直到 LLM 评估结果为“否”或达到预设的最大迭代次数。通过这一流程大尺寸文本块的实体提取质量可接近小尺寸块。实验显示2400 token 的文本块经过 3 轮自反思后实体引用检测数量与 600 token 块无自反思相当同时保留了“减少 LLM 调用成本”的优势。 三、技术设计的关键细节自反思的设计依赖于精巧的 prompt 工程包括用于二元判断的评估 prompt和强调补全的补全 prompt。同时通过设定最大迭代次数来平衡提取质量与时间成本。这项技术也能很好地与领域定制化提取兼容只需在 prompt 中加入领域专属的实体类型示例即可。 四、效果验证600、1200、2400chunks条件下的有无反思实体引用检测对比在 HotPotQA 数据集上的测试直观体现了自反思的价值无自反思时2400 token 块的实体引用检测数量仅为 600 token 块的 50% 左右。3 轮自反思后2400 token 块的实体引用数量接近 600 token 块且显著高于无自反思的 1200 token 块。成本对比2400 token 块3 轮自反思的 LLM 调用次数仅为 600 token 块的 1/4实现了质量与成本的双赢。 扩展知识上下文窗口选择与分块设计在 GraphRAG 的技术框架中文本分块 (Text Chunking) 是连接原始文档与后续实体提取、知识图谱构建的关键前置步骤其设计核心围绕“成本与召回率的平衡”展开。 一、分块设计的核心目标与权衡关系文本分块的根本矛盾在于“块大小”的选择。长块可以减少 LLM 的调用次数从而降低 API 成本和时间消耗但模型处理长文本时容易出现“注意力分散”导致对文本块早期或低频实体的召回率下降。短块的实体和关系召回率高但会导致调用次数激增并且可能切断实体间的跨块关联。GraphRAG 的分块设计目标就是在“召回关键信息”与“控制成本”之间找到最优解。️ 二、分块的基础参数设计GraphRAG 在实验与落地中采用“600 token 基础块 100 token 重叠”作为默认配置。600 token 被认为是一个“召回率-成本”的平衡点在保证较高召回率的同时单块也能覆盖相对完整的语义单元。而 100 token 的重叠设计主要是为了解决实体或关系被分块边界切割的问题确保跨块的语义关联不丢失。分块的方式也并非简单的按 token 数切割而是会结合文本结构特征比如优先按段落、句子边界来分割保证语义的完整性。 三、分块的动态优化与“自反思”协同为了进一步平衡成本与召回率GraphRAG 将分块设计与“自反思”技术深度协同。在处理超大规模文本时可以选择更大的块尺寸如 1200 或 2400 token以降低调用成本然后通过多轮“自反思”来弥补大尺寸块在实体召回率上的损失。实验证明这种方式能够以更低的成本达到与小尺寸块相当的实体提取质量。✨ 四、分块设计的领域适配性GraphRAG 的分块参数并非固定不变而是可以根据文本类型和领域特性进行动态调整。例如对于对话式的播客记录可能需要稍大的块来覆盖一轮完整的对话而对于结构清晰的新闻文章则可以使用稍小的块。对于专业术语多的学术论文或交叉引用频繁的法律文档可能需要更大的重叠度来保证关键关联不被切断。 五、分块效果的验证与评估团队通过实体提取召回率和下游图谱质量两个指标来验证分块设计的有效性。结果显示600 token 的分块设置在实体召回率和图谱的“实体-关系完整性”上都表现优异为后续的社区检测与摘要生成奠定了高质量的数据基础。 扩展知识Leiden 社区发现算法在 GraphRAG 的流程中一个关键步骤是将知识图谱划分为社区以便进行层级化总结。为此它选用了 Leiden 算法。选择 Leiden 算法的根本原因在于它解决了其前身非常流行的 Louvain 算法的一个严重理论缺陷。 为什么要用 Leiden 算法Louvain 算法的核心问题在于它可能会产生“任意糟糕连接的社区”。在最坏的情况下一个社区内部甚至可能是不连通的。这个问题源于 Louvain 的节点移动机制它可能导致社区被不当地分裂。实验表明这个问题非常普遍。Leiden 算法的设计初衷就是从根本上解决这个问题。 核心的数学公式Leiden 算法本身并不定义新的社区质量标准而是优化现有的“质量函数”目标是让函数的得分尽可能高。论文中讨论了两个核心的质量函数。**Modularity (模块度)**模块度是社区发现领域最经典和最常用的一个衡量标准。它的核心思想是一个好的社区划分其内部的连接紧密程度应该显著高于一个随机情况下网络的连接紧密程度。来源: From Louvain to Leiden: guaranteeing well-connected communities, Formula (1)在这个公式里 是社区 内部的实际边数 是社区内所有节点的度之和可以理解为社区的总连接数 是整个网络总边数而 是一个分辨率参数可以调整社区大小的偏好。一个好的社区它的 应该远大于随机期望值 。**Constant Potts Model (CPM)**CPM 是模块度的一个替代方案思想更直接。它认为一个好的社区其内部的连接密度本身就应该达到某个阈值而不是与一个随机模型去比较。来源: From Louvain to Leiden: guaranteeing well-connected communities, Formula (A4)在这里 仍然是社区内部实际边数 是社区内的节点数 是该社区可能存在的最大边数。参数 在这里直接扮演了密度阈值的角色。 Leiden 算法的核心流程Leiden 算法通过一个三阶段的迭代过程来优化上述质量函数局部节点移动与 Louvain 类似算法会尝试将节点移动到能够最大化提升质量分数的邻居社区中。但 Leiden 的效率更高因为它只考虑那些邻居节点发生了变化的节点。精炼划分这是 Leiden 算法最核心的创新。在形成初步的社区划分后Leiden 会对每个社区的内部进行精炼确保社区内部是紧密连接的将那些连接糟糕的部分分离开。网络聚合算法会基于精炼后的划分创建一个新的、更粗粒度的网络。然后算法会回到第一步在这个聚合后的新网络上重复上述过程直到社区划分的质量分数无法再获得任何提升为止。️ 它提供了哪些理论保证Leiden 算法不仅仅是在经验上表现更好它还提供了一系列 Louvain 算法无法提供的严格数学保证。它能保证每次迭代后产出的所有社区都是连通的。当算法完全收敛时它能达到一个更强的状态即社区是子集最优(subset optimal) 的这意味着社区内部结构非常稳固。♂️ 入群交流公众号菜单点击「社群」扫码直接入群回复关键词「入群」添加作者微信人工邀请注意备注入群 总结读到这里我们一起把 GraphRAG 的工作方式和核心思路梳理了一遍。希望现在你对这种方法有了一个更具体的认识。我们从传统向量 RAG 的局限性出发也就是它在处理需要“全局理解”问题上的短板。接着我们看到了 GraphRAG 是如何通过一个“预处理”的思路来应对这个挑战的。它选择在用户提问前就花费力气将海量文档构建成一张结构化的知识图谱并利用社区发现算法将其整理成不同层级的主题摘要。我们还具体了解了它在索引构建和查询回答这两个阶段的工作细节比如它是如何提取实体、如何进行层级化的社区划分以及在回答问题时那个高效的“映射-归约”流程。同时我们也讨论了这种方法可能存在的一些实际问题比如对实体抽取质量的依赖以及在概括过程中可能出现的信息丢失。通过这些内容我们能理解 GraphRAG 在答案的全面性和多样性上的优势也知道了它在答案直接性上相比传统方法的取舍。最后对于正在迷茫择业、想转行提升或是刚入门的程序员、编程小白来说有一个问题几乎人人都在问未来10年什么领域的职业发展潜力最大答案只有一个人工智能尤其是大模型方向当下人工智能行业正处于爆发式增长期其中大模型相关岗位更是供不应求薪资待遇直接拉满——字节跳动作为AI领域的头部玩家给硕士毕业的优质AI人才含大模型相关方向开出的月基础工资高达5万—6万元即便是非“人才计划”的普通应聘者月基础工资也能稳定在4万元左右。再看阿里、腾讯两大互联网大厂非“人才计划”的AI相关岗位应聘者月基础工资也约有3万元远超其他行业同资历岗位的薪资水平对于程序员、小白来说无疑是绝佳的转型和提升赛道。对于想入局大模型、抢占未来10年行业红利的程序员和小白来说现在正是最好的学习时机行业缺口大、大厂需求旺、薪资天花板高只要找准学习方向稳步提升技能就能轻松摆脱“低薪困境”抓住AI时代的职业机遇。如果你还不知道从何开始我自己整理一套全网最全最细的大模型零基础教程我也是一路自学走过来的很清楚小白前期学习的痛楚你要是没有方向还没有好的资源根本学不到东西下面是我整理的大模型学习资源希望能帮到你。扫码免费领取全部内容最后1、大模型学习路线2、从0到进阶大模型学习视频教程从入门到进阶这里都有跟着老师学习事半功倍。3、 入门必看大模型学习书籍文档.pdf书面上的技术书籍确实太多了这些是我精选出来的还有很多不在图里4、AI大模型最新行业报告2026最新行业报告针对不同行业的现状、趋势、问题、机会等进行系统地调研和评估以了解哪些行业更适合引入大模型的技术和应用以及在哪些方面可以发挥大模型的优势。5、面试试题/经验【大厂 AI 岗位面经分享107 道】【AI 大模型面试真题102 道】【LLMs 面试真题97 道】6、大模型项目实战配套源码适用人群四阶段学习规划共90天可落地执行第一阶段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 项目内容安全互联网信息服务算法备案…扫码免费领取全部内容3、这些资料真的有用吗这份资料由我和鲁为民博士(北京清华大学学士和美国加州理工学院博士)共同整理现任上海殷泊信息科技CEO其创立的MoPaaS云平台获Forrester全球’强劲表现者’认证服务航天科工、国家电网等1000企业以第一作者在IEEE Transactions发表论文50篇获NASA JPL火星探测系统强化学习专利等35项中美专利。本套AI大模型课程由清华大学-加州理工双料博士、吴文俊人工智能奖得主鲁为民教授领衔研发。资料内容涵盖了从入门到进阶的各类视频教程和实战项目无论你是小白还是有些技术基础的技术人员这份资料都绝对能帮助你提升薪资待遇转行大模型岗位。这份完整版的大模型 AI 学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】