GraphRAG:知识图普RAG

news/2025/3/1 22:49:01/文章来源:https://www.cnblogs.com/ljknlb/p/18745576

  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 等版本陆续发布,持续改进性能、支持更多功能和平台。
2. .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 上运行应用程序,从而实现代码复用和一致的用户体验。3. .NET 的优势
跨平台支持:通过 .NET Core 和 .NET 5 及以后版本,开发者可以在不同的操作系统上开发和部署应用程序,打破了平台限制。这对于希望在多个平台上运行应用程序的开发者来说非常重要。性能优化:.NET 平台经过了大量的性能优化和改进。CLR 和 JIT(即时编译器)技术帮助提高了应用程序的执行效率。最新版本的 .NET 还包括了许多性能改进,减少了内存消耗和提高了运行速度。开源和社区支持:自 .NET Core 开始,.NET 平台变得开源,代码托管在 GitHub 上,任何人都可以查看和贡献代码。这使得 .NET 社区变得更加活跃,开发者可以从中获得支持和帮助。工具支持:.NET 生态系统提供了丰富的开发工具,包括 Visual Studio 和 Visual Studio Code。这些工具具有强大的调试、测试和代码编辑功能,能够极大地提升开发效率。丰富的库和框架:.NET 提供了大量的类库和框架,涵盖了从 Web 开发到桌面应用、从数据访问到云服务的各个方面。这些库和框架能够帮助开发者快速构建高质量的应用程序。4. .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# 编写游戏逻辑。5. .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了。

  文章来源微信公众号

  想要更快更方便的了解相关知识,可以关注微信公众号 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/891736.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

抛弃 forEach,让数组遍历更高效

forEach 方法因其简洁易读的语法成为了我们处理数组的首选。然而,随着性能要求的提高和更多数组方法的出现,是时候重新评估我们的数组遍历策略了。 forEach 的局限性 forEach 方法虽然直观,但存在几个明显的缺点:性能较差:在大数组上,forEach 的执行速度通常比传统的 for…

【Smart Fill】自家AI智能辅助录入工具

SmartFill使用说明SmartFill是一款智能输入工具,用户可以输入文字;上传图片、Word、Excel、PDF、文本文件;语音输入。SmartFill会把用户输入的信息进行提取、转换、汇总,然后输入到页面内对应项目中,从而为用户节省时间,提升效率。SmartFill目前以Chrome插件的形式提供,…

C/C++跨平台SDK开发的注意事项

1. C/C++跨平台开发时有哪些值得注意的事项?1.1. 你知道如何选择C++标准的版本吗?1.1.1. C++版本说明 1.1.2. 如何选择版本 1.1.3. 最佳实践1.2. 源代码要如何保存,跨平台和跨IDE时才不会出现中文乱码?1.2.1. 中文乱码问题与原因分析 1.2.2. 解决策略1.3. 如何优雅的隔离平…

Semantic Kernel:Service内置服务

在SK中内置了一些服务,这些服务可以让我们的应用,简单的实例化调用,便拥有AI能力。以OpenAI为例,SK中内置的OpenAI服务有:内容生成服务:OpenAITextGenerationService聊天服务:OpenAIChatCompletionService文本转图片服务:OpenAITextToImageService声音转文本服务:Open…

扩展NLog加密日志

最近有个需求,要求把日志加密,因为系统一直用的是NLog,所以也只能在这个基础上加密了。本文的用法NLog很早就有了,记录下来,以作后用。NLog加密相对好处理,只需要定义一个TargetWithLayout的子类,重写它的Write方法即可,至于加密算法,可以自己行决定,这样就可以把灵活…

基于stm32的智能门铃-课程设计

介绍 本人的处理器项目课程设计,设计简易,仅为记录学习所用。 代码还未优化,例如全局变量应使用消息队列替换、功能简单可无需使用操作系统等等。 课设题目要求实现功能按键控制蜂鸣器发声 语音控制 手机蓝牙控制 乐曲选择硬件部分 主控 STM32F103C8T6 离线语音识别模块 ASR…

nginx不能进行负载均衡问题的一种情况及其解决方案

本文主要提出一种nginx不能进行负载均衡的情况,并给出解决方案nginx不能进行负载均衡问题的一种情况及其解决方案 1.原因: 由于本地可以启动多个nginx服务器,每个服务器的负载均衡策略可以不同。那么当我们中途更改nginx配置文件并重载的时候,可能会由于之前的误操作,导致新…

HybridCache 混合缓存

asp.net core 9中,引入了HyBridCache,本质上他并不是全新的一种缓存,而以与原来的缓存复合使用。<Project Sdk="Microsoft.NET.Sdk.Web"><PropertyGroup><TargetFramework>net9.0</TargetFramework><Nullable>enable</Nullable&…

让.NET9中的OpenAPI有脸面

前一篇简单说了一下怎么在项目中引入新的OpenAPI,本篇再进一步,看看怎么引入UI界面。主要做法是通过添加/scalar/openapidemo这个静态页面实现,在页面中,引入了scalar的js,关于scalar,请详看https://scalar.com。其他信息与上一篇介绍的差不多。代码如下:using Microsof…

.NET9 中不一样的OpenAPI

在.NET9的第4个预览版里,微软带来了OpenAPI,需要引用Microsoft.AspNetCore.OpenApi,如果想生成本地的API描述文件,需要引用Microsoft.Extensions.ApiDescription.Server。下面是项目文件:<Project Sdk="Microsoft.NET.Sdk.Web"><PropertyGroup><…

2025/2/22课堂记录

dp,树上依赖背包,树上dp,多叉树转二叉树,愚蠢的矿工,宝藏,状压,猛兽军团,国王目录愚蠢的矿工 国王(猛兽军团)愚蠢的矿工这网页稍微有点乱,不过凑合凑合还能看,就是没法提交了而已 首先看到的第一眼,感觉是树上依赖背包 毕竟要挖到某一个节点的宝藏要之前知道根节点…

【Azure Storage Account】利用App Service作为反向代理, 并使用.NET Storage Account SDK实现上传/下载操作

问题描述 在使用Azure上的存储服务 Storage Account 的时候,有时需要代替 它原本提供的域名进行访问,比如默认的域名为:mystorageaccount.blob.core.chinacloudapi.cn, 想转变为 myservice.file.com 。如果使用App Service作为反向代理,我们现在有如下三个疑问: 第一:如…