当前位置: 首页 > news >正文

手把手教你集成GraphRag.Net:打造智能图谱搜索系统

        在人工智能和大数据发展的背景下,我们常常需要在项目中实现知识图谱的应用,以便快速、准确地检索和使用信息。

        今天,我将向大家详细介绍如何在一个新的.NET项目中集成GraphRag.Net,这是一个参考GraphRag实现的.NET版本,能够实现图谱数据的存储、检索、和问答功能。

        在此之前,如果你还不熟悉GraphRag.Net的基本原理和实现,可以先参考我之前的文章。接下来,就让我们开始手把手集成GraphRag.Net的实践过程吧!

用.Net实现GraphRag:从零开始构建智能知识图谱

第一步:添加GraphRag.Net的NuGet包

        最简单的方式是通过命令行添加NuGet包:

dotnet add package GraphRag.Net

        当然,你也可以通过Visual Studio 2022进行添加,方便图形化的操作。

图片

第二步:配置项目

        在成功添加NuGet包后,我们需要在程序的启动文件中进行依赖注入配置。首先,在项目根目录添加以下三个配置文件,分别为:

  1. OpenAI配置:用于设置大模型接口的API密钥和端点。

  2. TextChunker配置:用于设置文档切片的参数。

  3. 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来导入不同格式的文档。

        欢迎大家加入我们的交流社区,如果感兴趣,请关注我的公众号并发送“进群”来获取加入方式。期待与你们一起交流心得,共同进步!


http://www.mrgr.cn/news/44484.html

相关文章:

  • 大模型面试宝典:问题全集及权威解答
  • 你真的了解Elecron吗?
  • 面试官:如何实现分布式系统的限流?
  • ‌图片编辑为底片,智能工具助力,创作精彩视觉作品
  • 影刀RPA实战:Excel排序、替换与格式
  • 超强AI绘画工具StableDiffusion,SD整合包V4.9 来了 版本win加mac安装包以及搭载PS安装说明
  • 基于springboot vue 研究生科研文档资料管理系统设计与实现
  • 产品经理内容分享(二):AI产品经理的入门路线图
  • SpringBoot企业级开发(SpringSecurity安全控制+pringBatch批处理+异步消息+系统集成SpringIntegration)
  • 利用LLMs自动寻找量化投资策略
  • 医院管理新趋势:Spring Boot技术引领
  • 安卓如何实现双击触摸唤醒点亮屏幕功能-Android framework实战开发
  • mmdetection实战,训练自己的数据集
  • C语言复习概要(四)
  • 基于SpringBoot vue3 的山西文旅网java网页设计与实现
  • 国庆练习(Day24)
  • vscode提交修改Failed to connect to github.com port 443: Timed out
  • 一个典型的cmakelists.txt
  • 【星汇极客】单片机竞赛之2024睿抗机器人大赛-火线速递赛道(持续更新)
  • 向量数据库!AI 时代的变革者还是泡沫?