面向长文本的多模型协作摘要架构:多LLM文本摘要方法
多LLM摘要框架在每轮对话中包含两个基本步骤:生成和评估。这些步骤在多LLM分散式摘要和集中式摘要中有所不同。在两种策略中,k个不同的LLM都会生成多样化的文本摘要。然而在评估阶段,多LLM集中式摘要方法使用单个LLM来评估摘要并选择最佳摘要,而分散式多LLM摘要则使用k个LLM进行评估。

论文提出的方法旨在处理长文本文档输入,这类文档可能包含数万字,通常超出大多数标准LLM的上下文窗口限制,论文建立了一个两阶段处理流程:首先将源文档分块,独立summarize每个源文档块,然后对连接后的中间结果进行第二轮分块和摘要。在这两个阶段中,两种框架都允许多个LLM协作,最终收敛到一个高质量的完整原始参考文档摘要。

集中式多LLM摘要

单轮处理
每个LLM接收一次提示,生成各自的摘要。然后通过单一评估步骤选择最佳的最终摘要。
在单轮设置中,每个参与模型列表中的LLM都使用相同的提示P独立生成输入文本的摘要。对于每个LLM Mj ∈ M,输出为Sj = Mj(P,S),其中S表示输入文本。对所有Mj运行此步骤会得到一组摘要S = {S1,…,Sk}。从概念上讲,每个模型都贡献其独特的视角,产生多样化的候选摘要池,这对后续评估阶段的稳健摘要选择非常重要。

在收集候选摘要集S后,中央代理C ∈ M对这些摘要进行评估。中央LLM C使用评估提示Pec来评估每个摘要的质量。形式上表示为E = C(Pec, S),其中E是中央LLM对所有候选摘要的评估。这包括选择最佳摘要(以其匿名标识符表示)以及该评估的置信度分数(以0到10的整数表示)。将标识符去匿名化以恢复所选摘要Sj的文本,并将其设置为最终输出S*。在单轮机制中,此时终止流程,不再进行后续迭代。
对话式处理
生成和评估阶段会重复多次。每个生成-评估过程定义为一轮,并定义了流程结束或开始新一轮的条件,直到达到最大轮次。

对话式处理的第一轮与单轮程序相似。每个LLM Mj使用提示P从原始输入文本S生成初始摘要S(1)j:S(1) = Mj(P,S)。如果上一轮评估结果的置信度分数低于阈值,或者LLM未能输出可读的置信度分数,流程将进入下一轮。在第二轮及后续轮次中,使用提示P(i)。后续轮次中的LLM可以访问待摘要文本和上一轮的摘要。具体来说,在第i轮(i > 1):S(i)j = Mj(P(i),S)。

第i轮(i > 1)的评估阶段在概念上与单轮设置相似,但现在是对生成阶段刚刚产生的候选摘要Si = {S1(i), …, Sk(i)}进行操作。中央LLM C使用Pec评估这些候选摘要:E(i) = C(Pec, Si)。如果置信度达到阈值,流程终止,中央LLM选择的摘要被接受为S*。否则,流程进入下一轮摘要生成和评估。

分散式多LLM摘要

单轮处理
生成程序与集中式方法相同。多个LLM独立生成输入文本的摘要,获得摘要列表S = {S1,…,Sk}。

在评估阶段,每个生成摘要的模型都会收到一个新的评估提示,该提示不包含置信度,并收到待摘要文本以及包括自己在内的所有代理生成的摘要。形式上,收集模型偏好E(i),…,E(i),其中每个E(i)代表模型Mj对S(i),…,S(i)中最佳摘要的选择。当大多数模型选择相同的摘要时,即达成收敛。当没有出现多数选择时,在单轮方法(tmax = 1)中,算法选择指定的决胜模型Mt的摘要。

对话式处理
生成遵循与集中式方法相同的方法,产生摘要集S = S1,…,Sk。与单轮方法的一个关键区别在于条件重生成机制:当第一轮未达成共识时,后续轮次使用包含先前评估生成的摘要的新提示。

第一轮评估与单轮方法相同,但在未达成共识时会进入带有新生成提示的额外轮次。在单轮情况下,未达成共识会立即触发决胜模型机制。相比之下,对话式方法会使用更新的提示启动新的生成-评估轮次。这个过程持续进行,直到出现多数共识或达到tmax轮。在tmax轮后仍未达成共识时,算法默认使用决胜机制。

实验设置
实验使用ArXiv和GovReport数据集评估摘要方法。使用ROUGE-1、ROUGE-L、BLEU-1和BLEU-4指标评估LLM生成摘要的质量。为了与多LLM方法进行比较,采用GPT-3.5、GPT-4o、GPT-4o mini和LLaMA3-8B作为基准。所有模型使用4K字符的块大小,最终摘要表示为生成摘要的连接。

评估结果

分散式和集中式多LLM方法的结果。

多LLM方法不同评估和决胜模型的结果。
- 多LLM框架显著优于单一LLM基准,在某些情况下性能提升高达3倍
- 集中式多LLM方法平均提升得分73%,而分散式方法平均提升70%
- 仅使用两个LLM和单轮生成评估就能获得显著的性能提升,表明该方法具有成本效益
- 该框架在不同的中央模型(评估器)和决胜模型中表现稳定
- 超过两个LLM和额外的生成评估轮次并未带来进一步改进
实现代码
fromlangchain_ollamaimportChatOllama gemma2=ChatOllama(model="gemma2:9b", temperature=0) llama3=ChatOllama(model="llama3:8b", temperature=0) llama3_1=ChatOllama(model="llama3.1:8b", temperature=0)prompt_initial_summary=""" Provide a concise summary of the text in around 160 words. Output the summary text only and nothing else.
提示词
prompt_initial_summary = """Provide a concise summary of the text in around 160 words. Output the summary text only and nothing else.
{text}
""".strip()prompt_subsequent_summary = """
Given the original text below, along with the summaries of that text by 3 LLMs,
please generate a better summary of the original text in about 160 words.
ORIGINAL:
{text}
Summary by agent_1:
{summary_1}
Summary by agent_2:
{summary_2}
Summary by agent_3:
{summary_3}
""".strip()prompt_decentralised_evaluation = """
Given the original text below, along with the summaries of that text by 3 agents,
please evaluate the summaries and output the name of the agent that has the best summary.
Output the exact name only and nothing else.
ORIGINAL:
{text}
Summary by agent_1:
{summary_1}
Summary by agent_2:
{summary_2}
Summary by agent_3:
{summary_3}
""".strip()prompt_centralised_evaluation = """
Given the initial text below, along with the summaries of that text by 3 LLMs,
please evaluate the generated summaries and output the name of the LLM has the best summary.
On a separate line indicate a confidence level between 0 and 10.ORIGINAL:
{text}
Summary by agent_1:
{summary_1}
Summary by agent_2:
{summary_2}
Summary by agent_3:
{summary_3}
Remember, on a separate line indicate a confidence level between 0 and 10.
""".strip()prompt_concate = """
Provide a concise summary of the text in around 160 words.
Output the summary text only and nothing else.
{summaries}
""".strip()
汇总
class SingleTurnCentralised(): def __init__(self, models): self.models = models def generate(self, text): summaries = [] for model in self.models: summaries.append(model.invoke([{"role": "user", "content": prompt_initial_summary.format(text=text)}]).content) return summaries def evaluate(self, text, summaries): response = gemma2.invoke([ {"role": "user", "content": prompt_centralised_evaluation.format(text=text, summary_1=summaries[0], summary_2=summaries[1], summary_3=summaries[2])} ]).content winner, *_, confidence = response.split() return winner, confidence def __call__(self, chunks): summarised_chunks = [] for chunk in chunks: summaries = self.generate(chunk) winner, confidence = self.evaluate(chunk, summaries) summarised_chunks.append(summaries[int(winner[-1]) -1]) final_summary = gemma2.invoke([{"role": "user", "content": prompt_concate.format(summaries="\n".join(summarised_chunks))}]).content return final_summary single_turn_centralised = SingleTurnCentralised([gemma2, llama3, llama3_1]) final_summary = single_turn_centralised(chunks)
论文地址
Multi-LLM Text Summarization
https://avoid.overfit.cn/post/ba136ba242694d68bce4c5499c85c647
作者: Ritvik Rastogi
相关文章:
面向长文本的多模型协作摘要架构:多LLM文本摘要方法
多LLM摘要框架在每轮对话中包含两个基本步骤:生成和评估。这些步骤在多LLM分散式摘要和集中式摘要中有所不同。在两种策略中,k个不同的LLM都会生成多样化的文本摘要。然而在评估阶段,多LLM集中式摘要方法使用单个LLM来评估摘要并选择最佳摘要,而分散式多LLM摘要则使用k个LLM进行…...
Python中容器类型的数据(上)
若我们想将多个数据打包并且统一管理,应该怎么办? Python内置的数据类型如序列(列表、元组等)、集合和字典等可以容纳多项数据,我们称它们为容器类型的数据。 序列 序列 (sequence) 是一种可迭代的、元素有序的容器类型的数据。 序列包括列表 (list)…...
Spring MVC中HandlerInterceptor和Filter的区别
目录 一、处理阶段 二、功能范围 三、参数访问 四、配置方式 五、使用场景说明 在Spring MVC中,HandlerInterceptor和Filter都是用于拦截请求的重要组件,但它们在多个方面存在显著的差异。本文将详细解析这两种拦截机制的区别,并结合使用…...
[Qt]系统相关-网络编程-TCP、UDP、HTTP协议
目录 前言 一、UDP网络编程 1.Qt项目文件 2.UDP类 QUdpSocket QNetworkDatagram 3.UDP回显服务器案例 细节 服务器设计 客户端设计 二、TCP网络编程 1.TCP类 QTcpServer QTcpSocket 2.TCP回显服务器案例 细节 服务器设计 客户端设计 三、HTTP客户端 1.HTTP…...
wow-agent---task4 MetaGPT初体验
先说坑: 1.使用git clone模式安装metagpt 2.模型尽量使用在线模型或本地高参数模型。 这里使用python3.10.11调试成功 一,安装 安装 | MetaGPT,参考这里的以开发模型进行安装 git clone https://github.com/geekan/MetaGPT.git cd /you…...
信息系统管理工程师第6-8章精讲视频及配套千题通关双双发布,附第14章思维导图
这一周发文少,不是我在偷懒,而是在和信管的视频及千题通关“”浴血奋战 ,特别是第8章卡了我很久,因为内容实在太多,精讲视频估计都差不多4个小时了,还好终于在春节前拿下,提供给小分队的同学&am…...
npm启动前端项目时报错(vue) error:0308010C:digital envelope routines::unsupported
vue 启动项目时,npm run serve 报下面的错: error:0308010C:digital envelope routines::unsupported at new Hash (node:internal/crypto/hash:67:19) at Object.createHash (node:crypto:133:10) at FSReqCallback.readFileAfterClose [as on…...
Excel 技巧21 - Excel中整理美化数据实例,Ctrl+T 超级表格(★★★)
本文讲Excel中如何整理美化数据的实例,以及CtrlT 超级表格的常用功能。 目录 1,Excel中整理美化数据 1-1,设置间隔行颜色 1-2,给总销量列设置数据条 1-3,根据总销量设置排序 1-4,加一个销售趋势列 2&…...
力扣算法题——11.盛最多水的容器
目录 💕1.题目 💕2.解析思路 本题思路总览 借助双指针探索规律 从规律到代码实现的转化 双指针的具体实现 代码整体流程 💕3.代码实现 💕4.完结 二十七步也能走完逆流河吗 💕1.题目 💕2.解析思路…...
微服务学习-服务调用组件 OpenFeign 实战
1. OpenFeign 接口方法编写规范 1.1. 在编写 OpenFeign 接口方法时,需要遵循以下规范 1.1.1.1. 接口中的方法必须使用 RequestMapping、GetMapping、PostMapping 等注解声明 HTTP 请求的类型。 1.1.1.2. 方法的参数可以使用 RequestParam、RequestHeader、PathVa…...
PDF2WORD万能方法,如何控制Adobe dc pro,自动实现PDF转word
如何用JavaScript控制Adobe DC Pro来自动实现PDF转Word。首先,我需要考虑Adobe DC Pro是否有公开的API或者扩展接口。我记得Adobe Acrobat Pro DC支持JavaScript,但主要是用于表单处理和文档操作,比如Acrobat JavaScript。不过,自…...
Java Web-Tomcat Servlet
Web服务器-Tomcat Web服务器简介 Web 服务器是一种软件程序,它主要用于在网络上接收和处理客户端(如浏览器)发送的 HTTP 请求,并返回相应的网页内容或数据。以下是关于 Web 服务器的详细介绍: 功能 接收请求&#…...
寒假学web--day09
简介 一些魔法函数与php反序列化漏洞 tips 反序列化和类的方法无关,不能把类的方法序列化 将php.exe所在目录放到环境变量中,就可以在终端里通过php.exe ./命令来执行php代码 魔术方法 __construct() 在实例化一个对象时会自动调用,可…...
深度解析:基于Vue 3的教育管理系统架构设计与优化实践
一、项目架构分析 1. 技术栈全景 项目采用 Vue 3 TypeScript Tailwind CSS 技术组合,体现了现代前端开发的三大趋势: 响应式编程:通过Vue 3的Composition API实现细粒度响应 类型安全:约60%的组件采用TypeScript编写 原子化…...
CNN-BiLSTM卷积双向长短期记忆神经网络时间序列预测(Matlab完整源码和数据)
CNN-BiLSTM卷积双向长短期记忆神经网络时间序列预测(Matlab完整源码和数据) 目录 CNN-BiLSTM卷积双向长短期记忆神经网络时间序列预测(Matlab完整源码和数据)预测效果基本介绍 CNN-BiLSTM卷积双向长短期记忆神经网络时间序列预测一…...
mysql_store_result的概念和使用案例
mysql_store_result() 是 MySQL C API 中的一个函数,用于检索一个完整的结果集到一个客户端。当执行一个查询(通常是 SELECT 查询)并希望处理所有返回的数据时,可以使用此函数。 概念 mysql_store_result() 函数的原型如下&…...
docker安装MySQL8:docker离线安装MySQL、docker在线安装MySQL、MySQL镜像下载、MySQL配置、MySQL命令
一、镜像下载 1、在线下载 在一台能连外网的linux上执行docker镜像拉取命令 docker pull mysql:8.0.41 2、离线包下载 两种方式: 方式一: -)在一台能连外网的linux上安装docker执行第一步的命令下载镜像 -)导出 # 导出镜…...
黑盒/白盒运维监控
运维监控分为黑盒和白盒 黑盒:不深入代码,在系统角度看TPS,延迟等指标 白盒:深入代码分析,通过日志捕捉,以及主动上报告警等来进行监控 黑盒监控: 1. 页面功能:域名是否可访问&…...
奖励模型:解析大语言模型的关键工具
标题:奖励模型:解析大语言模型的关键工具 文章信息摘要: 奖励模型是理解和审核大语言模型(LLM)的重要工具,通过简单的评估方式提供了模型内部表征和性能的深入洞察。它不仅能静态比较模型表现,还可帮助诊断训练问题&a…...
Boot 系统选择U启动
1.进入Boot 系统 F2 或 Del Boot --->Boot 0ption Priorities #4 KingstwongDataTravele 是U盘 调整搭到#1 2.保持重启就好...
001 mybatis入门
文章目录 mybatis是什么ORM是什么ORM框架和MyBatis的区别#{}和${}的区别编码流程UserDaoImpl.javaUserDao.javaUser.javadb.propertiesSqlMapConfig.xmlUserMapper.xmlMybatisTest.javapom.xmluser.sql 表现层 SpringMVC 业务层 Spring 持久层 Mybatis https://mybatis.org/myb…...
【前端SEO】使用Vue.js + Nuxt 框架构建服务端渲染 (SSR) 应用满足SEO需求
Nuxt.js 是一个基于 Vue.js 的通用应用框架,它简化了使用 Vue 构建服务端渲染 (SSR) 应用的流程。除了 SSR 之外,Nuxt.js 还支持静态站点生成(Static Site Generation, SSG),渐进式网络应用(Progressive We…...
sysbench压力测试工具mysql以及postgresql
sysbench压力测试工具mysql以及postgresql sysbench工具安装 [postgresoradb sysbench-1.0.20]$ ./autogen.sh ./autogen.sh: running libtoolize --copy --force libtoolize: putting auxiliary files in AC_CONFIG_AUX_DIR, config. libtoolize: copying file config/ltm…...
9.中断系统、EXTI外部中断
中断系统原理 中断 中断系统是管理和执行中断的逻辑结构,外部中断是众多能产生中断的外设之一,所以本节我们就借助外部中断来学习一下中断系统。在以后学习其它外设的时候,也是会经常和中断打交道的。 中断:在主程序运行过程中…...
Oracle 12c 中的 CDB和PDB的启动和关闭
一、简介 Oracle 12c引入了多租户架构,允许一个容器数据库(Container Database, CDB)托管多个独立的可插拔数据库(Pluggable Database, PDB)。本文档旨在详细描述如何启动和关闭CDB及PDB。 二、容器数据库 (CDB) 2.1…...
RocketMQ原理—4.消息读写的性能优化
大纲 1.Producer基于队列的消息分发机制 2.Producer基于Hash的有序消息分发 3.Broker如何实现高并发消息数据写入 4.RocketMQ读写队列的运作原理分析 5.Consumer拉取消息的流程原理分析 6.ConsumeQueue的随机位置读取需求分析 7.ConsumeQueue的物理存储结构设计 8.Cons…...
【C++动态规划 网格】2328. 网格图中递增路径的数目|2001
本文涉及知识点 C动态规划 LeetCode2328. 网格图中递增路径的数目 给你一个 m x n 的整数网格图 grid ,你可以从一个格子移动到 4 个方向相邻的任意一个格子。 请你返回在网格图中从 任意 格子出发,达到 任意 格子,且路径中的数字是 严格递…...
Web3.0时代的挑战与机遇:以开源2+1链动模式AI智能名片S2B2C商城小程序为例的深度探讨
摘要:Web3.0作为互联网的下一代形态,承载着去中心化、开放性和安全性的重要愿景。然而,其高门槛、用户体验差等问题阻碍了Web3.0的主流化进程。本文旨在深入探讨Web3.0面临的挑战,并提出利用开源21链动模式、AI智能名片及S2B2C商城…...
MySQL(高级特性篇) 12 章——数据库其它调优策略
一、数据库调优的措施 (1)调优的目标 尽可能节省系统资源,以便系统可以提供更大负荷的服务(吞吐量最大)合理的结构设计和参数调整,以提高用户操作的响应速度(响应速度更快)减少系统…...
单片机基础模块学习——DS18B20温度传感器芯片
不知道该往哪走的时候,就往前走。 一、DS18B20芯片原理图 该芯片共有三个引脚,分别为 GND——接地引脚DQ——数据通信引脚VDD——正电源 数据通信用到的是1-Wier协议 优点:占用端口少,电路设计方便 同时该协议要求通过上拉电阻…...
