多LLM协作,高效摘要长文本

一种多LLM协作摘要长文本的新方法,显著提升摘要质量,性能提升高达3倍。

原文标题:面向长文本的多模型协作摘要架构:多LLM文本摘要方法

原文作者:数据派THU

冷月清谈:

本文介绍了一种面向长文本的多模型协作摘要架构。该架构利用多个大型语言模型 (LLM) 共同生成和评估摘要,以克服单一LLM处理长文本的限制。该方法分为集中式和分散式两种。集中式方法使用单个LLM评估所有LLM生成的摘要并选择最佳结果,而分散式方法则由每个LLM自行评估所有摘要,最终通过多数投票或指定模型选出最佳摘要。两种方法均包含生成和评估两个阶段,可进行单轮或多轮对话式处理。对于长文本,该架构采用两阶段处理流程:首先将原文分块,独立总结每个块,然后将中间结果合并,再次分块和总结。实验结果表明,多LLM协作方法显著优于单一LLM,在某些情况下性能提升高达3倍。

怜星夜思:

1、这篇文章提到的集中式和分散式多LLM摘要方法,各自的优缺点是什么?实际应用中该如何选择?
2、文章中提到多LLM方法比单一LLM效果提升显著,这种提升主要来自哪些方面?
3、除了文章中提到的方法,还有哪些技术可以用于长文本摘要?它们各自的适用场景是什么?

原文内容

来源:DeepHub IMBA

本文约2800字,建议阅读5分钟

本文介绍了面向长文本的多模型协作摘要架构的文本摘要方法。


多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和额外的生成评估轮次并未带来进一步改进


实现代码



from langchain_ollama import ChatOllama

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://arxiv.org/abs/2412.15487


编辑:王菁‍‍‍

‍‍‍



关于我们

数据派THU作为数据科学类公众号,背靠清华大学大数据研究中心,分享前沿数据科学与大数据技术创新研究动态、持续传播数据科学知识,努力建设数据人才聚集平台、打造中国大数据最强集团军。



新浪微博:@数据派THU

微信视频号:数据派THU

今日头条:数据派THU

从评估的效率上来看,集中式肯定更高,毕竟只有一个LLM进行评估,但如果这个LLM“水平不行”或者有偏见,那结果就完蛋了。分散式虽然更民主,但效率低,而且容易出现“群体思维”的情况,即大家都倾向于选择某个看起来不错的摘要,而忽略了其他可能更好的选项。所以,选择哪种方法需要仔细权衡利弊,并且可以根据实际情况调整。

除了抽取式和生成式,还可以考虑一些混合方法,比如先用抽取式方法快速生成一个初稿,再用生成式方法进行润色和改进。此外,一些预训练模型,如Longformer、BigBird等,也可以用于处理长文本。具体选择哪种方法,需要根据文本长度、内容复杂度、对摘要质量的要求等因素综合考虑。

可以理解为多LLM相当于集思广益,避免了单一LLM可能出现的偏见或理解错误。同时,评估机制也能筛选出更优质的摘要,从而提升整体效果。这就好比写论文,经过多位专家评审修改后,质量肯定比初稿要高得多。

我觉得集中式有点像“一言堂”,评估标准全掌握在一个LLM手里,虽然高效,但可能会有偏颇。分散式更像“民主投票”,更不容易出现偏颇,但效率可能会低一些,尤其是在LLM们意见不一致的时候,可能要“吵”很久才能定下来。选择哪种方法,最终还是要看具体的应用场景和对效率、公平性的要求。

集中式的好处是评估标准更统一,不容易出现意见分歧导致最终结果难以确定,缺点是如果中央评估的LLM出现偏差,会导致整体结果偏差。分散式的好处是能够综合多个LLM的意见,一定程度上避免单点故障,缺点是如果各个LLM之间意见分歧较大,可能难以达成共识,或者需要更多轮次的对话,效率会降低。实际应用中,如果对摘要质量的统一性要求较高,可以选择集中式;如果更注重容错性和避免单点故障,可以选择分散式。

我认为主要来自两个方面:一是多个LLM可以提供不同的视角和理解,避免单一模型的局限性;二是通过相互评估和迭代,可以不断优化摘要质量,最终得到更完善的结果。

我感觉就像“三个臭皮匠,顶个诸葛亮”一样,每个LLM都贡献了自己的想法,互相补充,取长补短,最终的摘要自然比单个LLM生成的要好。而且,通过多轮对话,还能不断改进,精益求精。

长文本摘要的常见方法还有抽取式摘要和生成式摘要。抽取式摘要是从原文中选择重要的句子或短语组合成摘要,适用于需要保留原文风格和重点信息的场景。生成式摘要则是由模型理解原文后重新生成摘要,适用于需要更简洁、流畅的摘要,以及对原文进行概括和解释的场景。此外,还有基于图的方法、基于主题模型的方法等,可以根据具体需求选择合适的方法。

抽取式摘要就像从文章中“摘抄”重点,速度快,但可能不够流畅。生成式摘要就像让模型“复述”文章,更流畅,但也可能出现理解偏差。还有其他一些方法,比如基于图的方法可以处理更复杂的文本结构,基于主题模型的方法可以提取文章的主题信息。选择哪种方法取决于你想要什么样的摘要,以及你的文本数据特点。