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

RAG(检索增强生成)原理、实现与评测方法探讨

RAG是什么?

    看一下RAG的英文全称:Retrieval-Augmented Generation,建索、增强、生成;一句话串起来就是通过检索增强模型的生成,是的,这就是RAG。

RAG怎么做?

    目前比较通用的套路是这样的:

    离线数据准备:数据提取->数据切片->创建索引->embedding->落库。

    解释一下embedding:嵌入,它其实就是将高维度的,复杂的、通常是离散的数据(比如文本、图像、音频等)转换为低维度的、连续的向量表示的过程。这些向量表示具有语义上的相似性,意味着在向量空间中,相似的对象会被映射到相近的向量。

在线查询:query->embedding query ->向量检索->送给大模型->LLM归纳生成

当然根据实际业务场景,有各种各样的变体,如:

变体1:在线查询:query->embedding query->向量检索->rank->送给大模型->LLM归纳生成

变体2:在线查询:query->意图识别->embedding query->向量检索->切块->emdedding->rank->送给大模型->LLM归纳生成

变体3:在线查询:query->意图识别->大模型丰富问题->embedding query->向量检索->切块->emdedding->rank->送给大模型->LLM归纳生成

。。。

大家都在根据自己的实际情况在不断的调整rag的策略,上述的每一个环节都有大量的工作值得探索,比如切块、向量检索、rank等等,后面有机会逐步聊一下

RAG(检索增强)评测

今天主要聊一下RAG(大模型检索增强)的评测。

大家一直都在尝试用RAG来解决模型幻觉、数据实效性、数据保密性等等问题,但是RAG作为模型推理中间的一环,如何来评测RAG(检索增强)的有效性值得研究一下。

当然我们期望理论上模型足够强大可以自己从RAG结果中提取有效信息来推理,甚至模型不需要RAG会更好

RAG简单来说其实就是检索相关信息给到大模型,所以很直观的感受是,要评价RAG结果的有效性可以考虑传统检索或推荐系统中召回、排序等相关指标(召回率、精准率、MRR、NDCG等等)有关这些指标的原理大家自行了解一下,后面有机会也可以简单聊一下

要计算这些指标不可避免的需要知道,每次检索到的信息是否相关,以及相关的信息排序是否合理,这些都决定了最终给到大模型的信息是否更有意义,更能帮助到大模型推理

但是如何判断检索到的信息是否相关呢?embedding虽然提供了各种策略、算法,但是embedding后的结果并不一定就是相关的,向量化后可能因为各种原因导致原本不相关的两个text向量是接近的,所以才需要我们来评测。

目前了解到2种方式来做测评:

1、将query和查到的相关信息给到gpt4,让gpt4来评测;

2、人为打标数据,划定数据集及相关性,然后通过脚本对比

我们使用的第二种方式。我们的处理方式大体是这样:

1、首先将原始数据切块

2、然后选择各种场景下的用户提问

3、然后将原始切块进行标注,标记这些块中哪些和用户提问时相关的

4、实时query结果保存下来,然后和标注数据进行对比

5、计算RAG(检索增强)的召回率、精准率等

如何切块也是我们重点评测的一部分,通过数据标记,我们测试不同chunk size下各种指标来评估我们的RAG效果。

http://www.dtcms.com/a/38838.html

相关文章:

  • 流匹配(Flow Matching)教程
  • 基于Spring Boot的供应商管理系统设计与实现(LW+源码+讲解)
  • AI杂谈(二)
  • 通过Sidecar模式实现服务注册、服务发现和负载均衡的分布式系统架构
  • 二分查找(数值范围)--- koko吃香蕉
  • 【转:由Salesforce的元数据驱动引发的联想】
  • X64 TF位和Single-step单步调试的研究
  • 渗透第二次作业
  • spring结合mybatis多租户实现单库分表
  • 洛谷-新二叉树python
  • Flink SQL怎么用?
  • 深度学习模型可视化:通俗易懂的全面解读
  • 基础算法整理
  • C++20 三路比较运算符 `<=>` 与 `operator==() = default` 的深度剖析及实际应用
  • VUE向外暴露文件,并通过本地接口调用获取,前端自己生成接口获取public目录里面的文件
  • Linux进程控制
  • leetcode 73. 矩阵置零
  • 鸿蒙新版开发工具DevEco Studio不能新建模拟的解决方法
  • 两台互通的服务器使用Docker部署一主两从MySQL8.0.35
  • 【Qt】为程序增加闪退crash报告日志
  • Nginx面试宝典【刷题系列】
  • 广州无人机考试培训收费标准(附报名流程)
  • 【开源免费】基于SpringBoot+Vue.JS美食烹饪互动平台(JAVA毕业设计)
  • python 剪切音频
  • [特殊字符]️ ‌Selenium元素存在性判断的5种方法‌
  • 归纳总结一下Tensorflow、PaddlePaddle、Pytorch构建神经网络基本流程,以及使用NCNN推理的流程
  • 快速上手 Uniapp:从入门到精通的捷径
  • css 设置svg文字的对齐方式。右对齐
  • 五、Redis哨兵监控
  • Halcon 颜色分割算子、RGB和HSV之间的转换