使用Kernel Memory进行RAG评估:AI助力企业知识管理新突破

news2024/11/15 6:46:41

        在现代企业知识管理中,随着业务的不断发展和扩展,各种文档和数据呈现爆炸式增长。为了有效且高效地管理这些知识,企业通常会导入大量文档。然而,当涉及到对文档切片质量和回答准确度的判断时,传统的人工方法显得既费时又费力。既然我们已经在使用AI技术,那么能否让AI来接管这部分工作?答案是肯定的,这正是RAG评估的用武之地。

https://github.com/explodinggradients/ragas?tab=readme-ov-file

        今天,我们将深入探讨一个名为Kernel Memory中的一个实验性项目,它还未正式发布,但已经在AI社区中引起了广泛关注。Kernel Memory中的Evaluation模块包含两部分:TestSetGenerator和TestSetEvaluator,分别用于生成测试数据集和基于数据集进行质量评估。使用这些工具,我们可以显著降低人工成本,提高文档处理的效率和准确性。

TestSetGenerator:生成测试数据集

        在进行Kernel Memory评估之前,首先需要创建一个测试集,这个测试集包含查询和预期的答案。虽然这是一个手工过程,但对于大数据集来说,可能非常繁琐。为了简化这个过程,我们提供了一个生成器,它可以从给定的Kernel Memory内存和索引中创建测试集。

以下是一个简单的示例代码:

using Microsoft.KernelMemory.Evaluation;
var testSetGenerator = new TestSetGeneratorBuilder(memoryBuilder.Services)                            .AddEvaluatorKernel(kernel)                            .Build();
var distribution = new Distribution{    Simple = .5f,    Reasoning = .16f,    MultiContext = .17f,    Conditioning = .17f};
var testSet = testSetGenerator.GenerateTestSetsAsync(index: "default", count: 10, retryCount: 3, distribution: distribution);
await foreach (var test in testSet){    Console.WriteLine(test.Question);}

        在这个示例中,我们首先使用TestSetGeneratorBuilder来创建一个测试集生成器,并添加Evaluator内核。接下来,我们定义了一组分布参数,用于确定不同类型问题的比例。最后,我们生成测试集,并打印每个测试的问题。

TestSetEvaluator:质量评估

        一旦我们生成了测试集,下一步就是进行评估。通过TestSetEvaluator,我们可以评估Kernel Memory的性能。以下是相关代码示例:

var evaluation = new TestSetEvaluatorBuilder()                            .AddEvaluatorKernel(kernel)                            .WithMemory(memoryBuilder.Build())                            .Build();
var results = evaluation.EvaluateTestSetAsync(index: "default", await testSet.ToArrayAsync());
await foreach (var result in results){    Console.WriteLine($"Faithfulness: {result.Metrics.Faithfulness}, ContextRecall: {result.Metrics.ContextRecall}");}

        在这个示例中,我们首先创建一个TestSetEvaluator,并添加Evaluator内核和内存配置。接下来,我们评估测试集,并打印每次评估的结果,包含信实度(Faithfulness)和上下文回溯(ContextRecall)两个关键指标。

项目结构

        在Evaluation项目中,我们可以看到代码量并不大主要是提示词这里需要注意的是,Kernel Memory的提示词为英文,这里对中文的效果可能会打折扣,于是乎我把它平移翻译为中文来进行测试

例如这就是一个翻译前后的对比,由于这里大量依赖json输出,所以使用的模型必须支持json_object 否则在跑起来会有比较多的报错。

实际应用案例:AntSK项目

        在我们的AntSK项目中,我们已经集成了Evaluation模块进行质量评估。详情请参考我们的GitHub项目页面(AntSK)。

https://github.com/AIDotNet/AntSK

        通过结合Kernel Memory的Evaluation模块和AntSK项目,我们不仅可以实现高效的文档管理和评估,还能为企业带来更多的创新和提升整体效率。

总结与展望

        使用Kernel Memory进行RAG评估是一个创新和高效的解决方案,能够显著降低企业在知识管理方面的人工成本,同时提高处理效率和准确性。随着AI技术的不断发展和成熟,未来我们可以期待更多类似的工具和方法被开发和应用,为企业的智能化转型提供更强大的支持。

        如果您在企业知识管理方面遇到挑战或希望探索更多AI技术的应用,不妨试试Kernel Memory和AntSK项目,相信它们会为您的工作带来意想不到的惊喜。

        欢迎大家关注我的公众号,了解更多关于.NET和AI技术的前沿动态和实用教程,一起迎接未来技术的浪潮!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

复现dom破坏案例和靶场

目录 1.dom型xss平台 第一关 Ma Spaghet !: (1):当get参数中存在somebody时,h2回显 (2):当get参数中不存在somebody时,h2回显 第二关Jefff: 第三关:Ugan…

【前端面试】挖掘做过的nextJS项目(中)

https://blog.csdn.net/weixin_43342290/article/details/141170360?spm1001.2014.3001.5501文章浏览阅读105次。需求:快速搭建宣传官网1.适应pc、移动端2.基本的路由跳转3.页面渲染优化4.宣传的图片、视频资源的加载优化5.seo优化全栈react web应用、tailwind css原子工具的支…

动态规划篇--代码随想录算法训练营第三十二天|343. 整数拆分,96.不同的二叉搜索树,01背包理论,01背包优化

343. 整数拆分 题目链接:. - 力扣(LeetCode) 讲解视频: 动态规划,本题关键在于理解递推公式!| LeetCode:343. 整数拆分 题目描述: 给定一个正整数 n ,将其拆分为 k …

c++47 二级指针

二级指针的输入和输出模型 指针的输入&#xff1a;主调函数分配内存 指针输出 &#xff1a;被调用函数分配内存 指针做输入第一种模型 #define _CRT_SECURE_NO_WARNINGS #include <stdlib.h> #include <string.h> #include <stdio.h>// 二级指针做输…

《计算机组成原理》(第3版)第8章 CPU的结构和功能 复习笔记

第8章 CPU的结构和功能 一、CPU的结构 &#xff08;一&#xff09;CPU的含义 CPU实质包括运算器和控制器两大部分。 对于冯诺依曼结构的计算机而言&#xff0c;一旦程序进入存储器后&#xff0c;就可由计算机自动完成取指令和执行指令的任务&#xff0c;控制器就是专用于完成…

Python爬虫图片:从入门到精通

在数字化时代&#xff0c;图片作为信息传递的重要媒介之一&#xff0c;其获取和处理变得越来越重要。Python作为一种功能强大且易于学习的编程语言&#xff0c;非常适合用来编写爬虫程序&#xff0c;帮助我们自动化地从互联网上获取图片资源。本文将从基础到高级&#xff0c;详…

CTF密码学小结

感觉没啥好总结的啊 基础的永远是RSA、流密码、哈希、对称密码、古典密码那一套&#xff08;密码学上过课都会&#xff09;&#xff0c;其他的就是数论的一些技巧 似乎格密码也很流行&#xff0c;以及一些奇奇怪怪的性质利用也很多 1、random设置种子后随机的性质&#xff1a…

【LiteX】【开发板】【BoChenK7】使用Python开发FPGA【Hello World、LED点灯、Memory测速、替换BIOS】

目录 开发板介绍下载仓库工程设计工程构建构建流程 工程测试Hello WorldLED点灯Memory测速替换BIOS 开发板信息 开发板介绍 手头目前只有一个购买的BoChenK7开发板&#xff0c;后续会用它来进行LiteX FPGA SoC的构建 测试可能会包括&#xff1a; LED&#xff1a;本篇文章 DDR …

【区块链+乡村振兴】“蜜链盟”乡村振兴基层治理数字化平台 | FISCO BCOS应用案例

在国家战略政策推动和新一代信息化发展应用的合力之下&#xff0c;数字乡村是互联网化、信息化和数字化在农业农村经 济社会发展中的表现。为进一步加强乡村基层治理&#xff0c;根据《中共海南省委农村工作领导小组办公室海南省农业农 村厅关于在我省乡村治理中推广运用积分制…

【Docker】Docker Volume(存储卷)

一、什么是存储卷 存储卷就是将宿主机的本地文件系统中存在的某个目录直接与容器内部的文件系统上的某一目录建立绑定关系。这就意味着&#xff0c;当我们在容器中的这个目录下写入数据时&#xff0c;容器会将其内容直接写入到宿主机上与此容器建立了绑定关系的目录。 在宿主…

xss-靶场

一、环境地址 XSS Game - Learning XSS Made Simple! | Created by PwnFunction 二、案例复现 案列1——Ma Spaghet&#xff01; <!-- Challenge --> <h2 id"spaghet"></h2> <script>spaghet.innerHTML (new URL(location).searchParams…

idea2022新建jsp项目并配置Tomcat服务器

1、创建项目 2、添加jdk 步骤如下&#xff0c;然后点击下边的create 创建项目即可 3、点击file 4、选择模块添加web 5、配置tomcat 6、依次点击 7、新建jsp文件 8、成功显示

Python 全栈系列262 使用sqlalchemy(clickhouse)

说明 再补充一篇。之前连不上的原因也挺搞笑&#xff0c;大概是deepseek把我带偏了&#xff0c; 应该是 pip3 install clickhouse-sqlalchemy -i https://mirrors.aliyun.com/pypi/simple/ 但是它教我 pip3 install sqlalchemy-clickhouse -i https://mirrors.aliyun.com/py…

Keepalived总结笔记

环境准备&#xff1a;两台安装ka的服务器&#xff0c;两台客户机&#xff0c;IP无要求&#xff0c;关闭火墙和selinux 1.在两台主机上安装ka 全局配置文件在/etc/keepalived/keepalived.conf 可以改写邮件地址和发送邮件的地址和主机唯一标识以及组播地址 配置虚拟路由&…

基于单片机的智能晾衣系统设计

摘 要 &#xff1a;在网络信息技术的推动下&#xff0c;智能家居得到了广泛应用&#xff0c;文章根据当前的市场动态&#xff0c;针对基于单片机的智能晾衣系统设计展开论述&#xff0c;具体包括两个方面的内容———硬件设计和软件设计。 关键词 &#xff1a;单片机&#xff…

经方药食两用服务平台

TOC springboot226经方药食两用服务平台 绪论 1.1研究背景与意义 信息化管理模式是将行业中的工作流程由人工服务&#xff0c;逐渐转换为使用计算机技术的信息化管理服务。这种管理模式发展迅速&#xff0c;使用起来非常简单容易&#xff0c;用户甚至不用掌握相关的专业知识…

【经典算法】BFS_最短路问题

1. 最短路问题介绍 最短路径问题是图论中的一类十分重要的问题。本篇文章只介绍边权为1(或边权相同)的最简单的最短路径问题。所谓边权&#xff0c;就是两点之间的距离。 这类问题通俗的说就是告诉你起点和终点&#xff0c;要你找出最短的路径或是最短路径是多少。 解决方法&…

每日OJ_牛客_DP3跳台阶扩展问题

目录 DP3跳台阶扩展问题 题解代码1&#xff08;dp&#xff09; 题解代码2&#xff08;找规律&#xff09; DP3跳台阶扩展问题 跳台阶扩展问题_牛客题霸_牛客网 题解代码1&#xff08;dp&#xff09; 假定第一次跳的是一阶&#xff0c;那么剩下的是n-1个台阶&#xff0c;跳法…

汇编语言:jcxz 指令

‌ 在汇编语言中&#xff0c;jcxz 标号 指令是一个有条件转移指令&#xff0c;用于检测CX寄存器的值&#xff0c;如果CX寄存器的值为0&#xff0c;则跳转到指令中标号所指定的地址处执行&#xff1b;否则&#xff0c;指令将继续顺序执行。‌ 1. jcxz 标号 &#xff0…

超市收银出入库进销存库存管理系统java数据库SpringBoot前端VUE

系统设计是一个把软件需求转换成用软件系统表示的过程[9]。通过对目标系统的分析和研究&#xff0c;做出了对师范学院实习管理系统的总体规划&#xff0c;这是全面开发系统的重要基础。在对实习管理系统全面分析调查的基础上&#xff0c;制定出商品销售系统的总体规划。系统设计…