解决RAG召回内容多、相似性高、区分度不够的问题

在做RAG应用时,经常会遇到召回内容多、相似性高、区分度不够的问题。特别是在一些规范建模标准化特别强的文档中,如数据中台建模是命名规范下,往往在相同的表名中,相差的一个字符就是完全不同的数据。如,1d、1m分别代码天粒度的数据和月粒度的数据。但在RAG场景就会导致召回无法区分。

一、改进检索策略

  1. 调整检索算法参数
    • 向量数据库相关参数:如果使用向量数据库进行检索,如 Milvus、Faiss 等,可以调整向量相似度度量的参数。例如,在使用余弦相似度作为度量标准时,可以适当提高相似度阈值。假设原本的阈值为 0.7,将其提高到 0.85 可能会减少召回的文档数量,并且使得召回的内容在语义上更接近查询需求。
    • 倒排索引相关参数:对于基于倒排索引的检索系统,如 Elasticsearch,可以调整词项频率 - 逆文档频率(TF - IDF)等参数。通过增加最小词频(minimum_term_frequency)或降低最大词频(maximum_term_frequency),能够过滤掉一些在文档中过于常见或过于罕见的词,从而减少相似文档的召回。
  2. 优化查询语句和关键词提取
    • 语义查询扩展:在查询语句方面,可以使用语义查询扩展技术。例如,利用词向量模型(如 Word2Vec、Bert 等)来找到与原始查询词在语义上相近的其他词汇,将这些词汇添加到查询语句中,使检索更加精准。比如,原始查询是 “人工智能在医疗领域的应用”,可以通过词向量模型找到 “机器学习”“深度学习” 等相关词汇,将查询扩展为 “人工智能、机器学习、深度学习在医疗领域的应用”。
    • 关键词提取优化:采用更先进的关键词提取算法,如 TextRank 或基于 Transformer 的关键词提取模型。这些算法能够更好地识别文本中的关键概念,避免提取过多的次要或相似的关键词。例如,在一篇关于多个医疗技术的文档中,精准地提取出 “基因治疗”“免疫疗法” 等关键技术相关的关键词,而不是提取大量的通用医疗词汇。
  3. 采用多模态检索(如果适用)
    • 结合图像、音频等模态信息:如果数据包含多种模态,如文档同时关联有相关的图像、音频等,可以将这些模态的信息也纳入检索范围。例如,在一个医学教育 RAG 系统中,除了文本内容,还可以利用医学图像(如 X 光片、病理切片图)的特征进行检索。通过将文本检索和图像检索相结合,利用不同模态之间的互补性,提高检索的区分度。
    • 融合多模态特征向量:对于支持多模态的向量数据库,可以将文本、图像、音频等不同模态的特征向量进行融合。例如,使用深度神经网络将文本向量和图像向量融合为一个统一的多模态向量,在检索时使用这个融合后的向量来计算相似度,从而更全面地衡量内容与查询之间的相关性。

二、对召回内容进行后处理

  1. 内容聚类和排序
    • 聚类算法应用:使用聚类算法(如 K - Means、DBSCAN 等)对召回的内容进行聚类。根据内容的语义相似度将它们分成不同的组,然后在每个组中选择最具代表性的内容。例如,在召回了大量关于不同疾病治疗方法的文档后,通过聚类将其分为心脏病治疗、癌症治疗等不同的类别,然后从每个类别中挑选出最典型的文档。
    • 排序策略优化:除了按照传统的相关性得分进行排序外,还可以考虑其他因素。例如,加入内容的新颖性、权威性等维度的考量。对于一些新闻资讯类的 RAG 应用,可以优先展示最新发布的内容;对于学术文献检索,可以优先考虑来自高影响力期刊的文献。
  2. 内容摘要和关键信息提取
    • 自动摘要生成:采用自动摘要技术,如抽取式摘要(通过提取文本中的关键句子)或生成式摘要(利用生成模型生成摘要)来生成召回内容的摘要。这有助于快速展示每个召回文档的核心内容,方便用户判断其与自己需求的匹配度。例如,使用 BertSum 等模型为每篇召回的医学研究论文生成摘要,用户可以通过摘要快速了解论文的主要发现。
    • 关键信息提取和展示:提取召回内容中的关键信息,如人物、事件、方法、结论等,并以结构化的方式展示。在一个科技文献 RAG 系统中,提取文献中的实验方法、研究结论等关键信息,以表格或列表的形式呈现给用户,这样可以更直观地比较不同召回内容之间的差异。

三、数据预处理和索引构建阶段的优化

  1. 数据清洗和去重
    • 文本预处理:在构建索引之前,对原始数据进行清洗,去除噪声信息,如多余的空格、特殊符号、停用词等。同时,识别并合并重复的内容。例如,在一个新闻数据库中,可能会存在多篇内容几乎相同的新闻报道(可能是转载等情况),可以通过文本相似度计算来识别并删除重复的部分。
    • 数据分块和划分:将长文本数据进行合理的分块和划分。例如,对于长篇的学术著作,可以按照章节或主题将其划分为较小的块。这样在检索时,可以更精准地召回与查询相关的部分,而不是召回整个长篇内容,从而减少相似内容的整体召回量。
  2. 构建层次化索引和分类体系
    • 层次化索引:建立层次化的索引结构,例如,在一个企业知识管理 RAG 系统中,按照部门、项目、主题等层次构建索引。当进行检索时,可以先在高层级的索引中筛选出相关的类别,然后再在低层级的索引中查找具体的内容,这样可以提高检索的效率和区分度。
    • 分类体系建设:构建一个完善的分类体系,将数据按照不同的领域、主题、用途等进行分类。在检索时,根据查询所属的类别,优先在相应的分类中进行检索。例如,在一个图书馆文献 RAG 系统中,将图书文献分为自然科学、社会科学、人文艺术等大类,每个大类下再细分多个小类,通过这种分类体系来引导检索,减少无关或相似内容的召回。

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

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

相关文章

王道考研编程题总结

我还在完善中,边复习边完善(这个只是根据我自身总结的) 一、 线性表 1. 结构体 #define MaxSize 40 typedef struct{ElemType data[MaxSize];int length; }SqList 2. 编程题 1. 删除最小值 题意 :从顺序表中删除…

Vue3技术开发,使用纯CSS3动手制作一个3D环绕的相册展示效果,支持传入任意图片.3D轮播相册的组件

主要讲述封装一个3D轮播相册的组件&#xff0c;效果图如下&#xff0c;仅仅传入一个图片的数组即可&#xff0c;效果如下&#xff1a; 使用Vue3技术开发&#xff0c;支持传入任意张数的图片。 使用方法 <template><Swiper :list"list" /> </templat…

本地运行打包好的dist

首先输入打包命令 每个人设置不一样 一般人 是npm run build如果不知道可以去package.json里去看。 打包好文件如下 命令行输入 :npm i -g http-server 进入到dist目录下输入 命令cmd 输入 http-server 成功

通过华为鲲鹏认证的软件产品如何助力信创产业

软件通过华为鲲鹏认证与信创产业有着密切的联系。鲲鹏认证是华为推动信创产业发展的一项重要举措&#xff0c;通过该认证&#xff0c;软件可以在华为的生态系统中实现更好的兼容性和性能优化&#xff0c;从而推动信创产业的全面发展和国产化替代。 鲲鹏认证的定义和重要性 鲲…

RabbitMQ介绍及安装

文章目录 一. MQ二. RabbitMQ三. RabbitMQ作用四. MQ产品对比五. 安装RabbitMQ1. 安装erlang2. 安装rabbitMQ3. 安装RabbitMQ管理界⾯4. 启动服务5. 访问界面6. 添加管理员用户7. 重新登录 一. MQ MQ( Message queue ), 从字⾯意思上看, 本质是个队列, FIFO 先⼊先出&#xff…

Vue生成类似于打卡页面

数据表格 <el-table :data"tableData" border height"calc(100vh - 240px)" :cell-style"cellFun"><el-table-column label"姓名" show-overflow-tooltip prop"name" align"center"/><el-table-co…

vscode上传本地文件到服务器

vscode上传本地文件到服务器 首先下载插件SFTP&#xff0c;我们通过ftp进行文件传输 VScode打开要传输的文件 使用快捷键 ctrlshiftP 打开搜索窗口&#xff0c;搜索SFTP 点击之后vscode文件夹下会生成对应json文件 我们编辑json信息根据远程的服务器情况填写&#xff0c;比如…

趣味数学 2.3.7 | 完全免费,无注册登录,简约纯净

趣味数学是一款完全免费的数学学习软件&#xff0c;支持安卓系统。它无需登录注册&#xff0c;界面简约纯净&#xff0c;分类详细&#xff0c;涵盖趣味数学、数学初练、应用计算、数字推理、图形推理、数字2048、题目练习和数学知识等多个分类。每个分类包含丰富的题目和关卡&a…

JavaScript 快速上手

目录 一. JavaScript 基本概念 二. JavaScript 基本语法 1. 三种引入方式 (1) 行内样式 (2) 内部样式 (3) 外部样式 2. 基础语法 (1) 变量 (2) 数据类型 (3) 运算符 3. JS 对象 (1) 数组 <1> 创建数组 <2> 数组操作 (2) 函数 <1> 普通函数 &…

php基础:文件处理2

1.文件属性 当我们在程序中操作文件时&#xff0c;可能会使用到文件的一些常见属性&#xff0c;比如文件的大小、类型、修改时间、访问时间以及权限等等。PHP 中提供了非常全面的用来获取这些属性的内置函数&#xff0c;如下表所示。 2.目录操作 新建目录&#xff1a;mkdir(路…

架构设计读后——微服务

1 微服务历史 2005年&#xff1a;Dr. Peter Rodgers提出"Micro-Web-Services"概念2011年&#xff1a;一个软件架构工作组使用"microservice"来描述一中架构模式2012年&#xff1b;这个工作组正式使用"microservice"来代表这个架构2012年&#x…

Socket编程TCP

【Linux】TCP编程 实验&#xff1a;通过TCP通信—在客户端输入要执行的指令&#xff0c;接收执行结果&#xff0c;另服务端接收指令并执行&#xff0c;向客户端发送执行结果 //主函数 #include<iostream> #include<string> #include"log.hpp" #include…

QNX的PPS发布/订阅模型

参考资料: QNX官方文档 以下摘自官网介绍: TheQNX NeutrinoPersistent Publish/Subscribe (PPS) service is a small, extensible publish/subscribe service that offers persistence across reboots. It’s designed to provide a simple and easy-to-use solution for b…

(二)FT2232HL调试器的驱动安装

1、FT2232HL调试器 FT2232HL调试器淘宝链接&#xff1a; http://e.tb.cn/h.TZH7byCQ1jwlqhy?tkdZo03JTjtwL ​ 2、软件下载 下载zadig-2.9.exe&#xff08;免安装&#xff09; 链接&#xff1a;https://www.filecroco.com/download-zadig/download/ ​ ​ 3、驱动安装 1…

远程debug

这里写自定义目录标题 一、首先配置idea二、配置jvm1、将刚才idea生成的jvm指令复制下来&#xff0c;就是如下内容&#xff08;注意要从你的idea中复制&#xff09;2、在粘贴之前&#xff0c;要拼接上java-jar命令&#xff0c;还有servery,suspendy命令&#xff0c;最后拼接项目…

Html笔记():蜘蛛纸牌之卡片设计

效果 代码 <!DOCTYPE html> <html><head><style>body{display: flex;justify-content: center;align-items: center;height: 100vh;background-color: #2b2b2b;}.card{/*设置卡牌的外观*/width: 150px;height: 200px;background-color: #00ffcc;borde…

深入浅出:PHP 文件操作

文章目录 引言文件的基本操作打开文件读取文件逐行读取读取整个文件 写入文件追加写入覆盖写入 关闭文件 文件和目录的管理检查文件或目录是否存在创建和删除文件创建和删除目录复制和移动文件 处理文件权限设置文件权限获取文件权限 处理文件属性获取文件大小获取文件最后修改…

docker-compose安装rocketmq

1. 创建RocketMq文件目录 mkdir rocketmq mkdir -p rocketmq/brokerconf rocketmq/logs rocketmq/store2.创建broker.conf配置文件 vim brokerconf/broker.conf# 集群名称 brokerClusterName DefaultCluster # broker 名字 brokerName broker-a # 0表示master&#xff0c…

【二分查找】力扣 875. 爱吃香蕉的珂珂

一、题目 二、思路 速度 k&#xff08;单位&#xff1a;根/小时&#xff09;是存在一个取值范围的。 速度越大肯定在规定的时间之内一定会吃完全部的香蕉&#xff0c;但也是可以确定出一个上界的。由于只要保证一小时之内&#xff0c;可以吃完香蕉数目最多的那一堆的香蕉&…

计算机网络-GRE基础实验二

前面我们学习了GRE隧道的建立以及通过静态路由指向的方式使得双方能够网络互联&#xff0c;但是通过静态路由可能比较麻烦&#xff0c;GRE支持组播、单播、广播因此可以在GRE隧道中运行动态路由协议使得网络配置更加灵活。 通过前面的动态路由协议的学习我们知道动态路由协议都…