GraphRAG:知识图普RAG

GraphRAG 是一种结构化的、层次化的检索增强生成(RAG)方法,区别于简单的文本片段语义搜索。GraphRAG 过程包括从原始文本中提取知识图谱,构建社区层级,为这些社区生成摘要,然后在执行 RAG 任务时利用这些结构。

详见:https://microsoft.github.io/graphrag/

GraphRAG安装非常简单,首先安装最新的Python,要求是Pyton3.10~3.12,我安装的是3.12.4。

1、安装graphrag
pip install graphrag
2、创建输入文件夹,用来存放RAG的内容
mkdir -p ./ragtest/input
3、下面是官方的book.txt内容获取命令
curl https://www.gutenberg.org/cache/epub/24022/pg24022.txt > ./ragtest/input/book.txt
建议换掉,太大太费钱了,换一个内容少的,中文的,我用GPT生成了一段如下内容,作为替换:
.NET 是由微软开发的一个广泛使用的开发平台。它包括了一个丰富的框架和工具集,用于创建各种类型的应用程序,包括桌面应用程序、Web 应用程序、移动应用程序、游戏以及更多。以下是对 .NET 的详细解释:

  1. .NET 的历史与演变
    .NET 的开发始于 2000 年代初期。最初,微软推出了 .NET Framework 1.0,主要用于 Windows 操作系统上的开发。随着时间的推移,.NET 也经历了多个重大版本更新和变革:

.NET Framework:这是最早的 .NET 版本,主要用于 Windows 应用程序的开发。它包括了类库和运行时环境,支持多种编程语言,如 C# 和 VB.NET。它的核心组成部分是公共语言运行时(CLR)和 .NET 类库。
.NET Core:2016 年,微软推出了 .NET Core,它是一个跨平台版本的 .NET,允许开发者在 Windows、Linux 和 macOS 上开发和运行应用程序。相比于 .NET Framework,.NET Core 更加轻量级且开源。
.NET 5 和以后的版本:从 .NET 5 开始,微软宣布了统一平台的计划,将 .NET Framework 和 .NET Core 的特性结合在一起,推出了一个更具一致性的开发平台。此后,.NET 6、.NET 7 和 .NET 8 等版本陆续发布,持续改进性能、支持更多功能和平台。

  1. .NET 的核心组成部分
    公共语言运行时(CLR):这是 .NET 的执行引擎,它负责代码的执行、内存管理、垃圾回收以及其他重要的运行时服务。CLR 使得 .NET 支持多种编程语言,通过统一的运行时环境提供了一致的行为。

.NET 类库:提供了大量的预构建代码,可以被开发者在应用程序中重用。这些类库涵盖了各种功能,包括文件 I/O、网络通信、数据库访问和图形用户界面(GUI)等。它们为开发者提供了构建应用程序所需的基础功能。

语言支持:.NET 支持多种编程语言,其中最主要的包括 C#、VB.NET 和 F#. C# 是最流行的语言,它是一个强类型、面向对象的语言,适合构建各种类型的应用程序。VB.NET 主要用于开发 Windows 应用程序,而 F# 是一种函数式编程语言,适合需要复杂数据处理的应用场景。

ASP.NET:这是一个用于开发 Web 应用程序的框架。ASP.NET 包括 ASP.NET Web Forms、ASP.NET MVC 和 ASP.NET Core 等技术,帮助开发者创建动态网页和 Web 服务。ASP.NET Core 是一个跨平台、开源的版本,支持在 Windows、Linux 和 macOS 上运行。

Entity Framework (EF):这是一个对象关系映射(ORM)框架,用于简化与数据库的交互。EF 允许开发者使用对象模型来操作数据库,而无需直接编写 SQL 查询,从而提高了开发效率。

Xamarin:这是一个用于开发跨平台移动应用程序的框架。Xamarin 允许开发者使用 C# 编写代码,并在 Android 和 iOS 上运行应用程序,从而实现代码复用和一致的用户体验。

  1. .NET 的优势
    跨平台支持:通过 .NET Core 和 .NET 5 及以后版本,开发者可以在不同的操作系统上开发和部署应用程序,打破了平台限制。这对于希望在多个平台上运行应用程序的开发者来说非常重要。

性能优化:.NET 平台经过了大量的性能优化和改进。CLR 和 JIT(即时编译器)技术帮助提高了应用程序的执行效率。最新版本的 .NET 还包括了许多性能改进,减少了内存消耗和提高了运行速度。

开源和社区支持:自 .NET Core 开始,.NET 平台变得开源,代码托管在 GitHub 上,任何人都可以查看和贡献代码。这使得 .NET 社区变得更加活跃,开发者可以从中获得支持和帮助。

工具支持:.NET 生态系统提供了丰富的开发工具,包括 Visual Studio 和 Visual Studio Code。这些工具具有强大的调试、测试和代码编辑功能,能够极大地提升开发效率。

丰富的库和框架:.NET 提供了大量的类库和框架,涵盖了从 Web 开发到桌面应用、从数据访问到云服务的各个方面。这些库和框架能够帮助开发者快速构建高质量的应用程序。

  1. .NET 的应用场景
    桌面应用程序:使用 Windows Forms 或 WPF(Windows Presentation Foundation)开发 Windows 桌面应用程序。这些技术提供了丰富的用户界面控件和工具,使得开发复杂的桌面应用变得更加容易。

Web 应用程序:使用 ASP.NET 或 ASP.NET Core 开发 Web 应用程序和 Web 服务。ASP.NET Core 的跨平台特性使得开发者能够在不同的操作系统上部署 Web 应用。

移动应用程序:使用 Xamarin 开发跨平台的移动应用程序,能够在 Android 和 iOS 上运行相同的代码。Xamarin 提供了对原生 API 的访问,同时保持了高效的代码复用。

云服务:通过 .NET 开发的应用程序可以集成到 Azure 等云平台,利用云计算的优势实现弹性扩展、数据存储和其他云服务功能。

游戏开发:使用 Unity 引擎进行游戏开发,Unity 是一个广泛使用的游戏开发平台,支持 .NET 脚本语言,开发者可以利用 C# 编写游戏逻辑。

  1. .NET 的未来发展
    随着技术的进步和市场需求的变化,.NET 也在不断发展。微软持续改进和扩展 .NET 平台的功能,增强其跨平台能力、性能和开发体验。未来,.NET 可能会在以下方面继续发展:

增强的跨平台支持:不断提升在不同操作系统和硬件平台上的支持能力,确保应用程序能够在各种环境中平稳运行。

更高的性能:继续优化运行时和库的性能,减少内存使用,提高执行效率,满足高性能应用的需求。

更好的开发工具:开发工具和 IDE 的持续改进,提供更强大的功能和更好的用户体验,帮助开发者更高效地完成开发任务。

社区和开源贡献:鼓励社区的参与和贡献,利用开源的力量推动 .NET 的发展,并解决开发者遇到的问题。

总结来说,.NET 是一个强大且灵活的开发平台,适用于各种应用程序的开发需求。从桌面应用到 Web 应用,从移动应用到游戏开发,.NET 提供了丰富的工具和框架,帮助开发者高效地创建高质量的软件。随着技术的进步和社区的支持,.NET 将继续在软件开发领域发挥重要作用。
5、初始化,创建配置和输出文件夹
python -m graphrag.index –init –root ./ragtest
创建完成后,把.env中填上自己的gpt的key,为了省钱可以在settings.yaml中,把gpt的model换成gpt-4o-mini

6、生成索引

python -m graphrag.index –root ./ragtest

用global来检索:
python -m graphrag.query –root ./ragtest –method global “.net有什么优势?”
结果:

用local来检索:

python -m graphrag.query –root ./ragtest –method local “.net支持的语言有那些?”
结果:

其实GraphRAG就是笨鸟先飞策略,先用LLM都数据处理一次,并以知识图谱的形式存放,这样的效果就要优于直接的RAG了。

声明:文中观点不代表本站立场。本文传送门:https://eyangzhen.com/419209.html

(0)
联系我们
联系我们
分享本页
返回顶部