这个月微软开源了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/