手把手教你集成GraphRag.Net:打造智能图谱搜索系统
在人工智能和大数据发展的背景下,我们常常需要在项目中实现知识图谱的应用,以便快速、准确地检索和使用信息。
今天,我将向大家详细介绍如何在一个新的.NET项目中集成GraphRag.Net,这是一个参考GraphRag实现的.NET版本,能够实现图谱数据的存储、检索、和问答功能。
在此之前,如果你还不熟悉GraphRag.Net的基本原理和实现,可以先参考我之前的文章。接下来,就让我们开始手把手集成GraphRag.Net的实践过程吧!
第一步:添加GraphRag.Net的NuGet包
最简单的方式是通过命令行添加NuGet包:
dotnet add package GraphRag.Net
当然,你也可以通过Visual Studio 2022进行添加,方便图形化的操作。

第二步:配置项目
在成功添加NuGet包后,我们需要在程序的启动文件中进行依赖注入配置。首先,在项目根目录添加以下三个配置文件,分别为:
OpenAI配置:用于设置大模型接口的API密钥和端点。
TextChunker配置:用于设置文档切片的参数。
GraphDBConnection配置:用于设置数据库连接,默认支持SQLite和PostgreSQL。
在appsettings.json中添加以下配置:
{
"OpenAI": {
"Key": "sk-xxx",
"Endpoint": "https://api.antsk.cn/",
"ChatModel": "gpt-4o-mini",
"EmbeddingModel": "text-embedding-ada-002"
},
"TextChunker": {
"LinesToken": 100,
"ParagraphsToken": 1000
},
"GraphDBConnection": {
"DbType": "Sqlite", // "PostgreSQL"
"DBConnection": "Data Source=graph.db",
"GraphDBConnection": "graphmem.db",
"VectorSize": 1536 // 仅在使用PostgreSQL时设置
}
}
接着,在Program.cs中进行依赖注入:
// OpenAI配置
builder.Configuration.GetSection("OpenAI").Get<OpenAIOption>();
// 文档切片配置
builder.Configuration.GetSection("TextChunker").Get<TextChunkerOption>();
// 配置数据库连接
builder.Configuration.GetSection("GraphDBConnection").Get<GraphDBConnectionOption>(); // 注入AddGraphRagNet,这里需要注意,需要先注入配置文件后注入AddGraphRagNet
builder.Services.AddGraphRagNet();
注意:必须先注入配置文件,然后再注入GraphRagNet,以确保一切工作都已配置完毕。
第三步:使用GraphRag.Net的核心功能
在完成配置后,我们就可以开始使用GraphRag.Net提供的强大的图谱服务功能了。在需要使用的地方,注入IGraphService:
public class YourService
{
private readonly IGraphService _graphService; public YourService(IGraphService graphService)
{
_graphService = graphService;
} // 以下是核心方法的使用示例
} //.net8新语法可以使用主构造函数进行注
public class YourService(IGraphService _graphService)
{
// 以下是核心方法的使用示例
}
在上面的示例中,我们可以调用以下核心方法:
查询所有索引
var graphModel = _graphService.GetAllIndex();
查询索引下的图谱
var graphModel = _graphService.GetAllGraphs(index);
插入文本数据到图谱(未切片)
await _graphService.InsertGraphDataAsync(model.Index, model.Input);
插入文本数据到图谱(切片)
await _graphService.InsertTextChunkAsync(index, txt);
生成社区摘要
await _graphService.GraphCommunitiesAsync(index);
生成全局摘要
await _graphService.GraphGlobalAsync(index);
不同的查询模式
我们提供了两种不同的查询模式,每种模式都有其优缺点:
搜索递归获取节点相关的所有边和节点进行图谱对话
var result = await _graphService.SearchGraphAsync(model.Index, model.Input);
通过社区算法检索社区节点进行对话
var result = await _graphService.SearchGraphCommunityAsync(model.Index, model.Input);
总结
通过本文的介绍,我们了解了如何在一个新项目中集成GraphRag.Net。根据不同的应用场景,你可以选择不同的查询和摘要生成方法。由于当前导入仅支持文本数据,在实际项目中,可以结合Kernel Memory的自定义Handler来导入不同格式的文档。

欢迎大家加入我们的交流社区,如果感兴趣,请关注我的公众号《许泽宇的技术分享》并发送“进群”来获取加入方式。期待与你们一起交流心得,共同进步!
手把手教你集成GraphRag.Net:打造智能图谱搜索系统的更多相关文章
- 手把手教你集成华为机器学习服务(ML Kit)人脸检测功能
当给自己拍一张美美的自拍照时,却发现照片中自己的脸不够瘦.眼睛不够大.表情不够丰富可爱-如果此时能够一键美颜瘦脸并且添加可爱的贴纸的话,是不是很棒? 当家里的小孩观看iPad屏幕时间过长或者眼睛离屏幕 ...
- 动手实践丨手把手教你用STM32做一个智能鱼缸
摘要:本文基于STM32单片机设计了一款基于物联网的智能鱼缸. 本文分享自华为云社区<基于STM32+华为云IOT设计的物联网鱼缸[玩转华为云]>,作者: DS小龙哥 . 1. 前言 为了 ...
- 手把手教你使用Python生成图灵智能小伙伴,实现工作助手/闲聊功能
/1 前言/ 在家闲着,做个小项目,基于Python,实现一个语聊小机器人,分享给大家.项目整体比较简单,官方文档介绍的非常详细,可快速上手. /2 目标/ 将图灵机器人放到桌面,实现工作助手/陪聊功 ...
- 手把手教你在VMware虚拟机中安装Ubuntu14.04系统
在VMware中创建完虚拟机之后,一般需要给虚拟机安装系统,比较受青睐的系统有Ubuntu和Centos,关于Centos系统的安装之前已经写过了,感兴趣的小伙伴可以戳这篇文章:靠谱的centos7. ...
- 手把手教你Android手机与BLE终端通信--连接,发送和接收数据
假设你还没有看上一篇 手把手教你Android手机与BLE终端通信--搜索,你就先看看吧,由于这一篇要接着讲搜索到蓝牙后的连接.和连接后的发送和接收数据. 评论里有非常多人问假设一条信息特别长,怎么不 ...
- 手把手教你如何在Ubuntu系统中安装Pycharm
前几天带大家一起安装了Ubuntu14.04系统,没来得及上车的伙伴可以戳这篇文章:手把手教你在VMware虚拟机中安装Ubuntu14.04系统.今天小编带大家一起在Ubuntu14.04中安装Py ...
- Android:手把手教你打造可缩放移动的ImageView(下)
在上一篇Android:手把手教你打造可缩放移动的ImageView最后提出了一个注意点:当自定义的MatrixImageView如ViewPager.ListView等带有滑动效果的ViewGrou ...
- 每天记录一点:NetCore获得配置文件 appsettings.json vue-router页面传值及接收值 详解webpack + vue + node 打造单页面(入门篇) 30分钟手把手教你学webpack实战 vue.js+webpack模块管理及组件开发
每天记录一点:NetCore获得配置文件 appsettings.json 用NetCore做项目如果用EF ORM在网上有很多的配置连接字符串,读取以及使用方法 由于很多朋友用的其他ORM如S ...
- 手把手教你Pytest+Allure2.X定制报告详细教程,给自己的项目量身打造一套测试报告-02(非常详细,非常实用)
简介 前边一篇文章是分享如何搭建pytest+Allure的环境,从而生成一份精美的.让人耳目一新的测试报告,但是有的小伙伴或者童鞋们可能会问,我能不能按照自己的想法为我的项目测试结果量身打造一份属于 ...
- 手把手教你使用 Clion 开发 Linux C++ 项目
手把手教你使用 Clion 开发 Linux C++ 项目 关于CLion CLion是一款专为开发C及C++所设计的跨平台IDE.它是以IntelliJ为基础设计的,包含了许多智能功能来提高开发人员 ...
随机推荐
- 分享一个关于Avl树的迭代器算法
1 研究过程 前段时间在研究avl树的迭代实现,在节点不使用parent指针的情况下,如何使用堆栈来实现双向地迭代.我参考了网络上的大部分迭代器实现,要么是使用了parent指针(就像c++的map容 ...
- 深入探讨Function Calling:在Semantic Kernel中的应用实践
引言 上一章我们熟悉了 OpenAI 的 function calling 的执行原理,这一章节我们讲解一下 function calling 在 Semantic Kernel 的应用. 在Open ...
- 7.22考试总结(NOIP模拟23)[联·赛·题]
不拼尽全力去试一下,又怎么会知道啊 前言 又是被细节问题搞掉的一天. T1 的话,与正解相差无几,少打了两个 else 一个 ls 打成了 rs,然后就爆零了(本来还有 45pts 的),然后加了一个 ...
- 阿里云ECS后台CPU占用100%,top却找不到
上周公司阿里云服务器后台报警,CPU占用瞬间飙升到100%: 首先想到使用top命令查询CPU占用详情: 发现进程占用CPU都比较低,在CPU占用一栏发现只有ni的占用比较高. 先了解一下CPU相关监 ...
- 详解在Linux中同时安装配置并使用 MySQL5.7 和 MySQL8.0
最近需要使用mysql8.0版本,但是原本的mysql5.7版本已经被多个服务依赖,于是想想能不能同一台服务器装多个版本的mysql,一查确实可行,这里做一个记录方便自己后期回忆 阅读本文前请注意!! ...
- 刀剑英雄 刀剑Online 双开 多开 窗口在后台 画面不动
刀剑英雄 刀剑Online 双开 多开 窗口在后台 画面不动 解决方法: 进游戏前,在游戏设置中,选择"后台渲染",然后再进游戏.
- 前端使用 Konva 实现可视化设计器(14)- 折线 - 最优路径应用【代码篇】
话接上回<前端使用 Konva 实现可视化设计器(13)- 折线 - 最优路径应用[思路篇]>,这一章继续说说相关的代码如何构思的,如何一步步构建数据模型可供 AStar 算法进行路径规划 ...
- 内部网关协议RIP-路由选择协议
路由信息协议RIP(Routing Information Protocol)是内部网关协议IGP中最先得到广泛使用的协议,其相关标准文档为RFC1058. 一.RIP基本工作原理 RIP要求自治系统 ...
- Lfu缓存在Rust中的实现及源码解析
一个 lfu(least frequently used/最不经常使用页置换算法 ) 缓存的实现,其核心思想是淘汰一段时间内被访问次数最少的数据项.与LRU(最近最少使用)算法不同,LFU更侧重于数据 ...
- ZYNQ:使用 PetaLinux 构建Linux项目
参考文档:ug1144-petalinux-tools-reference-guide.pdf 环境安装 tofrodos iproute2 gawk gcc g++ git make net-too ...