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

Prompt-RAG:在特定领域中应用的革新性无需向量嵌入的RAG技术

论文地址:https://arxiv.org/ftp/arxiv/papers/2401/2401.11246.pdf

原文地址:https://cobusgreyling.medium.com/prompt-rag-98288fb38190

2024 年 3 月 21 日

虽然 Prompt-RAG 确实有其局限性,但在特定情况下它可以有效地替代传统向量嵌入 RAG 方法。

介绍

Prompt-RAG 与 RAG 类似,提供矢量数据库和无嵌入策略,以增强特定领域应用程序的大型语言模型 (LLM)。

与 RAG 不同,RAG 需要数据分块和向量嵌入来进行语义搜索和检索,Prompt-RAG 可以无缝运行,无需此类过程。

RAG

检索增强生成 (RAG) 将生成能力与信息检索技术无缝融合。

RAG 通过将大型语言模型 (LLM) 的稳健性与实时和上下文信息相结合,战略性地解决了生成模型的固有局限性。

结果是LLM生成的响应表现出自然和类人的品质,同时也是最新的、精确的,并且与所提供的查询在上下文上保持一致。

传统上,RAG 首先将输入查询转换为向量嵌入。

然后利用这些嵌入从矢量化数据库中检索相关数据。随后,RAG 的生成组件利用检索到的外部数据来制作上下文相关的响应。

在此过程中,嵌入模型生成模型都发挥着至关重要的作用,显着影响RAG的有效性并直接影响检索过程。

提示 RAG 步骤

Prompt-RAG 包含三个步骤:

  1. 预处理
  2. 标题选择
  3. 检索增强生成

来源

预处理

在初始阶段,根据文档创建目录 (ToC)至关重要。

这些文档与 Prompt-RAG 旨在解决的特定领域有着错综复杂的联系。

理想情况下,文档作者应该已经准备好目录。

但是,如果没有,可以手动制作。或者,可以部署大型语言模型 (LLM) 来生成 ToC,特别是在明确定义文档结构的情况下。

LLM 的上下文窗口大小显着影响目录和检索到的文档部分的大小。

为了优化标记大小,可以通过消除页眉、页脚、页码等元素来格式化文档。

这种格式可确保目录和检索部分中文档内容的简化和简洁表示。

标题选择

提示包括用户查询以及目录 (ToC),然后将其提供给大型语言模型 (LLM)。

LLM 旨在识别目录中与查询最相关的标题。

在某些情况下,可以选择多个标题,并且为了进一步细化选择,可以对文本进行总结。此摘要过程有助于缩小选项范围,确保所选标题与用户查询最相关。

可以根据预算和用于答案生成的生成模型的上下文窗口大小提前在提示中设置所选标题的数量。

一个重要的元素是优化提示以实现准确的 ToC 检索和令牌使用效率。

提示词注入

下一步涉及检索与所选标题相对应的文档部分,然后在推理过程中将其作为上下文引用注入到提示中。

注入到提示中的参考文本的大小必须小于 LLM 的上下文窗口大小,这一点至关重要。

为了确保符合此要求,可以采用大型语言模型 (LLM) 来总结、截断或以其他方式修剪检索到的“块”。

此过程对于调整参考文本以适应上下文窗口大小的约束并最小化标记使用是必要的,从而优化效率。

如果由于查询是问候语或随意对话而导致所选标题缺失,则不带参考部分的替代提示将传递到基于 GPT-3.5-turbo 的模型,以减少令牌使用并节省费用。

生成答案的提示如下所示:

You are a chatbot based on a book called {Book Name}. Here is a record of previous conversations:{history}Reference: {context}Question: {question}Use the reference to answer the question.The reference above is only fractions of '<>'.Be informative, gentle, and formal.If you can't answer the question with the reference, just say like 
'I couldn't find the right answer this time'.Answer in {Language of Choice}:

在提示模板下方,没有选择标题以供随意查询...

You are a chatbot based on a book called {Book Name}. Here is a record of previous conversation for your smooth chats.:{history}Question: {question}Answer the question.Be informative, gentle, and formal. 
Answer in {Language of Choice}:”

综上所述

即使 Prompt-RAG 没有独立使用,Prompt-RAG 研究的重要性也是不可否认的。在某些情况下,Prompt-RAG 可以充当更大的实施框架中的组件。

通过创新方法优化和利用即时工程与围绕应用程序构建更复杂的数据管理框架之间存在着永久的平衡。通常,随着实现的使用和复杂性的扩展,后一种方法往往会占主导地位。

然而,必须承认 Prompt-RAG 需要一个应用程序框架来监督数据流、验证输入和输出以及进行必要的数据操作。

传统RAG的缺点

  1. 优化文档块大小和管理重叠可能是一个挑战。
  2. 随着数据变化更新块和嵌入以保持相关性。
  3. 未针对少数语言实现进行优化
  4. 运行嵌入的额外成本
  5. 对于较小的实现来说很麻烦
  6. 对技术要求更高

传统 RAG 与 Prompt-RAG 相比的优势

  1. 扩展性良好
  2. 更多以数据为中心的方法
  3. 批量数据发现和数据开发对于企业实施仍然很重要。
  4. 一般来说,语义聚类是数据发现的一个重要方面,也是实施 RAG 的良好第一步。

Prompt-RAG 优点

  1. 非常适合规模较小、技术含量较低的实现和少数语言。
  2. 非常适合特定需求和实施
  3. 对于聊天机器人,某些意图可以路由到 Prompt-RAG 实现
  4. 简化
  5. 可以作为全面 RAG 实施的首次尝试
  6. 非梯度方法
  7. 可检查性和可观察性
  8. 旨在优化 Prompt-RAG 的数据发现和数据设计工具可以增加显着的价值。

Prompt-RAG 缺点

  1. 还是需要数​​据设计。
  2. 上下文窗口大小是一个障碍。
  3. Tokens使用量和成本会更高;这需要与嵌入模型tokens成本进行比较。
  4. 扩展和引入复杂性需要一个技术框架。
  5. 取决于 LLM 推理延迟和令牌使用成本。
  6. 需要创建内容结构。该研究主要集中于已有目录的文档。

相关文章:

Prompt-RAG:在特定领域中应用的革新性无需向量嵌入的RAG技术

论文地址&#xff1a;https://arxiv.org/ftp/arxiv/papers/2401/2401.11246.pdf 原文地址&#xff1a;https://cobusgreyling.medium.com/prompt-rag-98288fb38190 2024 年 3 月 21 日 虽然 Prompt-RAG 确实有其局限性&#xff0c;但在特定情况下它可以有效地替代传统向量嵌入 …...

线性代数 - 应该学啥 以及哪些可以交给计算机

AI很热&#xff0c;所以小伙伴们不免要温故知新旧时噩梦 - 线代。 &#xff08;十几年前&#xff0c;还有一个逼着大家梦回课堂的风口&#xff0c;图形学。&#xff09; 这个真的不是什么美好的回忆&#xff0c;且不说老师的口音&#xff0c;也不说教材的云山雾绕&#xff0c;单…...

力扣面试150 Pow(x, n) 快速幂 负指数

Problem: 50. Pow(x, n) 解题方法 &#x1f468;‍&#x1f3eb; 参考题解 复杂度 时间复杂度: O ( l o g 2 n ) O(log_{2}n) O(log2​n) 空间复杂度: O ( 1 ) O(1) O(1) Code class Solution {public double myPow(double x, int n){if (x 0.0f)return 0.0d;long b…...

连接navicat报错2059 解决办法

这里写自定义目录标题 连接navicat报错2059 解决办法 连接navicat报错2059 解决办法 打开终端工具输入 mysql -hlocalhost -uroot -p回车&#xff08;enter&#xff09;&#xff0c;输入密码后进入 mysql 。&#xff08;PS&#xff1a; -h 后面是数据库地址&#xff0c; -u 后…...

Unity-UGUI系统

UGUI是什么 UGUI是Unity引擎内自带的UI系统官方称之为:Unity Ul 是目前Unity商业游戏开发中使用最广泛的UI系统开发解决方案 它是基于Unity游戏对象的UI系统&#xff0c;只能用来做游戏UI功能 不能用于开发Unity编辑器中内置的用户界面 六大基础组件 概述 Canvas EventS…...

配置AC和AP上报KPI指标信息实验

配置AC和AP上报KPI指标信息示例 组网图形 图1 AP直接上报KPI指标 图2 AP通过AC透传上报KPI指标 业务需求组网需求数据规划配置思路配置注意事项操作步骤配置文件 业务需求 在云管理的ACFIT AP组网中&#xff0c;通过WMI上报机制&#xff0c;将AC和AP的KPI指标信息上报到iMast…...

深度学习Trick

Vscode查看文件目录 cmdshiftp选择->查看&#xff1a;将焦点置于辅助侧栏 View: Focus into Secondary Side Bar把主边栏的大纲拖入 快捷查看卷积过程&#xff0c;利用 torchinfo 在 model 下打断点F5 运行调试&#xff0c;F10 运行下一步在调试控制台输入from torchinfo…...

c++顺序表(连续插入删除)

Description 建立顺序表的类&#xff0c;属性包括&#xff1a;数组、实际长度、最大长度&#xff08;设定为1000&#xff09; 该类具有以下成员函数&#xff1a; 构造函数&#xff1a;实现顺序表的初始化。 插入多个数据的multiinsert(int i, int n, int item[])函数&#x…...

[综述笔记]A Survey on Deep Learning for Neuroimaging-Based Brain Disorder Analysis

论文网址&#xff1a;Frontiers | A Survey on Deep Learning for Neuroimaging-Based Brain Disorder Analysis (frontiersin.org) 英文是纯手打的&#xff01;论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误&#xff0c;若有发现欢迎评论…...

【C++练级之路】【Lv.16】红黑树(冰与火的碰撞,红与黑的史诗)

快乐的流畅&#xff1a;个人主页 个人专栏&#xff1a;《C语言》《数据结构世界》《进击的C》 远方有一堆篝火&#xff0c;在为久候之人燃烧&#xff01; 文章目录 引言一、红黑树的概念二、红黑树的模拟实现2.1 结点2.2 成员变量2.3 插入情况一&#xff1a;uncle在左&#xff…...

政安晨:【Keras机器学习实践要点】(三)—— 编写组件与训练数据

政安晨的个人主页&#xff1a;政安晨 欢迎 &#x1f44d;点赞✍评论⭐收藏 收录专栏: TensorFlow与Keras实战演绎机器学习 希望政安晨的博客能够对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff01; 介绍 通过 Keras&#xff0c;您可以编写自定…...

数据库系统概论(超详解!!!) 第四节 关系数据库标准语言SQL(Ⅲ)

1.连接查询 连接查询&#xff1a;同时涉及多个表的查询 连接条件或连接谓词&#xff1a;用来连接两个表的条件 一般格式&#xff1a; [<表名1>.]<列名1> <比较运算符> [<表名2>.]<列名2> [<表名1>.]<列名1> BETWEEN [&l…...

如何使用Python进行网络安全与密码学【第149篇—密码学】

&#x1f47d;发现宝藏 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。【点击进入巨牛的人工智能学习网站】。 用Python进行网络安全与密码学&#xff1a;技术实践指南 随着互联网的普及&#xff0c;网络…...

应急响应-Web2

应急响应-Web2 1.攻击者的IP地址&#xff08;两个&#xff09;&#xff1f; 192.168.126.135 192.168.126.129 通过phpstudy查看日志&#xff0c;发现192.168.126.135这个IP一直在404访问 &#xff0c; 并且在日志的最后几条一直在访问system.php &#xff0c;从这可以推断 …...

复试专业前沿问题问答合集8-1——CNN、Transformer、TensorFlow、GPT

复试专业前沿问题问答合集8-1——CNN、Transformer、TensorFlow、GPT 深度学习中的CNN、Transformer、TensorFlow、GPT大语言模型的原理关系问答: Transformer与ChatGPT的关系 Transformer 是一种基于自注意力机制的深度学习模型,最初在论文《Attention is All You Need》…...

用Python做一个植物大战僵尸

植物大战僵尸是一个相对复杂的游戏&#xff0c;涉及到图形界面、动画、游戏逻辑等多个方面。用Python实现一个完整的植物大战僵尸游戏是一个大工程&#xff0c;但我们可以简化一些内容&#xff0c;做一个基础版本。 以下是一个简化版的植物大战僵尸游戏的Python实现思路&#…...

Win11文件右键菜单栏完整显示教程

近日公司电脑升级了win11&#xff0c;发现了一个小麻烦事&#xff0c;如下图&#xff1a; 当我想使用svn或git的时候必须要多点一下&#xff0c;这忍不了&#xff0c;无形之中加大了工作量&#xff01; 于是&#xff0c;菜单全显示教程如下&#xff1a; 第一步&#xff1a;管…...

【Python实用标准库】argparser使用教程

argparser使用教程 1.介绍2.基本使用3.add_argument() 参数设置4.参考 1.介绍 &#xff08;一&#xff09;argparse 模块是 Python 内置的用于命令项选项与参数解析的模块&#xff0c;其用主要在两个方面&#xff1a; 一方面在python文件中可以将算法参数集中放到一起&#x…...

伦敦金与纸黄金有什么区别?怎么选?

伦敦金与纸黄金都是与黄金相关的投资品种&#xff0c;近期黄金市场的上涨吸引了投资者的关注&#xff0c;那投资者想开户入场成为黄金投资者应该选择纸黄金还是伦敦金呢&#xff1f;两者有何区别呢&#xff1f;下面我们就来讨论一下。 伦敦金是一种起源于伦敦的标准化黄金交易合…...

化工企业能源在线监测管理系统,智能节能助力生产

化工企业能源消耗量极大&#xff0c;其节能的空间也相对较大&#xff0c;所以需要控制能耗强度&#xff0c;保持更高的能源利用率。 化工企业能源消耗现状 1、能源管理方面 计量能源消耗时&#xff0c;计量器具存在问题&#xff0c;未能对能耗情况实施完全计量&#xff0c;有…...

mongodb源码分析session执行handleRequest命令find过程

mongo/transport/service_state_machine.cpp已经分析startSession创建ASIOSession过程&#xff0c;并且验证connection是否超过限制ASIOSession和connection是循环接受客户端命令&#xff0c;把数据流转换成Message&#xff0c;状态转变流程是&#xff1a;State::Created 》 St…...

将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?

Otsu 是一种自动阈值化方法&#xff0c;用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理&#xff0c;能够自动确定一个阈值&#xff0c;将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...

用docker来安装部署freeswitch记录

今天刚才测试一个callcenter的项目&#xff0c;所以尝试安装freeswitch 1、使用轩辕镜像 - 中国开发者首选的专业 Docker 镜像加速服务平台 编辑下面/etc/docker/daemon.json文件为 {"registry-mirrors": ["https://docker.xuanyuan.me"] }同时可以进入轩…...

Redis数据倾斜问题解决

Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中&#xff0c;部分节点存储的数据量或访问量远高于其他节点&#xff0c;导致这些节点负载过高&#xff0c;影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...

代理篇12|深入理解 Vite中的Proxy接口代理配置

在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...

C++.OpenGL (14/64)多光源(Multiple Lights)

多光源(Multiple Lights) 多光源渲染技术概览 #mermaid-svg-3L5e5gGn76TNh7Lq {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-3L5e5gGn76TNh7Lq .error-icon{fill:#552222;}#mermaid-svg-3L5e5gGn76TNh7Lq .erro…...

免费数学几何作图web平台

光锐软件免费数学工具&#xff0c;maths,数学制图&#xff0c;数学作图&#xff0c;几何作图&#xff0c;几何&#xff0c;AR开发,AR教育,增强现实,软件公司,XR,MR,VR,虚拟仿真,虚拟现实,混合现实,教育科技产品,职业模拟培训,高保真VR场景,结构互动课件,元宇宙http://xaglare.c…...

tomcat指定使用的jdk版本

说明 有时候需要对tomcat配置指定的jdk版本号&#xff0c;此时&#xff0c;我们可以通过以下方式进行配置 设置方式 找到tomcat的bin目录中的setclasspath.bat。如果是linux系统则是setclasspath.sh set JAVA_HOMEC:\Program Files\Java\jdk8 set JRE_HOMEC:\Program Files…...

协议转换利器,profinet转ethercat网关的两大派系,各有千秋

随着工业以太网的发展&#xff0c;其高效、便捷、协议开放、易于冗余等诸多优点&#xff0c;被越来越多的工业现场所采用。西门子SIMATIC S7-1200/1500系列PLC集成有Profinet接口&#xff0c;具有实时性、开放性&#xff0c;使用TCP/IP和IT标准&#xff0c;符合基于工业以太网的…...

小木的算法日记-多叉树的递归/层序遍历

&#x1f332; 从二叉树到森林&#xff1a;一文彻底搞懂多叉树遍历的艺术 &#x1f680; 引言 你好&#xff0c;未来的算法大神&#xff01; 在数据结构的世界里&#xff0c;“树”无疑是最核心、最迷人的概念之一。我们中的大多数人都是从 二叉树 开始入门的&#xff0c;它…...