前沿重器
栏目主要给大家分享各种大厂、顶会的论文和分享,从中抽取关键精华的部分和大家分享,和大家一起把握前沿技术。具体介绍:仓颉专项:飞机大炮我都会,利器心法我还有。(算起来,专项启动已经是20年的事了!)
2024年文章合集最新发布!在这里:再添近20万字-CS的陋室2024年文章合集更新
往期回顾
- 前沿重器[57] | sigir24:大模型推荐系统的文本ID对齐学习
- 前沿重器[58] | deepseek-V3&R1技术启示
- 前沿重器[59] | 淘宝LLM落地电商推荐实践启示
- 前沿重器[60] | RecSys24:LLMs知识增强推荐系统(上交&华为)
- 前沿重器[61] | Agentic RAG综述解读
- 前沿重器[48-54] 合集:四万字聊搜索系统
搜索和推荐是长期备受关注的焦点领域,在大模型出来后,自然也开始了大量的尝试,而且大模型的尝试也开始突破原有的一些应用范式,原有常见的一些技术架构和思路也在被撼动,最近看到一篇相关的综述论文,重点讲解了最近大模型所催生出的“生成式”范式在推荐和搜索中的应用。
- 论文:A Survey of Generative Search and Recommendation in the Era of Large Language Models
- 原文链接:https://arxiv.org/abs/2404.16924
- 讲解:https://zhuanlan.zhihu.com/p/10768047815
目录:
- 回顾搜索和推荐技术及其之前的范式
- 生成式范式
- 生成式搜索
- 生成式推荐
- 讨论
- 个人评价
回顾搜索和推荐技术及其之前的范式
所谓的搜索,就是在用户给定一串检索词(query)的条件下,查出库内与之匹配的一系列文档,有关搜索内部的具体情况,欢迎大家去查看我之前写的这篇文章(前沿重器[48-54] 合集:四万字聊搜索系统),数万字相对完善地介绍了搜索当前整体技术全貌。而推荐则是考虑给定的用户信息、行为,在库内找出用户最可能喜欢、点击的内容,推送给用户。
除开各种相关组件和技术架构,搜索和推荐都可以理解成一种匹配,搜索是用户query和文档的匹配,推荐是用户和物料的匹配,通过各种方式计算两者的匹配分,从而两者的best match。在之前的研究中,主要经历了两种范式——机器学习和深度学习。
- 机器学习,用机器学习的方式计算匹配度,常见的有如learning to rank(R&S[19] | 学习排序入门级概述)、矩阵分解等。
- 深度学习,用深度学习,早年如CNN、LSTM模型,后续有了transformer结构,这些类似的技术,可以把query、文档甚至是用户画像等信息转化为表征向量用于检索和排序。
而后在近年来,出现了一个新的概念——生成式检索和推荐(Generative search and recommendation),生成式检索能直接生成目标结果,其背后所依靠的便是大家熟知的大模型,在引入大模型后,能具有如下优势。
- 具有更丰富的知识、语义理解能力、交互能力和指令遵循能力,能有效提升搜索推荐任务的效果。
- 大模型的生成式能力,能革新信息检索和推荐的模式。
- 基于大模型的生成式AI应用目前已经成为用户应用的新窗口。
生成式范式
生成式范式和另外两种范式(机器学习和深度学习)的核心差异如图所示,相比之下,生成式范式并不如其他两种范式一样强调query和文档之间的相似度,计算出两者之间的得分,而是把query当做输入,文档当做输出的一种生成模式,输入和输出都有了很大的变化。
将生成式拆解开,主要分为4个模块。
- query/用户描述:即整个生成式模型的输入。
- 文档/物料标识符:使之最终的生成结果。一般地,文档通常会比较长,此时可能并非生成文章,而是生成文章的标题、ID等。
- 训练:在确认输入和输出后,便可以开始进行训练。
- 推理:用query直接生成文档,完成推理流程。
整个模式总结下来还是比较常规的,剩下的难题就在于每个模块下的具体工作了。
生成式搜索
此处,我按照上面生成式范式的4个模块来进行分别讲解。
首先是query的表示,此处会比较简单,因为用户的输入往往很直接,当然了,对于特定的场景,例如多轮搜索、多轮对话等,可能还需要把上下文一起放入模型中所谓输入。
文档标识上,因为文档通常会比较复杂而且长度较长,所以通常会只用一个标识来标记文档,具体的标识机器遇到的问题和解决方案如下。
- 数字ID。数字ID大都没有语义,此时可通过文档到数字的训练、聚类数字ID的方式来进行学习。
- 文档标题。文档标题具有语义,此时进行推理和预测会更为可靠,然而对于无标题的段落、缺乏高质量标题(标题党横行)的场景会存在问题。
- N-grams。可以理解为带语义的id,但是区分度不如数字ID,且不好对应到具体文档。
- Codebook。某种程度可以理解为把文档转化为向量,通过对向量进行转化,完成对原始文档的重构。
- Multiview标识符。综合上述方案并融合他们的优点构建的框架,融合多个标识符,建立转化函数,形成新的标识符。
训练上,通常考虑两种模式,生成式和判别式。
- 生成式一般是指直接按照生成式大模型的推理方式,即预测下一个token,一般是两个方向,一个是query->标识符的训练,一个是文档->标识符的训练。
- 判别式,借鉴原来的排序、负样本挖掘的方法进行学习。
推理上,主要分为两种模式,自由式和约束式。
- 自由式是指让大模型自由生成,生成的内容直接定位到具体文档。
- 约束式则是对大模型的生成加以约束,确保生成的内容能定位到特定的标识符。
另外作者还列举了大模型在原有搜索系统的其他落地方向,大家可以参考:
- 查询拓展。凭借大模型强大的生成能力,对query进行拓展,让检索质量得到大幅提升,一些因为词汇变化、语义泛化导致的准确率。
- 特征提取器。同样凭借大模型强大的实力,提升对query的表征能力,提升搜索的准确率。
- 排序器。排序是搜索的重头戏,在此处使用大模型能增强排序模块“优中选优”的能力。
生成式推荐
生成式推荐考量的是,将用户的各种信息整理成自然语言,用大模型生成相关的项目或者对应的标识符。
首先便是用户标识,和搜索系统不同,用户标识背后的数据又杂又多,要将其整合,并配合具体的描述,内容就更多了,因此需要将其分模块分别处理再整合,按照论文的描述,需要分为以下几个部分。
- 任务描述。描述具体的任务,即类似“基于现有的信息,请为用户推荐1部用户喜欢的电影”,从而引导模型进行推理和生成。
- 用户历史交互。推荐系统最喜欢的历史行为,值得注意的是,为配合大模型自身能力特点,可以考虑把历史行为对应的物料信息加入增强语义描述,也可以把后续转化后的物料标识符(类似前面提到的文档标识)。
- 用户画像。此处强调的是类似年龄、性别、工作等基础信息,也包括一些总结得到的标签信息,如“喜欢看科幻电影”、“青少年”等。
- 上下文信息。在此处是指一些影响用户短期决策的内容,如地点、时间等。
- 外部知识。加入一下外部的,对推荐有帮助的辅助知识,例如“XX情况下用户更喜欢XX”,这是一个相比传统推荐的优势,能更灵活地加一些辅助信息。
然后是物料标识。推荐的物料在更多情况下具有很多不同的模态,主要的思路和分析如下。
- 标识符ID是个不错的思路,但和搜索类似的是,ID本身没有什么语义信息,尤其是推荐的物料更为复杂,因此并不那么合适。
- 文本标识在一些场景下还是不错的,例如电影、产品、书名、新闻、歌曲,这些都有明显的标题特征。然而上述情况下都有一些类似文本长度过长、无法有效表征具体物料之类的问题。
- 代码本。基于原始文本构造一些相对较短的令牌,但这较短的令牌语义通常比较简单,难以表征复杂的内容,相似语义令牌可能背后的内容以及用户的行为都可能会有巨大差异。
- 多面标识符。构造综合上述优点的标识符。
在训练层面,主要有两个关键步骤,一个是文本数据构造和模型优化。
- 文本构造上,大部分方案都是使用预定义的项目标识符构建文本数据,也有部分会基于代码本,前面还有一个把原文本数据转化为代码表示的生成器。
- 模型优化上,主要就是用生成式模型作为基座训练了,以文本为输入物料标识为输出进行训练,另外,因为物料标识和物料本身因为语义的不接近,可能还需要训练一个额外的映射器来做映射。
推理阶段,和搜索类似,有自由式推理和约束式推理,自由式会用beam search映射到对应的标识符上。然而自由式可能会生成不在词库里的标识符,因此需要约束,例如通过计算标记序列和物品的距离强行找一个。当然,还有些新思路,例如一些创意场景,例如服装穿搭,能为用户提供一些新方案。
在后面,作者还提供了两种能落地推荐的大模型思路。
- 特征提取器,和前文搜索中提到的类似。
- 用作CTR预测。
讨论
后面,作者还给出基于现在的研究下,大模型在搜索推荐领域的一些问题探讨。
首先是搜索和推荐的差异,尽管在本文里两者被放在一起讨论,有很多相似点,但仍存在一些细节上的差异。
- 对大模型的输入长度。大部分情况下,搜索的输入长度会比较短,内容也比较简单,一般就是query及其改写的辅助内容,但是推荐会涉及大量的用户画像、历史行为等信息。
- 交互密度不同。搜索大部分情况是“一锤子买卖”,搜了给结果了完事,但是推荐是多次交互反馈然后再推荐的。对搜索而言,会有大量的物料在实际应用中其实并不会命中什么query,这会令这些物料得不到充分学习。
- 对“语义”的理解不同。搜索中query和doc的关联性挺好理解的,但是推荐系统而言,复杂的画像和对应的物料并无很明显的联系,所谓的“语义”是通过交互来体现的,而且这里的“语义”信息很大程度落在了对用户标识和物料标识上,这会是一个重要的研究课题。
第二个议题是目前的一些可见的技术难题。
- 有关文档和物料的更新。在进行训练后,给定输入模型总能输出一些文档或者物料的id,然而在实际应用中,文档和物料的更新是极为快速的,未遇到的、新的内容,总很难很快更新到模型里,当然,这也是目前各种以深度学习为基础的模型所有的毛病。
- 多模态和跨模态的内容。文本信息在现在来看肯定是单薄的,大量的多模态模型还在路上,但仍任重道远。
- 上下文。目前的微调模式主要还是围绕着“query-文档”或“用户-物料”的二元组进行,多轮交互仍存在挑战。
- 大规模召回。随着物料和文档的增加,自回归编码和beam search的压力会越来越大,现在一般的大模型的vocab大都在万级别甚至以内,面对物料/文档规模在上千万上亿甚至更多的情况,这个解码模式有待优化。
最后是展望,这里作者给出一个挺大胆的展望——生成式内容。
- 搜索和推荐本质都是对现有内容(而且是有限集合下)的推送,未来是否可以通过直接创造的方式直接完成内容的生成。
- 用生成式模型直接得到回答,能集成多个网站的内容,甚至在多轮交互中或者更精准可靠的信息。
- 图像搜索和图像生成。
- 推荐项目的生成。即内容生成,通过AIGC的模式生成新内容满足用户的推荐内容需求。
个人评价
本文还是比较完善地总结了目前大模型在推荐和搜索领域的应用,里面很多最近比较重要的论文都有所收录,内容还是比较完善的,有兴趣的部分,大家可以到对应章节召对应的论文里阅读,作者没有对方案进行堆叠而更多是总结出核心共同的侧重点,这个是挺多综述都没做到的。不过本文更多还是聚焦在科研界,很多现实应用并不包含,尤其是一些用大模型替代原有深度学习范式下的方案,非常有效实用,且文章整体比较关注生成式范式下的内容,很多其他应用基本是一笔带过,略有些可惜。