当前位置: 首页 > 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;有…...

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…...

剑指offer20_链表中环的入口节点

链表中环的入口节点 给定一个链表&#xff0c;若其中包含环&#xff0c;则输出环的入口节点。 若其中不包含环&#xff0c;则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...

unix/linux,sudo,其发展历程详细时间线、由来、历史背景

sudo 的诞生和演化,本身就是一部 Unix/Linux 系统管理哲学变迁的微缩史。来,让我们拨开时间的迷雾,一同探寻 sudo 那波澜壮阔(也颇为实用主义)的发展历程。 历史背景:su的时代与困境 ( 20 世纪 70 年代 - 80 年代初) 在 sudo 出现之前,Unix 系统管理员和需要特权操作的…...

Android15默认授权浮窗权限

我们经常有那种需求&#xff0c;客户需要定制的apk集成在ROM中&#xff0c;并且默认授予其【显示在其他应用的上层】权限&#xff0c;也就是我们常说的浮窗权限&#xff0c;那么我们就可以通过以下方法在wms、ams等系统服务的systemReady()方法中调用即可实现预置应用默认授权浮…...

MySQL中【正则表达式】用法

MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现&#xff08;两者等价&#xff09;&#xff0c;用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例&#xff1a; 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...

AspectJ 在 Android 中的完整使用指南

一、环境配置&#xff08;Gradle 7.0 适配&#xff09; 1. 项目级 build.gradle // 注意&#xff1a;沪江插件已停更&#xff0c;推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...

视觉slam十四讲实践部分记录——ch2、ch3

ch2 一、使用g++编译.cpp为可执行文件并运行(P30) g++ helloSLAM.cpp ./a.out运行 二、使用cmake编译 mkdir build cd build cmake .. makeCMakeCache.txt 文件仍然指向旧的目录。这表明在源代码目录中可能还存在旧的 CMakeCache.txt 文件,或者在构建过程中仍然引用了旧的路…...

安宝特案例丨Vuzix AR智能眼镜集成专业软件,助力卢森堡医院药房转型,赢得辉瑞创新奖

在Vuzix M400 AR智能眼镜的助力下&#xff0c;卢森堡罗伯特舒曼医院&#xff08;the Robert Schuman Hospitals, HRS&#xff09;凭借在无菌制剂生产流程中引入增强现实技术&#xff08;AR&#xff09;创新项目&#xff0c;荣获了2024年6月7日由卢森堡医院药剂师协会&#xff0…...

人机融合智能 | “人智交互”跨学科新领域

本文系统地提出基于“以人为中心AI(HCAI)”理念的人-人工智能交互(人智交互)这一跨学科新领域及框架,定义人智交互领域的理念、基本理论和关键问题、方法、开发流程和参与团队等,阐述提出人智交互新领域的意义。然后,提出人智交互研究的三种新范式取向以及它们的意义。最后,总结…...

基于Java+VUE+MariaDB实现(Web)仿小米商城

仿小米商城 环境安装 nodejs maven JDK11 运行 mvn clean install -DskipTestscd adminmvn spring-boot:runcd ../webmvn spring-boot:runcd ../xiaomi-store-admin-vuenpm installnpm run servecd ../xiaomi-store-vuenpm installnpm run serve 注意&#xff1a;运行前…...