新一代 RAG 来了!微软开源超强 GraphRAG,5 天拿下 5.9K Star!


近期微软开源了 GraphRAG[1] 项目,该项目不到 1 周就迅速拿下 5.9K Star,非常火爆。GraphRAG 是一种结构化、层次化的检索增强生成(RAG)方法,有别于使用纯文本片段的语义搜索方法。GraphRAG 流程包括从原始文本中提取知识图谱、构建层次结构、生成摘要,然后在执行基于 RAG 的任务时利用这些结构。
近期热文
当 AI 遇上爬虫:让数据提取变得前所未有的简单!
2024 年最完整的 AI Agents 清单来了,涉及 13 个领域,上百个 Agents!
超强 OCR 神器:支持批量 OCR、文档识别、公式识别,离线可用、完全免费!
什么是 RAG
在人工智能和自然语言处理领域,RAG(Retrieval-Augmented Generation)即检索增强生成,巧妙地结合了信息检索和文本生成两大功能,为 AI 系统带来了前所未有的灵活性和准确性。
这种方法通过在生成响应之前先检索相关信息,使 AI 能够访问和利用大量外部知识。这不仅增强了 AI 的回答能力,还显著提高了其输出的可靠性和相关性。无论是在问答系统、虚拟助手还是内容创作等应用中,RAG 都展现出巨大的潜力。
GraphRAG 有什么用
GraphRAG 能够连接大量信息中的信息,并使用这些连接来回答使用关键字和基于向量的搜索机制难以或不可能回答的问题。在上一个问题的基础上,提供有关系统如何为各种用途提供功能的高级信息。这使得使用 GraphRAG 的系统能够回答跨越多个文档的问题以及诸如 “此数据集中最重要的主题是什么?” 之类的问题。
GraphRAG vs Baseline RAG
检索增强生成(RAG)是一种利用现实世界信息来改进大型语言模型(LLM)输出的技术。这种技术是大多数基于 LLM的工具的重要组成部分,而大多数 RAG 方法使用向量相似性作为搜索技术,我们称之为 Baseline RAG。GraphRAG 利用知识图谱,在处理复杂信息的问答性能上取得了显著改进。
在某些情况下,Baseline RAG 的表现非常差。例如:
当回答一个问题需要通过它们共享的属性来遍历不同的信息片段,以提供新的综合见解时,Baseline RAG 难以连接点。
当被要求全面理解大型数据集合或甚至是单一大型文档中的总结语义概念时,Baseline RAG 表现不佳。
为了解决这些问题,微软研究院的新方法 GraphRAG 使用 LLM 创建基于输入语料库的知识图谱。这个图谱,连同摘要和图机器学习输出,被用来在查询时增强提示。GraphRAG 在回答上述两类问题上显示出显著的改进。
来源 Microsoft Research BlogGraphRAG 运行流程
索引阶段
将输入的文档切分成一系列文本单元。这些文本单元作为整个过程中可分析的基本单位,并能为输出提供细粒度的引用。
使用大语言模型(LLM)从这些文本单元中提取所有的实体、关系和关键陈述。
使用 Leiden[2] 算法对图进行层次聚类。图中每个圆圈代表一个实体(比如人物、地点或组织),圆圈的大小表示该实体的重要程度,颜色则表示它所属的社区。
自下而上地为每个社区及其组成部分生成摘要。这有助于全面理解数据集。
查询阶段
在回答问题时,这些结构被用来为大语言模型的上下文窗口提供材料。主要的查询模式有:
全局搜索:用于推理关于整个文档集的全局性问题,主要利用社区摘要。

局部搜索:用于推理特定实体的相关问题,通过扩展到该实体的邻居和相关概念来获取信息。
GraphRAG 快速上手
使用 GraphRAG 之前,需要确保本机已安装 3.10-3.12 之间的 Python。
安装 graphrag
pip install graphrag
运行索引器
1.创建数据集目录
mkdir -p ./ragtest/input
2.下载数据集
curl https://www.gutenberg.org/cache/epub/24022/pg24022.txt > ./ragtest/input/book.txt
3.配置工作区变量
python -m graphrag.index --init --root ./ragtest
运行索引管线
python -m graphrag.index --root ./ragtest
运行查询引擎
1.全局搜索:
用于推理关于整个文档集的全局性问题,主要利用社区摘要
python -m graphrag.query \--root ./ragtest \--method global \"What are the top themes in this story?"
2.局部搜索:
用于推理特定实体的相关问题,通过扩展到该实体的邻居和相关概念来获取信息:
python -m graphrag.query \--root ./ragtest \--method local \"Who is Scrooge, and what are his main relationships?"
如果想要进一步了解如何使用 GraphRAG,可以阅读 GraphRAG 官方文档[3]。
https://github.com/microsoft/graphrag
往期文章
开源实时数字人:支持 iOS/Android 快速部署,十几个模型可供下载使用!
超强 MedicalGPT:训练医疗领域大模型,支持 Qwen-2 和 Llama-3 等十几种开源模型!
30.3K Star 超强工具:让你用本地微信聊天记录,训练你的专属 AI 聊天助手!
开源流式数字人来了:实现音视频同步对话,基本可达商用效果!
PDF 转 Markdown 神器,精准且快速:支持 90 多种语言 OCR,还支持提取表格、图片和公式!
欢迎您与我交流 AI 技术/工具

关注 AI 真好玩,带你玩转各类 AI 工具,掌控数字未来!
如果这篇文章对您有所帮助,请点赞、关注,并分享给您的朋友。感谢您的支持!
参考资料
[1] 
GraphRAG: https://github.com/microsoft/graphrag[2] 
Leiden: https://arxiv.org/pdf/1810.08473.pdf[3] 
GraphRAG 官方文档: https://microsoft.github.io/graphrag/posts/get_started/
到顶部