【Semantic Kernel】RAG(检索增强生成)

news/2024/11/7 16:14:39/文章来源:https://www.cnblogs.com/fanfan-90/p/18532503

RAG(Retrieval-Augmented Generation)是一种结合信息检索和生成模型的自然语言处理方法。它通过检索相关文档片段作为生成模型的上下文,提高生成文本的准确性和相关性。RAG广泛应用于问答系统、对话系统和文本摘要等领域,兼具高效性和灵活性。公司的客户机器人都特别适合。下面的案例是使用GPT的embedding来向量化相关信息,然后通过关键字检索,最后把这些信息,结合用户问题送给gpt-4o,得到一个相对友好的回复结果。

代码:

/// <summary>
/// RAG(Retrieval Augmented Generation)检索增强生成
/// </summary>
public static class RAGSample
{public static async Task Exec(){#pragma warning disable SKEXP0001
#pragma warning disable SKEXP0010
#pragma warning disable SKEXP0050ISemanticTextMemory memory = new MemoryBuilder().WithOpenAITextEmbeddingGeneration("text-embedding-ada-002", Config.OpenAiKey).WithMemoryStore(new VolatileMemoryStore())//内存数据库,生产环境不能用.Build();#region 数据导入Memory
#pragma warning restore SKEXP0050
#pragma warning restore SKEXP0010
#pragma warning restore SKEXP0001var sampleData = new Dictionary<string, string>{["info4"]= "3年级2班有56人",["info5"]= "小明在3年级2班",["info6"]= "小明在第二中学",["info7"]= "第二中学有1500人"};var i = 0;foreach (var entry in sampleData){await memory.SaveReferenceAsync(collection: "个人信息",externalSourceName: "GitHub",externalId: entry.Key,description: entry.Value,text: entry.Value);}#endregionvar builder = Kernel.CreateBuilder().AddOpenAIChatCompletion(modelId: Config.OpenAiChatModel, Config.OpenAiKey);var kernel = builder.Build();var chatHistory = new ChatHistory(); var chat = kernel.GetRequiredService<IChatCompletionService>();while (true){Console.ResetColor(); Console.WriteLine("----------学生提问:----------"); var ask = Console.ReadLine(); chatHistory.Clear();chatHistory.AddSystemMessage("基于下面的信息回复问题:"); await foreach (var answer in memory.SearchAsync(collection: "个人信息", query: ask, limit: 3, minRelevanceScore: 0.65d, withEmbeddings: true)){ chatHistory.AddSystemMessage(answer.Metadata.Description); }chatHistory.AddUserMessage(ask); Console.WriteLine(); Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine("==========讲师回答:=========="); AuthorRole? role = AuthorRole.Assistant; var contentBuilder = new StringBuilder(); await foreach (var reply in chat.GetStreamingChatMessageContentsAsync(chatHistory)) { if (reply.Role.HasValue && role != reply.Role) { role = reply.Role; } Console.Write(reply.Content);contentBuilder.Append(reply.Content); }chatHistory.AddMessage(role.Value, contentBuilder.ToString()); Console.WriteLine();}}
}

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

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

相关文章

计算机系统体系结构

计算机系统体系结构 ​​ ​​ ​​ ‍大内核(宏内核)与微内核 ​​ CPU在内核态和用户态之间的转换需要耗费时间,影响性能。 ​​ ‍ 分层结构 ​​ ‍ 模块化 ​​ ‍ 外核 理解:未经抽象的内存空间资源 未虚拟化的,即连续地址的内存空间资源 →减少了虚拟硬件资源的“映射

WPF 4款 UI 库

HandyControl Panuon.WPF.UI AduSkin Layui-WPF HandyControl HandyControl是一套WPF控件库,它几乎重写了所有原生样式,同时包含80余款自定义控件。使用HandyControl你可以轻松地创建一个美观的WPF应用程序,从而大大提高开发效率。官网对应模板或者控件的说明:https://han…

大模型-大模型训练框架-07

目录1. 训练框架概述2. 重点 Deepspeed框架介绍3. DeepSpeed框架实践4. debug5. 扩展 1. 训练框架概述100亿 10^10 10B 参数量 是模型具备涌现能力的基本门槛 如何充分的利用显卡的能力 充分的使用显存 分布式训练框架对比 Megatron and DeepSpeed是目前主流的训练加速框架 训…

值班空岗睡岗识别智慧矿山一体机过路车辆识别视频智能监测功能解析

随着工业4.0的推进和智能化技术的飞速发展,矿山行业正面临着转型升级的关键时刻。传统的矿山作业方式存在诸多安全隐患和效率瓶颈,特别是在安全监控、设备维护和灾害预警等方面。为了提升矿山作业的安全性和效率,迫切需要一种集成化的智能化解决方案,以科技手段强化安全管理…

组合数学初步

组合数学初步 基本计数原理 加法原理:若完成一个事件 \(A\) 有 \(n\) 类方法,第 \(i\) 类有 \(s_i\) 种不同的方案,则完成事件 \(A\) 有 \(\sum^{n}_{i=1} s_i\) 种方案。 乘法原理:若完成一个事件 \(A\) 需要 \(n\) 步,第 \(i\) 步有 \(k_i\) 种不同的方式,则完成事件 \…

84_api_intro_stock_hk_stockhkindexhistory

港股指数历史行情数据 API 接口 所有港股指数历史交易行情数据,港指历史数据,支持日期范围筛选。1. 产品功能支持根据指数代码和日期范围查询港股指数历史交易数据 返回历史交易数据的日期、港股指数代码、开盘价、最高价、最低价和收盘价 毫秒级查询性能; 支持传递港股指数…

83_api_intro_stock_hk_stockhkindexrealtime

港股指数实时行情数据 API 接口 所有港股指数实时交易行情数据,港指实时数据,支持代码筛选。1. 产品功能支持所有港股指数实时交易数据查询; 包含港股实时交易多项指标数据; 毫秒级查询性能; 支持传递港股指数代码,筛选某一支港股指数的实时交易数据; 全接口支持 HTTPS(…

82_api_intro_websitetools_favicon

获取任意站点标题与图标 API 接口 解析站点的 title 与 favicon。1. 产品功能支持获取任意站点的标题和 favicon; 返回的 favicon 为站点链接; 全接口支持 HTTPS(TLS v1.0 / v1.1 / v1.2 / v1.3); 全面兼容 Apple ATS; 全国多节点 CDN 部署; 接口极速响应,多台服务器构…

算法网关视频分析网关车辆违停在安防项目中的应用及特点

一、行业背景 随着社会和经济的发展,公共安全和私人安全的需求都在不断增长。人们需要更高效、更准确的安防手段来保障生命财产安全,而人工智能技术正好可以提供这种可能、人工智能在安防领域有哪些应用? 据数据显示,预计2029年全球智能视频分析市场规模将达到71.7亿美元,…

38_api_intro_stock_cn_stockcnindexperminutes

A 股指数分时行情数据 API 数据接口 多维度分时指标,指数分时,多时间区间查询参数。1. 产品功能支持所有指数数据查询; 支持指数分时数据查询; 多时间维度分时数据; 多维度的统计时间以及数据结果; 秒级查询性能; 数据持续更新与维护; 全接口支持 HTTPS(TLS v1.0 / v1…

37_api_intro_stock_cn_stockcnindexhistory

A 股指数历史数据 API 数据接口 股指历史数据,支持指数列表获取,返回所有指数历史数据。1. 产品功能支持所有指数数据查询; 支持全量指数历史数据查询; 多维度的统计时间以及数据结果; 秒级查询性能; 数据持续更新与维护; 全接口支持 HTTPS(TLS v1.0 / v1.1 / v1.2 / v…

教你使用win10实现电脑的定时任务执行

制作定时任务: 步骤一、按下win+s 输入“任务计划程序”如下图: 提示:最好以管理员身份运行,避免任务无权限失败的情况。步骤二、进入到任务计划程序界面 可以看到很多以往程序设置的任务计划信息。 步骤三、新建一个任务文件夹,用来放入我们的自定义任务信息 这里我们取名…