LLMs之RAG:GraphRAG(本质是名词Knowledge Graph/Microsoft微软发布)的简介、安装和使用方法、案例应用之详细攻略
导读 :2024年7月3日,微软正式开源发布GraphRAG。GraphRAG可以提高大型语言模型在私有数据集上的推理能力。
背景痛点:基线RAG (Retrieval-Augmented Generation)方法在以下情况下表现不佳:
需要跨越不同片段信息进行综合推理时需要对大量数据集或大型单个文档进行整体语义理解时。
解决方案:
GraphRAG是一种结构化、分层的RAG方法,通过从原始文本中提取知识图谱、构建社区层次结构、生成社区总结等步骤,增强大型语言模型在私有数据集上的推理能力。
核心思路步骤:
>> 索引:将输入语料切分为TextUnits;使用大型语言模型从TextUnits中提取实体、关系和关键声明;使用Leiden技术对图谱进行分层聚类;从底层到顶层生成每个社区及其组成部分的总结
>> 查询
全局搜索:利用社区总结来回答关于整个语料库的综合性问题
局部搜索:通过扇出到相邻概念来回答关于特定实体的问题
提示调优:根据具体数据集和任务,建议对提示进行微调以获得最佳效果
优势:
>> 能够更好地处理需要综合推理和对大型数据集进行整体理解的任务
>> 在上述两类任务上表现优于其他基线RAG方法
>> 通过提示微调可以针对具体数据集和任务进行优化
目录
5、GraphRAG的局限性是什么?用户在使用系统时如何尽量减少GraphRAG局限性的影响?
6、哪些操作因素和设置可以有效和负责任地使用GraphRAG?
GraphRAG(Microsoft微软发布)的安装和使用方法
GraphRAG(Microsoft微软发布)的简介
2024年7月3日,微软正式开源发布GraphRAG。GraphRAG 项目是一个数据管道和转换套件,旨在利用大语言模型(LLM)的强大功能,从非结构化文本中提取有意义的结构化数据。
官方文章 :GraphRAG: Unlocking LLM discovery on narrative private data - Microsoft Research
GitHub地址 :GitHub - microsoft/graphrag: A modular graph-based Retrieval-Augmented Generation (RAG) system
文档地址 :Welcome to GraphRAG
1、什么是GraphRAG?
GraphRAG是一种基于AI的内容解释和搜索功能。通过使用大型语言模型(LLM),它解析数据以创建知识图谱,并回答用户关于用户提供的私有数据集的问题。
2、GraphRAG能做什么?
GraphRAG能够连接大量信息,并利用这些连接回答通过关键字和向量搜索机制难以或不可能回答的问题。在此基础上,提供半技术性的高级信息,说明系统如何为各种用途提供功能。这使得使用GraphRAG的系统能够回答跨越多个文档的问题,以及诸如"该数据集中的主要主题是什么?"这样的主题问题。
3、GraphRAG的预期用途是什么?
GraphRAG旨在支持关键信息发现和分析的用例,这些用例中,获取有用见解所需的信息分布在许多文档中,噪音较多,夹杂有错误信息或虚假信息,或者用户要回答的问题比底层数据能直接回答的问题更抽象或更具主题性。
GraphRAG设计用于已经接受过负责任的分析方法培训并具备批判性思维的用户环境中。GraphRAG能够在复杂信息主题上提供高度见解,但需要领域专家对答案进行人工分析,以验证和补充GraphRAG生成的响应。
GraphRAG旨在与特定领域的文本数据集一起部署和使用。GraphRAG本身不收集用户数据,但建议用户验证所选LLM的隐私政策。
4、GraphRAG是如何评估的?用什么指标来衡量性能?
GraphRAG通过多种方式进行了评估。主要关注点是
1)准确表示数据集,
2)提供透明和有依据的响应,
3)抵御提示和数据集注入攻击的弹性,
4)低幻觉率。每项评估的详细信息如下所述。
通过手动检查和对测试数据集的随机选取子集进行自动测试,验证数据集的准确表示。
通过自动答案覆盖评估和对返回的基础上下文进行人工检查,测试响应的透明性和有依据性。
通过手动和半自动技术测试用户提示注入攻击("越狱")和跨提示注入攻击("数据攻击")。
使用声明覆盖指标、答案和来源的人工检查以及对抗攻击尝试通过对抗性和极具挑战性的数据集强制幻觉评估幻觉率。
5、GraphRAG的局限性是什么?用户在使用系统时如何尽量减少GraphRAG局限性的影响?
GraphRAG依赖于精心构建的索引示例。对于通用应用(如以人、地点、组织、事物等为中心的内容),我们提供示例索引提示。对于独特的数据集,有效的索引依赖于适当识别领域特定概念。
索引是相对昂贵的操作;缓解索引的最佳实践是先在目标领域创建一个小型测试数据集,以确保索引器性能,然后再进行大规模索引操作。
6、哪些操作因素和设置可以有效和负责任地使用GraphRAG?
GraphRAG旨在由具有领域专业知识和经验丰富的用户使用,处理困难的信息挑战。尽管该方法通常能有效抵御注入攻击并识别冲突的信息来源,但该系统是为受信任的用户设计的。对响应进行适当的人工分析对于生成可靠的见解至关重要,并且应追踪信息来源以确保人类对推理结果的认同。
GraphRAG在自然语言文本数据上效果最好,这些数据集体聚焦于一个整体主题或主题,并且实体丰富------实体是指可以唯一标识的人、地点、事物或对象。
尽管GraphRAG已经过评估,以评估其对提示和数据集注入攻击的抵御能力,并探讨了特定类型的危害,但用户配置的LLM可能会生成不适当或冒犯的内容,因此在敏感环境中部署时需要针对具体使用场景和模型采取额外的缓解措施。开发者应根据他们的背景评估输出,使用可用的安全分类器、模型特定的安全过滤器和功能(例如https://azure.microsoft.com/en-us/products/ai-services/ai-content-safety),或适合其用例的定制解决方案。
GraphRAG(Microsoft微软发布)的安装和使用方法
要开始使用 GraphRAG 系统,我们推荐尝试解决方案加速器包。这提供了一个使用 Azure 资源的用户友好的端到端体验。
本库介绍了一种使用知识图谱记忆结构增强 LLM 输出的方法。请注意,提供的代码仅作为演示用途,并不是微软官方支持的产品。
警告:GraphRAG 索引可能是一个昂贵的操作,请阅读所有文档以了解过程和涉及的成本,并从小规模开始。
1、安装
下载库
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 文件中的 GRAPHRAG_API_KEY 并修改 settings.yaml。
运行索引管道:
python -m graphrag.index --root ./ragtest
使用查询引擎:
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?"
2、使用方法
2.1、提示调优
直接使用 GraphRAG 处理您的数据可能不会产生最佳效果。我们强烈建议按照文档中的提示调优指南对提示进行微调。
GraphRAG(Microsoft微软发布)的案例应用
持续更新中......