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

基于上下文嵌入的高效RAG答案生成
检索增强生成(RAG)通过引入外部上下文扩展输入,克服了大语言模型(LLM)的知识局限性。但RAG的主要缺点是输入较长时会显著增加解码时间。我们提出COCOM方法来解决这一挑战,它通过将长上下文压缩为少量上下文嵌入来加速生成时间。该方法支持不同的压缩率,可在解码时间和答案质量之间权衡。与早期方法相比,COCOM能更高效地处理多上下文,显著减少长输入的解码时间。实验表明,相比现有高效上下文压缩方法,COCOM实现了最高5.69倍的加速,同时性能更优。
模型推理
批处理时,模型输入包括:
questions
(列表
):包含问题的列表
contexts
(列表的列表
):每个问题对应一组上下文,所有问题的上下文数量需保持一致。模型微调(及推理)时默认使用5
个上下文。
模型会将问题压缩为上下文嵌入,并基于这些嵌入生成答案。
from transformers import AutoModel
model = AutoModel.from_pretrained('naver/cocom-v1-4-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年参演短片《凯文需要新朋友》,同年出演电视剧《追逐者的媒体马戏团》。2014年她在舞台剧《船民》中饰演女主角莎拉,该剧获FBi SMAC最佳舞台奖。',
'玛德琳·牛顿。这位英国女演员因在1970年代BBC剧《当船来时》中饰演多莉而闻名。其丈夫是演员凯文·惠特利(《摩斯探长》及其衍生剧《刘易斯》中饰演罗比·刘易斯)。夫妇二人曾共同出演《摩斯探长》剧集《共济会谜案》,牛顿饰演摩斯的恋人贝丽尔·纽瑟姆。她还在1988年儿童剧《乔迪赛车手》中饰演惠特利的荧幕妻子。'
]]
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},
}