GraphRAG 是一种结构化的、分层的检索增强生成 (RAG) 方法,而不是朴素的语义搜索 使用纯文本片段的方法。GraphRAG 过程涉及从原始文本中提取知识图谱、构建社区层次结构、为这些社区生成摘要,然后在执行基于 RAG 的任务时利用这些结构。
要了解有关 GraphRAG 的更多信息,以及如何使用它来增强您的 LLM 推理私有数据的能力,请访问 Microsoft Research 博客文章。
GraphRAG 的 github: https://github.com/microsoft/graphrag
指导链接:https://microsoft.github.io/graphrag/
开始使用 GraphRAG 🚀
要开始使用 GraphRAG,请查看入门指南。 如需更深入地了解主要子系统,请访问索引器和查询包的文档页面。
GraphRAG 与基线 RAG 🔍
检索增强生成 (RAG) 是一种使用真实世界信息改进 LLM 输出的技术。这种技术是大多数基于 LLM 的工具的重要组成部分,大多数 RAG 方法使用向量相似性作为搜索技术,我们称之为基线 RAG。GraphRAG 使用知识图谱在推理复杂信息时大幅提高问答性能。RAG 技术在帮助 LLM 推理私有数据集方面显示出前景——LLM 没有接受过训练且以前从未见过的数据,例如企业的专有研究、商业文档或通信。基线 RAG 是为了帮助解决此问题而创建的,但我们观察到基线 RAG 性能非常差的情况。例如:
- 基线 RAG 难以将这些点连接起来。当回答一个问题需要通过其共享属性遍历不同的信息片段以提供新的综合见解时,就会发生这种情况。
- 当被要求在大型数据集合甚至单一的大型文档中全面理解汇总的语义概念时,基线 RAG 的表现很差。
为了解决这个问题,技术界正在努力开发扩展和增强RAG的方法。Microsoft Research 的新方法 GraphRAG 使用 LLM 基于输入语料库创建知识图谱。此图形以及社区摘要和图形机器学习输出用于增强查询时的提示。GraphRAG 在回答上述两类问题方面显示出实质性的改进,展示了优于以前应用于私有数据集的其他方法的智能或掌握能力。
GraphRAG 流程 🤖
GraphRAG 建立在我们之前使用图形机器学习的研究和工具之上。GraphRAG 过程的基本步骤如下:
指数
- 将输入语料库划分为一系列 TextUnits,这些 TextUnit 充当流程其余部分的可分析单元,并在我们的输出中提供细粒度的引用。
- 使用 LLM 从 TextUnits 中提取所有实体、关系和键声明。
- 使用 Leiden 技术对图形执行分层聚类。要直观地看到这一点,请查看上面的图 1。每个圆圈都是一个实体(例如,一个人、一个地方或组织),大小代表实体的程度,颜色代表其社区。
- 自下而上生成每个社区及其组成部分的摘要。这有助于对数据集的整体理解。
查询
在查询时,这些结构用于在回答问题时为 LLM 上下文窗口提供材料。主要的查询模式有:
提示调优
在数据开箱即用的情况下使用 GraphRAG 可能无法产生最佳结果。 我们强烈建议您按照我们文档中的提示调整指南来微调您的提示。
本地 ollama 实现 GraphRAG
GraphRAG 确实有使用 Ollama 实现的本地 LLM 方案,它支持多种本地模型,如 llama3、mistral 等。这种适配允许高效且成本低廉的本地推理,消除了对昂贵的 OpenAI 模型的需求。设置过程包括创建一个 conda 环境、安装 Ollama 和下载所需的模型。配置还包括通过 settings.yaml
文件管理嵌入和 LLM 模型。
有关更详细的说明和设置步骤,可以参考以下 GitHub 仓库和指南:
这些资源提供了安装和使用本地 LLM 的 GraphRAG 的全面指南,包括代码示例和设置说明。