一些优化RAG思路

news2024/9/20 18:53:39

什么是RAG

RAG 是预训练的 LLM 与外部(可搜索的)知识库的组合。在推理时,我们可以在此知识库中搜索相关的文本上下文,并将其添加到 LLM 的提示词中。然后,LLM 可以使用其上下文学习能力来利用这个添加的上下文并产生更真实/更扎实的输出。

RAG步骤
  1. 加载文件
  2. 读取文本
  3. 文本分割
  4. 文本向量化
  5. 问句向量化
  6. 在文本向量中匹配出与问句向量最相似的 top k 个
  7. 匹配出的文本作为上下文和问题一起添加到 prompt 中
  8. 提交给 LLM 生成回答

这种简单的方法有效,但构建高性能的 RAG 应用程序需要更多。以下是我们可以通过几种途径来完善我们的 RAG。

优化RAG
  1. 读取文本,额可以对文本做一些处理,用于 RAG 的数据可能来自不同格式的多个来源(例如 pdf、markdown 等),这可能会导致噪声(例如,徽标、图标、特殊符号和代码块)从而使 LLM 感到困惑。我们可以通过创建数据预处理(NLP)来解决这个问题。
  2. 文本切割:设置适当的块间重叠、多粒度文档块切分、基于语义的文档切分、文档块摘要。
  3. 在检索阶段使用 混合搜索:归根结底,RAG 的检索组件只是一个搜索引擎。因此,我们可以通过使用搜索中的想法来大幅改进检索。例如,我们可以执行词法和向量检索(即混合检索),以及通过重排模型重新排序以检索最相关的数据。
  4. 提示工程:优化模板增加提示词约束、提示词改写
  5. 数据收集:我们部署了 RAG 应用程之后序,我们就可以开始收集可用于改进应用程序的数据。例如,我们可以在具有相关文本块的输入查询对上微调检索模型,根据高质量输出微调 LLM。

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

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

相关文章

【CSS in Depth 2 精译_035】5.5 Grid 网格布局中的子网格布局(全新内容)

当前内容所在位置(可进入专栏查看其他译好的章节内容) 第一章 层叠、优先级与继承(已完结) 1.1 层叠1.2 继承1.3 特殊值1.4 简写属性1.5 CSS 渐进式增强技术1.6 本章小结 第二章 相对单位(已完结) 2.1 相对…

C++速通LeetCode中等第6题-找到字符串中所有字母异位词(滑动窗口最详细代码注释)

滑动窗口法&#xff1a; class Solution { public:vector<int> findAnagrams(string s, string p) {unordered_map<char,int> need,window;for(char c : p) need[c];int left 0,right 0;int valid 0;vector<int> res;//窗口数据更新while(right < s.s…

FDM3D打印系列——黑悟空打印

大家好&#xff0c;我是阿赵。   最近很火的黑神话悟空&#xff0c;阿赵我没有玩&#xff0c;原因是没时间。不过看着身边的同事都在玩&#xff0c;我也心痒难耐&#xff0c;所以我打印了一个悟空的模型&#xff0c;并且自己配了色。 打印这个悟空模型&#xff0c;过程是一波…

Telephony VOWIFI

1、VOWIFI框架 参考3GPP 23402文档, VOWIFI有如下相关架构设置。 1、S2a信任的WIFI热点 2、S2b非信任WIF热点 3、S2c直联核心WIF热点 目前使用比较多的为S2b非信任WIF热点。 2、EPDG建立过程 //Telephony Log IWLAN拨号 08-30 21:36:34.702857 1347 5131 D ConnectivityS…

【后端开发】JavaEE初阶——计算机是如何工作的???

前言&#xff1a; &#x1f31f;&#x1f31f;本期讲解计算机工作原理&#xff0c;希望能帮到屏幕前的你。 &#x1f308;上期博客在这里&#xff1a;【MySQL】MySQL中JDBC编程——MySQL驱动包安装——&#xff08;超详解&#xff09; &#x1f308;感兴趣的小伙伴看一看小编主…

深入理解ConcurrentHashMap

HashMap为什么线程不安全 put的不安全 由于多线程对HashMap进行put操作&#xff0c;调用了HashMap的putVal()&#xff0c;具体原因&#xff1a; 1、假设两个线程A、B都在进行put操作&#xff0c;并且hash函数计算出的插入下标是相同的&#xff1b; 当线程A执行完第六行由于时间…

基于milvus数据库的RAG-Demo

1.上传文本并将文本向量化 import os from django.conf import settings from langchain.document_loaders import TextLoader from langchain.text_splitter import RecursiveCharacterTextSplitter, CharacterTextSplitter from langchain.vectorstores import Chroma from l…

数据结构-2.7.单链表的查找与长度计算

注&#xff1a;本文只探讨"带头结点"的情况(查找思路类似循环找到第i-1 个结点的代码) 一.按位查找&#xff1a; 1.代码演示&#xff1a; 版本一&#xff1a; #include<stdio.h> #include<stdlib.h> ​ ​ //定义单链表结点类型 typedef struct LNo…

契约锁与您相约2024新疆数字经济创新大会暨新疆数字丝路博览会

9月20日&#xff0c;由新疆数字经济联合会主办&#xff0c;多家行业协会及企业共同承办的“2024(第一届)新疆数字经济创新发展大会暨新疆数字丝路博览会”在新疆国际会展中心盛大开幕&#xff0c;活动期间&#xff0c;契约锁作为电子签章行业领先的服务商携数字可信系列产品亮相…

自然语言处理-基于注意力机制的文本匹配

背景&#xff1a; 任务三&#xff1a;基于注意力机制的文本匹配 输入两个句子判断&#xff0c;判断它们之间的关系。参考ESIM&#xff08;可以只用LSTM&#xff0c;忽略Tree-LSTM&#xff09;&#xff0c;用双向的注意力机制实现。 参考 《神经网络与深度学习》 第7章 Reaso…

MT6765/MT6762(R/D/M)/MT6761(MT8766)安卓核心板参数比较_MTK联发科4G智能模块

联发科Helio P35 MT6765安卓核心板 MediaTek Helio P35 MT6765是智能手机的主流ARM SoC&#xff0c;于2018年末推出。它在两个集群中集成了8个ARM Cortex-A53内核&#xff08;big.LITTLE&#xff09;。四个性能内核的频率高达2.3GHz。集成显卡为PowerVR GE8320&#xff0c;频率…

统一网关--gateway(仅供自己参考)

1、网关的概念&#xff1a; 2、网关的功能&#xff1a; &#xff08;1&#xff09;&#xff1a;身份认证和权限校验 &#xff08;2&#xff09;&#xff1a;服务路由&#xff08;具体的业务路由到具体的服务&#xff09;&#xff0c;负载均衡&#xff08;多台服务的话&#xff…

【用Java学习数据结构系列】对象的比较(Priority Queue实现的前提)

看到这句话的时候证明&#xff1a;此刻你我都在努力 加油陌生人 个人主页&#xff1a;Gu Gu Study 专栏&#xff1a;用Java学习数据结构系列 喜欢的一句话&#xff1a; 常常会回顾努力的自己&#xff0c;所以要为自己的努力留下足迹 喜欢的话可以点个赞谢谢了。 作者&#xff…

鸿蒙OpenHarmony【轻量系统内核通信机制(消息队列)】子系统开发

消息队列 基本概念 消息队列又称队列&#xff0c;是一种任务间通信的机制。消息队列接收来自任务或中断的不固定长度消息&#xff0c;并根据不同的接口确定传递的消息是否存放在队列空间中。 任务能够从队列里面读取消息&#xff0c;当队列中的消息为空时&#xff0c;挂起读…

英飞凌 PSoC6 评估板 CAPSENSE 触摸滑条应用示例

PSoC™ 62 with CAPSENSE™ evaluation kit 开发板&#xff08;以下简称 PSoC 6 RTT 开发板&#xff09;是英飞凌&#xff08;Infineon&#xff09;联合 RT-Thread 发布一款面向物联网开发者的 32 位双核 MCU 开发套件&#xff0c;其默认内置 RT-Thread 物联网操作系统。本文主…

EasyExcel的基本使用——Java导入Excel数据

使用EasyExcel导入Excel数据有两种方式 无论哪种方式我们都需要建立Excel表格和Java对象的绑定 首先我们需要根据Excel表头定义一个对应的类 excel表示例&#xff1a; 对应的类&#xff1a; 使用ExcelProperty将excel列名和字段名绑定&#xff0c;括号里面填列名 package co…

【Node.js Vue】还在为选什么乐器发愁?乐器推荐系统帮你解决难题,基于用户行为分析的智能推荐,让你不再为音乐器材烦恼

&#x1f34a;作者&#xff1a;计算机毕设匠心工作室 &#x1f34a;简介&#xff1a;毕业后就一直专业从事计算机软件程序开发&#xff0c;至今也有8年工作经验。擅长Java、Python、微信小程序、安卓、大数据、PHP、.NET|C#、Golang等。 擅长&#xff1a;按照需求定制化开发项目…

家庭聚餐:用白酒传递亲情与温暖

在这个快节奏的社会里&#xff0c;家庭聚餐成为了一种难得的团聚时光。在这样的场合&#xff0c;一杯豪迈白酒&#xff08;HOMANLISM&#xff09;往往能够成为亲情的纽带&#xff0c;传递着温暖与爱意。今天&#xff0c;我们就来谈谈在家庭聚餐中&#xff0c;如何通过豪迈白酒来…

docker部署mybatis在线生成(网页版)

使用docker下载镜像 docker pull tanghc2020/gen启动命令 docker run --name gen --restartalways -p 6969:6969 -d tanghc2020/gen启动后页面 请求地址 http://localhost:6969/#/dashboard sql 脚本 CREATE DATABASE IF NOT EXISTS gen DEFAULT CHARACTER SET utf8 D…

TPDO触发条件如何满足?

在上一期中&#xff0c;我们了解到TPDO&#xff08;传输过程数据对象&#xff09;的传输类型有很多种&#xff1a;同步周期性传输、RTR&#xff08;远程传输请求&#xff09;以及异步制造商特定事件等。这些类型的触发条件主要分为三种&#xff1a;同步&#xff08;SYNC&#x…