在数据激流始终涌来的当天,如何高效且精准地从浩瀚的消息陆地中提炼出有价值的新闻,成为了人造言语处置畛域待处置的关键疑问。传统的检索增强生成(RAG)架构,以其共同的检索与生成联合的形式,在必定水平上满足了这一需求,为消息处置带来了方便。但是,随着运行场景的复杂化,传统RAG在处置全局性、深档次语义消息上的局限性逐渐浮现。
正是在这样的背景下,微软翻新性地推出了GraphRAG(图的检索增强生成)架构,它不只保管了传统RAG架构中的精髓部分——即极速检索与生成高品质照应的才干,更在此基础上引入了常识图谱这一反派性的技术元素。经过精心构建的常识图谱,GraphRAG成功了对消息结构的深度开掘与全局性掌握,使得其在处置复杂语义相关和多主题疑问时展现出史无前例的长处。上方本文将针对 GraphRAG 与 传统 RAG 架构设计区分启动剖析。
一、传统 RAG 架构设计思维
1、 文档编码 :
传统RAG首先会对输入的文档启动预处置,如分词、去除停用词等。接着,应用人造言语处置(NLP)技术,如词嵌入或Transformer模型,将文档中的每个词或短语转换为高维向量,构成文档的向量示意。
2、 消息检索 :
在文档编码成功后,RAG架构会应用这些向量在已有的常识库中启动相似度计算,找到与输入文档最相关或最婚配的消息。常识库可以包括预训练的模型、外部数据库、历史问答平等。
3、 融合生成 :
检索到相关消息后,RAG架构会将这些消息与原始输入文档启动融合。融合的方法可以是经过某种权重机制、留意力机制等,使得原始文档与检索到的消息能够相互补充。最后,基于融合后的消息,RAG架构会生成相应的照应或输入。
二、微软 GraphRAG架构设计思维
1、常识图谱构建
GraphRAG架构的**在于其常识图谱的构建。 微软应用大型言语模型(LLM)从源文档中提取实体、相关和属性等消息。这些消息被组织成一个结构化的常识图谱,图谱中的节点代表实体,边代表实体之间的相关。
2、社区检测与摘要
在常识图谱构建成功后,GraphRAG会经常使用社区检测算法(如Leiden算法等)来识别图谱中严密相关的实体组(社区)。 每个社区代表一个特定的主题或畛域,GraphRAG会为每个社区生成一个摘要,这个摘要能够概括该社区的重要内容或特点。
3、查问聚焦生成
当用户输入查问时,GraphRAG会依据查问内容在常识图谱中查找相关的社区和摘要。GraphRAG会基于这些相关的社区和摘要生成部分照应,每个照应都针对查问中的某个方面或主题。最后,GraphRAG会将一切相关的部分照应启动汇总和整合,构成一个完整的全局答案。
如上这是论文的一个截图,形容了 Graph RAG 处置流程。
下图展现了一个可视化示例。每个圆圈代表一个实体(例如,一团体、一个地点或一个组织),实体大小示意该实体具备的相关数量,色彩示意相似实体的分组。色彩分区是一种建设在图形结构之上的自下而上的聚类方法,它使咱们能够回答不同形象档次的疑问。
三、微软 GraphRAG 与传统 RAG 架构设计对比剖析
全局性 :传统RAG更并重于部分消息的婚配和融合,而GraphRAG经过常识图谱和社区检测机制能够捕捉全局消息,提供更片面、准确的回答。
结构化示意 :GraphRAG经常使用常识图谱来示意消息,这种结构化的示意形式使得消息愈加明晰、易于了解和推理。而传统RAG则更依赖于向量序列来示意消息,基线 RAG 难以将各个点衔接起来。
性能长处 :GraphRAG的模块化设计使得在索引和查问时能够并行处置多个社区和摘要,提高了处置效率。
四、GraphRAG 系统的方便经常使用示例
环境要求:
Python 3.10-3.12
运转示例:
pip install graphrag# 运转索引器,设置一个数据名目和一些初始性能mkdir p ragtest# 失掉查尔斯·狄更斯的《圣诞颂歌》数据curl httpswwwgutenbergorgcacheepubpg24022txt ragtestbooktxt# 初始化您的上班区,首先运转命令graphrag.index --initpython m graphragindex init root ragtest# 这将在目录中创立两个文件:.env和。settings.yaml./ragtest# .env蕴含运转 GraphRAG 管道所需的环境变量。假设审核文件,您将看到已定义的单个环境变量。# GRAPHRAG_API_KEY=<API_KEY>这是 OpenAI API 或 Azure OpenAI 端点的 API 密钥。您可以将其交流为您自己的 API 密钥。# settings.yaml蕴含管道的设置。您可以修正此文件以更改管道的设置。# 这里提供了两种形式,以下以 Azure OpenAI 用户应在 settings.yaml 文件中设置以下变量为例 azure_openai_chat api_base httpsinstanceopenaiazurecomapi_version preview deployment_name azure_model_deployment_namepython m graphragindex root ragtest# 运转查问引擎,有两种形式:# 全局搜查提出初级疑问的示例:python m graphragquery \root ragtest \method \# 本地搜查征询无关特定角色的更详细疑问的示例:python m graphragquery \root ragtest \method local \
总结
微软GraphRAG经过引入常识图谱和社区检测机制,有效处置了传统RAG在处置全局性疑问时的局限性。其结构化示意和并行处置的才干使得GraphRAG在消息检索和生成畛域具备清楚长处。但是,其复杂性和高昂的老本也是须要思考的起因。未来,随着技术的始终提高和优化,GraphRAG有望在更多畛域失掉运行和开展。
开源地址:
原文链接: