大家好,我是刘聪NLP。
RAG已经成为了大模型落地的重要场景,那么如何retrieval到正确的证据片段变的十分重要。
目前一般采用采用向量匹配的方式来增加语义召回的结果。在METB榜单上,英文向量表征已被大模型(生成模型)占领,中文向量表征还是以BERT模型(编码模型)为主。
英文榜单 中文榜单
之前写过一篇大模型这么强,为什么不使用能LLMs直接进行文本表征? 大模型的训练方式都是基于文本续写形式来训练的,损失函数主要预测下一个Token是否准确,而不是判断整个句子表征的好坏。因此直接用当前的大模型来对文本进行表征,效果并不理想。
今天刷到一篇论文《Simple Techniques for Enhancing Sentence Embeddings in Generative Language Models》,主要就是通过提示工程的方法,来增加大模型的直接生成文本表征能力。
paper:https://arxiv.org/abs/2404.03921
是否还记得想当年的PromptBERT,用过增加提示模板的方法,来直接提高BERT模型的文本表征效果。而对于生成模型,利用[MASK]标记显然是不合理的,毕竟大模型在预训练阶段也没有涉及[MASK]标记。
那么如何更好地将生成模型预测下一个Token的方式,与生成一个向量的偏差更小呢?
主要设计了三种方式,将句子用一个“word”表示(PromptEOL)、用“something”表示(PromptSTH)或者说可以总结成什么内容(PromptSUM)。
PromptEOL -> This sentence : "[X]" means in one word:"
PromptSTH -> This sentence : "[X]" means something
PromptSUM -> This sentence : "[X]" can be summarized as
从结果上来看,在直接生成向量时,PromptEOL方式效果更好,说明与与大模型本身预训练阶段更加吻合。
但相较于BERT模型直接生成向量来说,还是存在差距,
那是不是大模型直接生成向量的效果就是不理想呢?
参考COT和ICL方式,提出Pretended Chain of Thought(假思维链)和Knowledge Enhancement(知识增强)方法:
假思维链 -> After thinking step by step , this sentence : “[X]” means in one word:“
知识增强 -> The essence of a sentence is often captured by its main subjects and actions, while descriptive terms provide additional but less central details. With this in mind , this sentence : “[X]” means in one word:“
从结果上来看,通过提示词工程,不仅可以激发大模型的推理能力,大模型的向量表征能力同样可以被激发出来。
好了好了,这一篇有感而发贴(水贴)。
主要就是想表达,其实也许不是大模型直接表征 能力不行,也许是真的没用对,一些巧思,往往可以有意想不到的结果。
PS:给公众号添加【星标⭐️】不迷路!您的点赞 、在看 、关注 是我坚持的最大动力!
欢迎多多关注公众号「NLP工作站」,加入交流群,交个朋友吧,一起学习,一起进步!
我们的口号是“生命不止,学习不停”!
往期推荐:
RAG系统中答案无关片段对LLMs生成答案有何影响?
Qwen1.5-MoE模型:2.7B的激活参数量达到7B模型的性能
如何提高LLMs的文本表征(Text Embedding)能力?
大模型微调技巧 | 高质量指令数据筛选方法-MoDS
辟谣!微软撤回声称ChatGPT为20B参数的论文,并给出解释。
如何看待微软论文声称 ChatGPT 是 20B (200亿) 参数量的模型?
大模型微调技巧-在Embeeding上加入噪音提高指令微调效果