RAG-202502

目录

  • RAG场景的坑
    • 知识等级金字塔
  • 初级RAG存在的问题
  • 高级RAG
    • 索前优化
    • 检索优化
    • 检索后优化
  • 优化经验总结
  • 参考

RAG场景的坑

  1. 晦涩的专业术语

误区:在专业领域中。许多文献和资料中充满了专业术语,这些术语对于非专业人士(甚至是大模型)来说都是难以理解的。

风险:当知识库内容包含大量专业术语、且文献错综复杂,对术语没有做出很好的解释和关联时,模型可能就会“倒在”第一步。因为它根本无法很好地理解这些术语,更遑论最终输出正确的答案了。

  1. 信息提取困难

误区:有时候,文献量太大,RAG系统在处理大量文本数据时,它可能无法有效地从中抽取关键信息。

风险:如果模型无法从复杂的文献中提取出核心要点,那么生成的答案可能会缺乏重点,或者包含大量无关紧要的细节,例如,在法律文献中,关键条款往往隐藏在大量法律条文中,模型在检索时可能会“忽略”,或者一股脑地提取。导致回答要么缺漏重点,要么又多又杂、找不到重点。

  1. 自相矛盾/不一致的信息

误区:有时候文献过多,输入到RAG系统中的数据可能包含不准确或错误的信息。比如,一个医疗的RAG系统,它的目的为医生和患者在进行询问时,提供准确的药品信息。但是,这个系统在知识库的建立时,收集了多种来源的药品说明书、临床试验报告以及最新的医学研究论文。就极有可能出现以下情况:

说明书A(来自制造商X,2020年发布):“阿莫西林适用于治疗多种细菌感染,如肺炎、咽炎和皮肤感染。,成人每日剂量为500毫克,每日三次。”
最新研究论文C(2023年发表):“最新的临床研究表明,阿莫西林对某些类型的细菌感染不再有效,因为它可能导致耐药性。”

风险:生成答案时,可能会出现自相矛盾的回答,或者是每次的回答都不一致,容易误导用户。

  1. 过时内容

误区:过时内容是指知识库中的某些信息可能已经不再适用当前的情况。

风险:如果RAG系统提供了过时的信息,那么这些信息可能会导致用户做出基于过时数据的决策。例如,在技术快速发展的领域,如信息技术或生物医药,几年前的研究成果可能已经不再适用。

  1. 无关且多余的信息

误区:无关且多余的信息是指知识库中包含了一些与当前问题无关或多余的内容。

风险:这些信息可能会干扰模型的判断,导致生成的答案中包含不必要的细节,从而使答案显得冗长而不切题。例如,在用户询问某一产品的具体规格时,系统却给出了大量与产品无关的市场营销材料。

  1. 与“世界(知识)为敌”

误区:这种经常出现在一些“软”知识上,比如公司管理、领导力咨询等等。在这种知识领域,并没有唯一的、正确的答案,而是不同的“学派”会有不同的切入点和理论体系。这样,同一个概念,在私有知识库和世界知识的说法不同,就可能产出冲突。

风险:模型回答的输出不稳定。面对“外挂”给到的知识点和自己训练时就有的数据,大模型容易陷入“本能迁移”,更倾向于用自己训练时的数据做回答。

知识等级金字塔

在这里插入图片描述并不是所有的知识都是平等的。你需要评估哪些知识“有价值”,而价值的私有知识,才可以称之为“知识资产”,并放入知识库之中。

那什么是有价值的知识资产?尽管各领域的知识内容不尽相同,但在实践中,我们可以遵循金字塔梯度的思路:

  1. 顶层,核心资产:这应该是公司私有化/专业领域中最为核心、最关键的知识内容。也是这个私有知识库最想给用户传递、最有竞争力的知识体系。例如,一家咨询公司赖以成名的核心方法论,就是这家公司最核心的知识资产。在RAG的实践中,一旦涉及到这类范围的知识理解和输出,必须要求准确、全面、深入,能够体现权威性。
  2. 次层,独家资产:重要等级比关键知识略低,但同样是私有知识库中的独特的资产。这些知识也许会和世界知识有重合,但在私有知识库中,必须按照私有知识库中的要求回答。这类知识的一种常见场景就是公司的规章制度/文化内容/绩效规则等,世界知识库也许有大量类似的内容,但是在公司中必须要按照公司的要求进行。因此,对这类知识的解读也同样要求准确,且必须以私有知识库为准,不得混淆世界知识。
  3. 第三层,普通资产:在实践中,经常会出现一种情况:“私有”即“世界”。说白了,不管是多私有的知识,它的源头必然能追溯到人类公有的知识体系中。所以,私有知识库免不了有一些“其实和世界知识差不多,但表述、范围上略有差异”的内容。这类其实是最容易和世界知识发生混淆,造成输出不准确/冗余的“元凶”。因此,这类知识,我们建议不必“敝帚自珍”,在建立知识库时大刀阔斧地去除即可。
  4. 第四层,不良资产:包括自相矛盾、过时、无用的信息,这些不良资产,一定要尽早剥离。在进行知识库的建设时,就不能存在。

初级RAG存在的问题

主要在三个方面面临挑战:检索质量低、生成质量差和增强过程难。

  1. 检索质量低:首先使用长文本做索引,不能很好的突出主题,建立索引时,核心知识湮没在大量无用的信息中,其次,使用用户原始query做检索,不能很好的突出其核心诉求,这就导致用户query和知识索引不能很好的匹配,检索质量比较差。
  2. 生成质量差:未检索到知识或检索知识质量差时,大模型自主回答私域问题时,容易产生幻觉,或回答内容比较空洞,无法直接使用,知识库失去了本身的意义。
  3. 增强过程难:将检索到的信息与不同任务整合可能具有挑战性,有时会导致输出不连贯或不一致。此外,还有一个担忧是生成模型可能过度依赖增强信息,导致输出仅仅是复述检索内容而没有添加有洞察力或综合信息。

高级RAG

在这里插入图片描述

索前优化

检索前优化集中在知识切分、索引方式和query改写的优化上。
知识切分主要把较长的文本按照语义内聚性的分析切成小块,解决核心知识湮没以及语义截断的问题。
索引方式优化技术通过优化数据索引组织方式提升检索效果。比如去除无效数据或插入某些数据来提高索引覆盖程度,从而达到与用户问题的高匹配度问题。
query改写主要需要理解用户想表达的意图,把用户原始的问题转换成适合知识库检索的问题,从而提高检索的精准程度。

检索优化

检索阶段的目标是召回知识库中最相关知识。通常,检索基于向量搜索,它计算查询与索引数据之间的语义相似性。因此,大多数检索优化技术都围绕嵌入模型展开:

  1. 微调嵌入模型,将嵌入模型定制为特定领域的上下文,特别是对于术语不断演化或罕见的领域。例如,BAAI/bge是一个高性能的嵌入模型,可以进行微调。
  2. 动态嵌入根据单词的上下文进行调整,而静态嵌入则为每个单词使用单一向量。例如,OpenAI的embeddings-ada-02是一个复杂的动态嵌入模型,可以捕获上下文理解。
  3. 除了向量搜索之外,还有其他检索技术,例如混合搜索,通常是指将向量搜索与基于关键字的搜索相结合的概念。如果您的检索需要精确的关键字匹配,则此检索技术非常有益。

检索后优化

对检索到的上下文进行额外处理可以帮助解决一些问题,例如超出上下文窗口限制或引入噪声,从而阻碍对关键信息的关注。在RAG调查中总结的检索后优化技术包括:
提示压缩:通过删除无关内容并突出重要上下文,减少整体提示长度。
重新排序:使用机器学习模型重新计算检索到的上下文的相关性得分。

优化经验总结

RAG想做出来比较容易,但想做好还是比较难的,每个步骤都有可能对最终效果产生影响。

  1. 我们在RAG中也做了大量的探索,比如: 知识切分方面,做了固定字符切分的效果验证,分析索引噪音点,利用大模型做了大量的降噪处理;
  2. 在query改写方面,利用大模型做了更加明确的意图抽取,并对用户的query进行降噪的探索;
  3. 在数据召回方面,embedding模型基于bge、voyage和cohere做了大量的测评,探索向量+分词的召回策略;
  4. 在后置处理优化上,做了知识的去重以及rerank的探索等。

RAG的发展会越来越迅速,只要知识依赖和知识更新的问题没有得到解决,RAG就有其存在的价值和一席之地。

参考

  1. 阿里云开发者《一文详谈RAG优化方案与实践》
  2. RAG实践篇(一):知识资产的“梯度”
    【RAG的6个坑和知识等级分类】
    https://www.woshipm.com/aigc/6130455.html

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

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

相关文章

CDN与群联云防护的技术差异在哪?

CDN(内容分发网络)与群联云防护是两种常用于提升网站性能和安全的解决方案,但两者的核心目标和技术实现存在显著差异。本文将从防御机制、技术架构、适用场景和代码实现等方面详细对比两者的区别,并提供可直接运行的代码示例。 一…

STM32-智能小车项目

项目框图 ST-link接线 实物图: 正面: 反面: 相关内容 使用L9110S电机模块 电机驱动模块L9110S详解 | 良许嵌入式 测速模块 语音模块SU-03T 网站:智能公元/AI产品零代码平台 一、让小车动起来 新建文件夹智能小车项目 在里面…

【Linux】vim 设置

【Linux】vim 设置 零、起因 刚学Linux,有时候会重装Linux系统,然后默认的vi不太好用,需要进行一些设置,本文简述如何配置一个好用的vim。 壹、软件安装 sudo apt-get install vim贰、配置路径 对所有用户生效: …

【Python爬虫(90)】以Python爬虫为眼,洞察金融科技监管风云

【Python爬虫】专栏简介:本专栏是 Python 爬虫领域的集大成之作,共 100 章节。从 Python 基础语法、爬虫入门知识讲起,深入探讨反爬虫、多线程、分布式等进阶技术。以大量实例为支撑,覆盖网页、图片、音频等各类数据爬取&#xff…

【java进阶】java多态深入探讨

前言 在Java的编程宇宙中,多态是极为关键的概念,它宛如一条灵动的纽带,串联起面向对象编程的诸多特性,赋予程序宛如生命般的动态活力与高度灵活性。透彻理解多态,不仅是提升代码质量的关键,更是开启高效编程大门的钥匙。 一、多态的定义与本质 多态,从概念层面来讲,…

17164字符迁移

17164字符迁移 ⭐️难度:中等 📖 📚 import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner new Scanner(System.in);int n scanner.nextInt();int q scanner.nextInt();scanner.next…

强化学习概览

强化学习的目标 智能体(Agent)通过与环境(Environment)交互,学习最大化累积奖励(Cumulative Reward)​的策略。 数学抽象 马尔科夫决策过程(MDP) 收益 由于马尔科夫决…

IDEA关闭SpringBoot程序后仍然占用端口的排查与解决

IDEA关闭SpringBoot程序后仍然占用端口的排查与解决 问题描述 在使用 IntelliJ IDEA 开发 Spring Boot 应用时,有时即使关闭了应用,程序仍然占用端口(例如:4001 端口)。这会导致重新启动应用时出现端口被占用的错误&a…

QT:QPen、QBrush、与图形抗锯齿的关联

QPen QPen 是 Qt 框架中用于定义绘图时使用的画笔属性的类。在使用 QPainter 进行 2D 绘图时,QPen 可以控制线条的外观,比如线条的颜色、宽度、样式(如实线、虚线等)、端点样式(如方形端点、圆形端点等)和…

论文笔记(七十二)Reward Centering(三)

Reward Centering(三) 文章概括摘要3 基于值的奖励中心化4 案例研究: 以奖励为中心的 Q-learning5 讨论、局限性与未来工作致谢 文章概括 引用: article{naik2024reward,title{Reward Centering},author{Naik, Abhishek and Wan…

单例模式——c++

一个类,只能有1个对象 (对象在堆空间) 再次创建该对象,直接引用之前的对象 so构造函数不能随意调用 so构造函数私有 so对象不能构造 如何调用私有化的构造函数: 公开接口调用构造函数 调用构造函数:singleTon instance; 但…

ReentrantLock 底层实现

一、核心概念 1 - CAS CAS(Compare-And-Swap,比较并交换)操作是一种无锁的原子操作,它在多线程环境下能够保证线程安全,主要是通过硬件级别的原子性以及乐观锁的思想来实现的。以下详细介绍 CAS 操作保证线程安全的原…

NLP学习记录十:多头注意力

一、单头注意力 单头注意力的大致流程如下: ① 查询编码向量、键编码向量和值编码向量分别经过自己的全连接层(Wq、Wk、Wv)后得到查询Q、键K和值V; ② 查询Q和键K经过注意力评分函数(如:缩放点积运算&am…

算法-二叉树篇08-完全二叉树的节点个数

完全二叉树的节点个数 力扣题目链接 题目描述 给你一棵 完全二叉树 的根节点 root ,求出该树的节点个数。 完全二叉树 的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下…

【原创工具】同文件夹PDF文件合并 By怜渠客

【原创工具】同文件夹PDF文件合并 By怜渠客 原贴:可批量合并多个文件夹内的pdf工具 - 吾爱破解 - 52pojie.cn 他这个存在一些问题,并非是软件内自主实现的PDF合并,而是调用的pdftk这一工具,但楼主并没有提供pdftk,而…

微软云和金山云和k8有什么区别

Kubernetes(K8s)和微软云(Microsoft Cloud)是两种不同的技术,分别用于不同的目的。Kubernetes是一个开源的容器编排系统,用于自动化部署、扩展和管理容器化应用程序,而微软云是一个提供多种云服…

libGL.so.1: cannot open shared object file: No such file or directory-linux022

in <module> from PyQt5.QtGui import QPixmap, QFont, QIcon ImportError: libGL.so.1: cannot open shared object file: No such file or directory 这个错误信息表示XXXX 在启动时遇到问题&#xff0c;缺少 libGL.so.1 文件。libGL.so.1 是与 OpenGL 图形库相关的共…

渗透测试【seacms V9】

搭建seacms环境 我选择在虚拟机中用宝塔搭建环境 将在官网选择的下载下来的文件解压后拖入宝塔面板的文件中 创建网站 添加站点 搭建完成seacmsV9 找到一个报错口 代码分析 <?php set_time_limit(0); error_reporting(0); $verMsg V6.x UTF8; $s_lang utf-8; $dfDbn…

论文阅读笔记:Continual Forgetting for Pre-trained Vision Models

论文阅读笔记&#xff1a;Continual Forgetting for Pre-trained Vision Models 1 背景2 创新点3 方法4 模块4.1 问题设置4.2 LoRA4.3 概述4.4 GS-LoRA4.5 损失函数 5 效果6 结论 1 背景 出于隐私和安全考虑&#xff0c;如今从预先训练的视觉模型中删除不需要的信息的需求越来…

车载DoIP诊断框架 --- 连接 DoIP ECU/车辆的故障排除

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 简单,单纯,喜欢独处,独来独往,不易合同频过着接地气的生活,除了生存温饱问题之外,没有什么过多的欲望,表面看起来很高冷,内心热情,如果你身…