库名称:transformers
语言:
- 英文
基础模型:
- mistralai/Mistral-7B-Instruct-v0.2
概述
COCOM 是一种高效的上下文压缩方法,能将长上下文压缩为少量上下文嵌入,显著加速问答任务的生成时间。

检索增强生成中的高效答案生成上下文嵌入
检索增强生成(RAG)通过引入外部上下文扩展输入,克服了大语言模型(LLM)的知识局限性。但RAG的主要缺陷在于输入较长时解码时间大幅增加。我们提出COCOM方法解决这一挑战,通过将长上下文压缩为少量上下文嵌入,显著提升生成速度。该方法支持不同压缩率,在解码时间和答案质量之间灵活权衡。相比早期方法,COCOM能更高效处理多上下文场景,大幅降低长输入的解码耗时。实验表明,本方法在保持更高性能的同时,速度提升最高达5.69倍。
模型推理
批量处理时,模型输入包括:
问题
(列表
):问题列表
上下文
(列表的列表
):每个问题对应一组上下文,所有问题的上下文数量需保持一致。模型微调(及推理)时默认使用5
个上下文。
模型会将问题压缩为上下文嵌入,并基于这些嵌入生成答案。
from transformers import AutoModel
model = AutoModel.from_pretrained('naver/cocom-v1-128-mistral-7b', trust_remote_code=True)
model = model.to('cuda')
contexts = [[
'罗莎琳德·贝利。罗莎琳德·贝利(生于1946年)是英国女演员,因在1970-1980年代BBC电视剧《当船来时》中饰演莎拉·赫德利(娘家姓利顿)而闻名。贝利参演过多部英剧,包括《拜克格罗夫》《遥远的海岸》和《燃烧》。其舞台剧作品包括在艾伦·本尼特作品《货车里的女士》中饰演玛丽·谢泼德小姐。',
'马尔科姆·特里斯。马尔科姆·特里斯(1941年1月11日生于达勒姆郡桑德兰)是英国演员,参演过大量电视剧。其最著名角色是1970年代热门剧《当船来时》中的马特·赫德利。电影作品包括《第一次火车大劫案》(1978)、《麦维卡》(1980)、《瘟疫犬》(1982,仅配音)、《杀戮战场》(1983)、《叛舰喋血记》(1984,饰演船医托马斯·哈根)、《玛塔·哈里》(1985)、《革命》(1985)、《丑闻》(1989)和《卓别林》(1992)。',
'《当船来时》。这部BBC制作的英国年代剧于1976-1981年间播出,詹姆斯·博拉姆饰演一战退伍军人杰克·福特,剧集通过这个虚构的东北英格兰贫困小镇盖洛希尔德,展现了1920-1930年代的政治斗争。',
'苏茜·优素福。优素福2006年以《罗尼·约翰斯半小时》编剧出道,2011年通过短片《点击》首次出演莉娜一角。2014年参演《媒体马戏团》,同年主演舞台剧《船民》获FBi SMAC最佳舞台奖。',
'玛德琳·牛顿。这位英国女演员以1970年代BBC剧《当船来时》中的多莉一角闻名,其丈夫是《摩斯探长》及其衍生剧《刘易斯》中饰演罗比·刘易斯的凯文·惠特利。'
]]
questions = ['《当船来时》中谁饰演了莎拉·赫德利?']
answers = model.generate_from_text(contexts=contexts, questions=questions, max_new_tokens=128)
print(answers)
参考文献:
论文:https://arxiv.org/pdf/2407.09252
@misc{rau2024contextembeddingsefficientanswer,
title={Context Embeddings for Efficient Answer Generation in RAG},
author={David Rau and Shuai Wang and Hervé Déjean and Stéphane Clinchant},
year={2024},
eprint={2407.09252},
archivePrefix={arXiv},
primaryClass={cs.CL},
url={https://arxiv.org/abs/2407.09252},
}