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 包含三个步骤:
- 预处理
- 标题选择
- 检索增强生成

来源
预处理
在初始阶段,根据文档创建目录 (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的缺点
- 优化文档块大小和管理重叠可能是一个挑战。
- 随着数据变化更新块和嵌入以保持相关性。
- 未针对少数语言实现进行优化
- 运行嵌入的额外成本
- 对于较小的实现来说很麻烦
- 对技术要求更高
传统 RAG 与 Prompt-RAG 相比的优势
- 扩展性良好
- 更多以数据为中心的方法
- 批量数据发现和数据开发对于企业实施仍然很重要。
- 一般来说,语义聚类是数据发现的一个重要方面,也是实施 RAG 的良好第一步。
Prompt-RAG 优点
- 非常适合规模较小、技术含量较低的实现和少数语言。
- 非常适合特定需求和实施
- 对于聊天机器人,某些意图可以路由到 Prompt-RAG 实现
- 简化
- 可以作为全面 RAG 实施的首次尝试
- 非梯度方法
- 可检查性和可观察性
- 旨在优化 Prompt-RAG 的数据发现和数据设计工具可以增加显着的价值。
Prompt-RAG 缺点
- 还是需要数据设计。
- 上下文窗口大小是一个障碍。
- Tokens使用量和成本会更高;这需要与嵌入模型tokens成本进行比较。
- 扩展和引入复杂性需要一个技术框架。
- 取决于 LLM 推理延迟和令牌使用成本。
- 需要创建内容结构。该研究主要集中于已有目录的文档。
相关文章:
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 确实有其局限性,但在特定情况下它可以有效地替代传统向量嵌入 …...
线性代数 - 应该学啥 以及哪些可以交给计算机
AI很热,所以小伙伴们不免要温故知新旧时噩梦 - 线代。 (十几年前,还有一个逼着大家梦回课堂的风口,图形学。) 这个真的不是什么美好的回忆,且不说老师的口音,也不说教材的云山雾绕,单…...
力扣面试150 Pow(x, n) 快速幂 负指数
Problem: 50. Pow(x, n) 解题方法 👨🏫 参考题解 复杂度 时间复杂度: O ( l o g 2 n ) O(log_{2}n) O(log2n) 空间复杂度: 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回车(enter),输入密码后进入 mysql 。(PS: -h 后面是数据库地址, -u 后…...
Unity-UGUI系统
UGUI是什么 UGUI是Unity引擎内自带的UI系统官方称之为:Unity Ul 是目前Unity商业游戏开发中使用最广泛的UI系统开发解决方案 它是基于Unity游戏对象的UI系统,只能用来做游戏UI功能 不能用于开发Unity编辑器中内置的用户界面 六大基础组件 概述 Canvas EventS…...
配置AC和AP上报KPI指标信息实验
配置AC和AP上报KPI指标信息示例 组网图形 图1 AP直接上报KPI指标 图2 AP通过AC透传上报KPI指标 业务需求组网需求数据规划配置思路配置注意事项操作步骤配置文件 业务需求 在云管理的ACFIT AP组网中,通过WMI上报机制,将AC和AP的KPI指标信息上报到iMast…...
深度学习Trick
Vscode查看文件目录 cmdshiftp选择->查看:将焦点置于辅助侧栏 View: Focus into Secondary Side Bar把主边栏的大纲拖入 快捷查看卷积过程,利用 torchinfo 在 model 下打断点F5 运行调试,F10 运行下一步在调试控制台输入from torchinfo…...
c++顺序表(连续插入删除)
Description 建立顺序表的类,属性包括:数组、实际长度、最大长度(设定为1000) 该类具有以下成员函数: 构造函数:实现顺序表的初始化。 插入多个数据的multiinsert(int i, int n, int item[])函数&#x…...
[综述笔记]A Survey on Deep Learning for Neuroimaging-Based Brain Disorder Analysis
论文网址:Frontiers | A Survey on Deep Learning for Neuroimaging-Based Brain Disorder Analysis (frontiersin.org) 英文是纯手打的!论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误,若有发现欢迎评论…...
【C++练级之路】【Lv.16】红黑树(冰与火的碰撞,红与黑的史诗)
快乐的流畅:个人主页 个人专栏:《C语言》《数据结构世界》《进击的C》 远方有一堆篝火,在为久候之人燃烧! 文章目录 引言一、红黑树的概念二、红黑树的模拟实现2.1 结点2.2 成员变量2.3 插入情况一:uncle在左ÿ…...
政安晨:【Keras机器学习实践要点】(三)—— 编写组件与训练数据
政安晨的个人主页:政安晨 欢迎 👍点赞✍评论⭐收藏 收录专栏: TensorFlow与Keras实战演绎机器学习 希望政安晨的博客能够对您有所裨益,如有不足之处,欢迎在评论区提出指正! 介绍 通过 Keras,您可以编写自定…...
数据库系统概论(超详解!!!) 第四节 关系数据库标准语言SQL(Ⅲ)
1.连接查询 连接查询:同时涉及多个表的查询 连接条件或连接谓词:用来连接两个表的条件 一般格式: [<表名1>.]<列名1> <比较运算符> [<表名2>.]<列名2> [<表名1>.]<列名1> BETWEEN [&l…...
如何使用Python进行网络安全与密码学【第149篇—密码学】
👽发现宝藏 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。【点击进入巨牛的人工智能学习网站】。 用Python进行网络安全与密码学:技术实践指南 随着互联网的普及,网络…...
应急响应-Web2
应急响应-Web2 1.攻击者的IP地址(两个)? 192.168.126.135 192.168.126.129 通过phpstudy查看日志,发现192.168.126.135这个IP一直在404访问 , 并且在日志的最后几条一直在访问system.php ,从这可以推断 …...
复试专业前沿问题问答合集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做一个植物大战僵尸
植物大战僵尸是一个相对复杂的游戏,涉及到图形界面、动画、游戏逻辑等多个方面。用Python实现一个完整的植物大战僵尸游戏是一个大工程,但我们可以简化一些内容,做一个基础版本。 以下是一个简化版的植物大战僵尸游戏的Python实现思路&#…...
Win11文件右键菜单栏完整显示教程
近日公司电脑升级了win11,发现了一个小麻烦事,如下图: 当我想使用svn或git的时候必须要多点一下,这忍不了,无形之中加大了工作量! 于是,菜单全显示教程如下: 第一步:管…...
【Python实用标准库】argparser使用教程
argparser使用教程 1.介绍2.基本使用3.add_argument() 参数设置4.参考 1.介绍 (一)argparse 模块是 Python 内置的用于命令项选项与参数解析的模块,其用主要在两个方面: 一方面在python文件中可以将算法参数集中放到一起&#x…...
伦敦金与纸黄金有什么区别?怎么选?
伦敦金与纸黄金都是与黄金相关的投资品种,近期黄金市场的上涨吸引了投资者的关注,那投资者想开户入场成为黄金投资者应该选择纸黄金还是伦敦金呢?两者有何区别呢?下面我们就来讨论一下。 伦敦金是一种起源于伦敦的标准化黄金交易合…...
化工企业能源在线监测管理系统,智能节能助力生产
化工企业能源消耗量极大,其节能的空间也相对较大,所以需要控制能耗强度,保持更高的能源利用率。 化工企业能源消耗现状 1、能源管理方面 计量能源消耗时,计量器具存在问题,未能对能耗情况实施完全计量,有…...
(十)学生端搭建
本次旨在将之前的已完成的部分功能进行拼装到学生端,同时完善学生端的构建。本次工作主要包括: 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...
可靠性+灵活性:电力载波技术在楼宇自控中的核心价值
可靠性灵活性:电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中,电力载波技术(PLC)凭借其独特的优势,正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据,无需额外布…...
五年级数学知识边界总结思考-下册
目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解:由来、作用与意义**一、知识点核心内容****二、知识点的由来:从生活实践到数学抽象****三、知识的作用:解决实际问题的工具****四、学习的意义:培养核心素养…...
LLM基础1_语言模型如何处理文本
基于GitHub项目:https://github.com/datawhalechina/llms-from-scratch-cn 工具介绍 tiktoken:OpenAI开发的专业"分词器" torch:Facebook开发的强力计算引擎,相当于超级计算器 理解词嵌入:给词语画"…...
涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战
“🤖手搓TuyaAI语音指令 😍秒变表情包大师,让萌系Otto机器人🔥玩出智能新花样!开整!” 🤖 Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制(TuyaAI…...
C++使用 new 来创建动态数组
问题: 不能使用变量定义数组大小 原因: 这是因为数组在内存中是连续存储的,编译器需要在编译阶段就确定数组的大小,以便正确地分配内存空间。如果允许使用变量来定义数组的大小,那么编译器就无法在编译时确定数组的大…...
云原生安全实战:API网关Kong的鉴权与限流详解
🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、基础概念 1. API网关(API Gateway) API网关是微服务架构中的核心组件,负责统一管理所有API的流量入口。它像一座…...
Windows安装Miniconda
一、下载 https://www.anaconda.com/download/success 二、安装 三、配置镜像源 Anaconda/Miniconda pip 配置清华镜像源_anaconda配置清华源-CSDN博客 四、常用操作命令 Anaconda/Miniconda 基本操作命令_miniconda创建环境命令-CSDN博客...
es6+和css3新增的特性有哪些
一:ECMAScript 新特性(ES6) ES6 (2015) - 革命性更新 1,记住的方法,从一个方法里面用到了哪些技术 1,let /const块级作用域声明2,**默认参数**:函数参数可以设置默认值。3&#x…...
macOS 终端智能代理检测
🧠 终端智能代理检测:自动判断是否需要设置代理访问 GitHub 在开发中,使用 GitHub 是非常常见的需求。但有时候我们会发现某些命令失败、插件无法更新,例如: fatal: unable to access https://github.com/ohmyzsh/oh…...
