GraphRAG 通过以下方式克服了这些问题:
- 更好的连接信息点:GraphRAG能够处理那些需要从多个数据点合成新见解的任务。
- 更全面的理解能力:GraphRAG 更擅长对大型数据集进行全面理解,能够更好地处理复杂的抽象问题。
而借助微软开源的GeaphRAG项目,我们可以快速做到以下事项:
- 基于图的检索:传统的 RAG 方法使用向量相似性进行检索,而GraphRAG引入了知识图谱来捕捉实体、关系及其他重要元数据,从而更有效地进行推理。
- 层次聚类:GraphRAG 使用 Leiden 技术进行层次聚类,将实体及其关系进行组织,提供更丰富的上下文信息来处理复杂的查询。
- 多模式查询:支持多种查询模式:
- 全局搜索:通过利用社区总结来进行全局性推理
- 局部搜索:通过扩展相关实体的邻居和关联概念来进行具体实体的推理。
- DRIFT 搜索:结合局部搜索和社区信息,提供更准确和相关的答案图机器学习:集成了图机器学习技术,提升查询响应质量,并提供来自结构化和非结构化数据的深度洞察
- Prompt 调优:提供调优工具,帮助根据特定数据和需求调整查询提示
检索增强生成(RAG)是一种通过结合真实世界的信息来提升大型语言模型(LLM)输出质量的技术。RAG 技术是大多数基于 LLM 的工具中的一个重要组成部分。大多数 RAG 方法使用 向量相似性 作为检索技术,我们将其称为基线 RAG(Baseline RAG)
GraphRAG 则使用 知识图谱 来在推理复杂信息时显著提升问答性能。当需要对复杂数据进行推理时,GraphRAG展示了优于基线 RAG的性能,特别是在知识图谱 的帮助下。
项目地址:microsoft/graphrag: A modular graph-based Retrieval-Augmented Generation (RAG) system
微软研究院开发的一种先进的增强检索生成(RAG)框架旨在提升语言模型(LLM)在处理复杂数据时的性能。与传统的 RAG方法依赖向量相似性检索不同,GraphRAG利用 知识图谱 来显著增强语言型的问答能力,特别是在处理私有数据集或大型、复杂数据集时表现尤为出色。
GraphRAG运行流程
- 索引(Indexing)过程
1.文本单元切分:将输入文本分割成TextUnits,每个TextUnit是一个可分析的单元,用于提取关键信息。
2.实体和关系提取:使用 LLM 从 TextUnits 中提取实体、关系和关键声明。
3.图构建:构建知识图谱,使用 Leiden 算法进行实体的层次聚类。每个实体用节点表示,节点的大小和颜色分别代表实体的度数和所属社区
4.社区总结:从下到上生成每个社区及其成员的总结,帮助全局理解数据集。
- 查询(Query)过程
索引完成后,用户可以通过不同的搜索模式进行查询:
全局搜索:当我们想了解整个语料库或数据集的整体概况时,GraphRAG可以利用 社区总结 来快速推理和获取信息。这种方式适用于大范围问题如某个主题的总体理解,
局部搜索:如果问题关注于某个特定的实体,GraphRAG 会向该实体的 邻居(即相关实体)扩展搜索,以获得更详细和精准的答案。
DRIFT 搜索:这是对局部搜索的增强,除了获取邻居和相关概念,还引入了 社区信息 的上下文,从而提供更深入的推理和连接。
- Prompt 调优
为了获得最佳性能,GraphRAG强烈建议进行 Prompt 调优,确保模型可以根据你的特定数据和查询需求进行优化,从而提供更准确和相关的答案。
Deepseek V3接入GraphRAG流程
1、GraphRAG安装与项目创建
!pip install graphrag
2、创建索引项目文件
mkdir -p ./openl/input
将需要增强的文件放入这个文件夹(.txt)
3、初始化项目文件
graphrag init --root ./openl
完毕后将自动生成一个.env文件与一个settings.yaml文件
4、打开.env文件,填写Deepseek API-KEY
打开setting.yaml文件,填写模型名称和反向代理地址(期间需要一个embedding转化词向量的模型、openai-api_key)
配置完成后,可调用openai检验是否可以使用
5、执行GraphRAG索引Indexing过程执行
!graphrag index --root ./openl
运行完毕后,各知识图谱相关数据集都保存在output文件夹中
6、GraphRAG问答流程
快速的测试问答性能
!graphrag query --root ./openl/input --method local --query "请帮我介绍下Deepseek"