微软开源GraphRAG,是做什么的?

这个月微软开源了GraphRAG,这是一种增强RAG的方法, 花不多少,上链接
git: https://github.com/microsoft/graphrag?tab=readme-ov-file

GraphRAG是什么?

GraphRAG 是一种基于 AI 的内容解释和搜索功能。它使用 LLM 解析数据以创建知识图谱,并回答用户关于私有数据集的问题(本地知识库)。并且能够将大量信息连接起来,并利用这些连接(将知识聚类,类与类之间的关系)来回答那些使用关键字和基于向量的搜索机制难以回答或无法回答的问题。在上一个问题的基础上,提供有关系统如何提供各种用途功能的半技术性高级信息。

GraphRAG 的用途

GraphRAG 旨在支持关键信息发现和分析用例,其中获得有用见解所需的信息涵盖许多文档、嘈杂、混杂错误和/或虚假信息,或者当用户想要回答的问题比底层数据更抽象或主题化时可以直接回答。
GraphRAG 旨在用于用户已接受过负责任的分析方法培训并需要批判性推理的环境中。GraphRAG 能够对复杂的信息主题提供高度的洞察力,但需要领域专家对答案进行人工分析,以验证和增强 GraphRAG 生成的响应。
GraphRAG 旨在与特定领域的文本数据语料库一起部署和使用。GraphRAG 本身不收集用户数据,但鼓励用户验证用于配置 GraphRAG 的所选 LLM 的数据隐私政策。

GraphRAG 的优点

相比较于Base RAG来讲,GraphRAG可以通过结合LLM生成的知识图谱,来全局的进行搜索,可以更加结构化的组织语言,而不是仅仅依赖于相似文本的矢量搜索,这样得到的结果会更加的准确,而且对于抽象的问题,回答的会更准确一些,比如你问他排名前几的XXX是什么?或者哪几个选项最好?

使用方式

使用方式可参考:GraphRAG Accelerator
https://github.com/Azure-Samples/graphrag-accelerator

架构图

在这里插入图片描述
安装graphrag

pip install graphrag

准备示例数据集

mkdir -p ./ragtest/input
curl https://www.gutenberg.org/cache/epub/24022/pg24022.txt > ./ragtest/input/book.txt

设置工作空间变量

python -m graphrag.index --init --root ./ragtest

这将在目录中创建两个文件:.env和。settings.yaml./ragtest

.env包含运行 GraphRAG 管道所需的环境变量。如果检查文件,您将看到已定义的单个环境变量。 GRAPHRAG_API_KEY=<API_KEY>这是 OpenAI API 或 Azure OpenAI 端点的 API 密钥。您可以将其替换为您自己的 API 密钥。
settings.yaml包含管道的设置。您可以修改此文件以更改管道的设置。
OpenAI 和 Azure OpenAI
要在 OpenAI 模式下运行,只需确保使用 OpenAI API 密钥更新文件GRAPHRAG_API_KEY中的值。.env

Azure OpenAI
此外,Azure OpenAI 用户应在 settings.yaml 文件中设置以下变量。要找到适当的部分,只需搜索配置llm:,您应该会看到两个部分,一个用于聊天端点,一个用于嵌入端点。以下是如何配置聊天端点的示例:

type: azure_openai_chat # Or azure_openai_embedding for embeddings
api_base: https://<instance>.openai.azure.com
api_version: 2024-02-15-preview # You can customize this for other versions
deployment_name: <azure_model_deployment_name>

此过程需要一些时间才能运行。这取决于输入数据的大小、使用的模型以及使用的文本块大小(这些可以在文件中配置.env)。管道完成后,您应该会看到一个名为的新文件夹,./ragtest/output//artifacts其中包含一系列 parquet 文件。
运行使用

python -m graphrag.query \
--root ./ragtest \
--method global \
"What are the top themes in this story?"
python -m graphrag.query \
--root ./ragtest \
--method local \
"Who is Scrooge, and what are his main relationships?"

参考:
https://microsoft.github.io/graphrag/

微软开源GraphRAG是一种基于图神经网络的强化学习框架,它主要用于文本生成任务,特别是长文本序列的生成。GraphRAG将输入的文本作为图结构处理,通过节点表示单词或词组,边则用于表示它们之间的上下文依赖关系。 ### GraphRAG的基本原理 1. **图构建**:首先,将输入文本转换成图形式,每个单词或词组是一个节点,边则代表它们之间的上下文关系或依赖关系。 2. **图嵌入**:利用预训练的语言模型(如BERT、ELMo等)对节点进行编码,得到每个节点的向量表示。这些向量不仅包含词汇信息,还能捕捉到复杂的语义和句法特征。 3. **注意力机制**:引入注意力机制来计算不同节点间的交互,帮助模型更好地理解句子的结构,并在生成过程中给予重要节点更多的权重。 4. **强化学习策略**:使用强化学习算法(例如Q-learning、Policy Gradient等),通过奖励函数指导模型学习如何生成高质量的文本。奖励通常基于生成文本的质量,比如语言流畅度、逻辑连贯性和主题一致性。 5. **动态规划优化**:为了提高效率和减少搜索空间,可以结合动态规划技术,使得模型能够在有限步内出最优决策,生成最佳文本片段。 ### 实现步骤概览: 1. **数据准备**:收集并预处理所需的数据集,包括文本、标注和相应的奖励机制设计。 2. **模型搭建**:基于PyTorch或其他深度学习库构建GraphRAG框架的基础模型,包括图结构的创建、图嵌入层的设计以及强化学习组件的整合。 3. **训练过程**:使用优化器迭代更新模型参数,同时调整策略网络以最大化累积奖励。 4. **测试与评估**:在验证集上评估模型性能,关注生成文本的质量、长度和相关性。 5. **应用与扩展**:根据实际应用场景需求,调整模型配置或集成额外的功能,如多模态输入、特定领域的知识增强等。 ### 遇到的问题及解决思路: - **过拟合**:通过增加正则化项、使用更丰富的数据集、进行数据增强等方式缓解。 - **训练耗时**:优化模型架构、采用并行计算或GPU加速,选择更适合大规模数据的优化算法。 - **生成质量不稳定**:改进奖励函数设计、加强模型解释力、使用更精细的评价指标辅助训练过程。 ### 相关问题: 1. **GraphRAG与其他图神经网络模型的区别是什么?** 2. **如何优化GraphRAG的训练速度而不牺牲生成文本的质量?** 3. **在哪些领域中GraphRAG特别有优势?它的局限性在哪里?**
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值