日均搜索 3 亿次,小红书如何打造年轻人首选的「搜索引擎」

11 月 26 至 28 日,由全球计算机科学权威组织 ACM (Association for Computing Machinery) 主办,清华大学与墨尔本大学承办,小红书支持的首个区域性信息检索大会 SIGIR-AP 2023 在北京举办。与会期间,100 余位国内外研究者就信息检索领域前沿技术与发展趋势进行了深入探讨。

SIGIR(Special Interest Group on Information Retrieval)是信息检索领域最重要的国际学术会议,是 CCF A 类会议。SIGIR-AP 为 ACM SIGIR 系列会议之一,首次在中国举办,其投稿范围和接收论文主题与 SIGIR 相同。现场参会人员包括荣获国际信息检索领域终身成就 TonyKent Strix 奖的荷兰皇家艺术与科学院院士马丁·德·莱克(Maarten de Rijke),ACM SIGIR 信息检索最高成就奖 Gerard Salton Award 获得者、美国伊利诺伊大学香槟分校(UIUC)计算机系教授Chengxiang Zhai,滑铁卢大学数学学院副院长、计算机科学学院教授 Charles Clarke,ACM 杰出成员、日本早稻田大学计算机系教授 Tetsuya Sakai 等知名学者,以及来自清华大学、中国人民大学、中科院、早稻田大学、新加波国立大学等海内外多所院校硕博同学。

图片

小红书拥有超过 2.6 亿 的月活用户,其中 60% 的日活用户每天都会在平台主动搜索,日均搜索查询量接近 3 亿次。小红书 APP 作为普通人的生活搜索入口,在搜索领域展现出独特的优势,成为众多年轻人的第一搜索引擎。

作为工业界代表,小红书技术团队荣幸地出席本次会议。在会上,小红书语义理解与召回方向负责人曾书带来了题为《小红书搜索引擎创新实践》主题分享,详细阐述了搜索团队在多模态语义理解领域的工作成果,以及如何将这些成果运用到小红书搜索引擎的索引分析、召回、排序等实际场景中,以提升用户搜索体验。现场观众积极提问,互动气氛热烈。

图片

小红书搜索引擎的特点,可以归纳为“普通人的视角,过来人的经验”“有用的心智”。用户在使用小红书 APP 时,可以搜寻普通人的生活经验和解答,获取真实、即时、丰富和个性化的内容。为了打造“越来越懂用户”的搜索引擎,我们面临着许多技术挑战。多意图查询比重高,对意图识别的挑战大;流量集中在长尾,而尾部查询天然地缺乏统计信息和用户行为数据;同时,图文、视频、直播等多模态内容,对内容理解提出了更高的要求。面对上述问题,小红书搜索团队采取一系列技术创新实践来增强语义理解能力。曾书在 SIGIR-AP 2023 上介绍了多模态语义理解技术在用户意图分析向量召回倒排召回以及相关性排序四个方面的业务实践。

图片

小红书语义理解与召回方向负责人  曾书

1. 用户意图分析

短文本理解是用户意图分析的主要手段。在实际应用中,团队基于预训练的语言模型,通过多阶段的连续预训练方式在保留模型的泛化能力的同时提升业务适配性。步骤包括领域语料的无监督预训练、用户日志的弱监督预训练、人工标注语料微调等。为了进一步优化意图理解能力,团队在两个方向上加以改进:

  • 对于长尾流量,利用知识库、实体链接方法,将实体的附加信息引入到判别模型,提高长尾 Query 预测准确性;

  • 对于头部流量,采用日志挖掘、系统模拟的方式引入后验数据,提高头部 Query 的预测准确率。

图片

2. 向量检索

向量检索是小红书搜索的主力索引之一,团队从两个方面对向量检索的效果进行了优化。对于长尾 Query,采用多模态表征学习来确保相关结果召回;对于头部 Query,通过个性化的表征学习来找到用户更感兴趣的内容。由于小红书笔记中大量信息都包含在图片和视频中,多模态表征学习可以更好地建模小红书的笔记内容。小红书搜索团队在多模态表征学习中主要进行了以下技术优化:

  • 跨模态对齐通过“笔记中的图片和文字“的对比学习、“ Query 和图片“的对比学习,将文本和图像表示到同一个语义空间中。

  • 多模态融合尝试多种模态融合模型结构,引入多模态 Mask Language Modeling(MLM) 和 Mask Image Modeling (MIM) ,以实现更好的多模态信息融合。

  • 负样本的构造通过对 Query 和图像进行 Masking、改写和替换,来构造困难的负样本。

图片

同时,为了提升表征学习的个性化能力,团队主要在三个方面对模型进行改进:

一是目标设计通过多种负样本设计,模型针对相关性和互动两个目标来进行对比学习;

二是特征设计,在模型特征中使用了大量用户的统计行为特征和历史 Query  特征,以增强模型对搜索上下文的感知能力;

三是语义表征优化,为了避免前两项优化对于互动目标的学习造成干扰,使得召回模型的相关性跑偏,团队在 Query  侧引入与核心词的对比学习损失,在笔记侧引入与相似笔记的对比学习损失,保持 Query 塔和 Note 塔的语义理解能力。

3. 倒排索引

小红书也非常重视在传统召回中的语义理解能力,主要工作体现在三个方面:

第一,为笔记生成 Query。针对曝光量较小的笔记,使用生成式模型生成 Query,从而有效提高长尾笔记的召回率。

第二,将多模态内容转化成文本。团队通过视频全文生成技术,生成视频的转写文本,此类语料用于倒排索引中,能在不影响相关性指标的前提下,显著提高视频的召回率。

第三,对笔记进行篇章级的标签提取。团队通过笔记内容与标签的相关性算法剔除无关的 Hashtag(用户上传标签),获取的 Hashtag 语料可以通过弱监督训练来增强多模态内容理解模型能力。根据标注结果,分析语料中标签的共性关系,并通过人工确认得到层次化的标签结构。团队还对各种打标算法的结果进行标签重要性的判别。这样一套流程可以大幅提升内容标签在索引中的可用性。

4. 相关性排序

团队从三个方面对相关性排序的语义理解能力进行优化:多阶段的语言模型训练范式、推理效率问题以及多模态相关性。在相关性训练中,语言模型训练可分为三个阶段:

  • 预训练阶段使用站内文本语料进行无监督预训练;

  • 连续预训练阶段在预训练模型基础上使用搜索日志进行监督训练;

  • 微调阶段在连续训练模型基础上使用人工标注语料进行监督训练。

影响相关性模型的另一大因素是运行效率。在资源成本不变的情况下,提高运行效率意味着有更多资源用于效果改进,团队通过蒸馏和加速两步对相关性模型的运行效率进行了大幅优化,将 48 层的 Bert 模型蒸馏到 12 层和 4 层,实现了在效果损失小的情况下大幅提升效率,满足线上部署需求。此外,通过 Faster Transformer、动态 Padding 及动态摘要的方式进一步提升模型的运行效率。除文本相关性外,团队针对多模态相关性进行了独立建模和优化。

  • 通过迭代清洗线上点击数据,筛选出高质量的训练数据进行对比学习训练。

  • 为提升模型的泛化性能,在 Query 侧引入了多任务学习,包括关键词识别和分类等任务。

  • 在训练时引入文本 token 和 patch 级别的细粒度匹配损失,提升了模型对细节的关注能力。

通过多模态相关性的优化,配合召回中多模态表征的优化,我们大幅提升了长尾 Query 的召回和排序能力。

图片

本次大会中,荷兰皇家艺术与科学院院士马丁·德·莱克(Maarten de Rijke)发表《Simulation  For Recommendations In Dynamic And Intercative Environments 》主题演讲,探讨了“通过使用模拟器改进推荐系统中遇到的问题“的可能性。

当大家讨论推荐系统时,需要考虑到它是一个动态的过程。用户的喜好和外部世界都在不断变化,推荐系统必须进行长期优化,需要学会应对用户反馈中的“噪声”、对冷启动场景中新用户的有限了解,以及可能影响训练数据的用户行为偏差。

图片

荷兰皇家艺术与科学院院士  马丁·德·莱克

马丁·德·莱克院士认为,随着交互式和数据驱动方法的出现,例如强化学习、在线学习和反事实的学习排序等,想实现超越传统”以准确性为中心目标“的推荐系统,需要适当的模拟器。这种模拟器可以模拟推荐环境中使其动态和交互的各种机制,例如推荐对用户的影响、偏见数据对推荐系统后续迭代的影响等。模拟器使研究者能够轻松调整推荐系统运行的实验设置,从而降低识别一般趋势和发现新候选方法的成本。

然而,模拟器中获得的良好性能并不能保证在实际系统中的成功。使用模拟器的价值往往在于能够控制你关心的某些参数,以覆盖你在现实中可能遇到的不同的值或动态。虽然可能无法准确地模拟现实,但可以判断参数大致范围。

模拟器可以帮助研究者识别一般趋势。通过调整参数,研究者可以观察在模拟环境中对某些特定干预措施的效果,而这些干预在模拟环境中相对容易实施。例如,用户数据量少对整体推荐性能有何影响?增加偏见的程度会带来什么影响?推荐系统对噪声增长的鲁棒性如何?或者如果用户兴趣发生变化,会发生什么?随着时间的推移,模拟器可以协助研究者更好的控制并及时调整参数,从而提高推荐系统效能。

图片

SIGIR-AP 作为首个区域性信息检索大会,今年首次成功举办,为国内学者们的交流与合作创造了难得的机会。小红书致力于构建学术研究与实践应用之间的桥梁,推动产学研结合。在大会期间,许多参会者莅临小红书展台,与工程师们积极交流,对小红书实践案例和技术创新表现出浓厚兴趣和高度关注。

图片

SIGIR-AP 2023 已经圆满落幕,愿大会蓬勃发展。最后,向所有中稿论文的作者表示祝贺,期待在明年会议中见证更多优秀的研究与创新成果!未来,小红书将进一步加强技术研发和创新,为用户提供更卓越的搜索体验和服务。

图片

小红书社区搜索算法工程师

关于我们:

社区搜索团队负责小红书搜索效果的优化和前沿技术的探索,致力于打造中国最大的生活搜索引擎。团队利用最先进的生成式大模型、问答对话、多模态、大规模CTR 预估、海量 ANN 索引、流式机器学习框架等技术,通过优化 Query 分析、内容理解、召回排序、相关性、预估等方向,为海量用户提供精准、快捷、智能化、个性化的搜索体验。我们期待具有探索精神的你加入我们,并肩面对挑战性拉满的新一代搜索引擎优化任务。

岗位职责:
1、对小红书搜索效果进行优化,包括搜索算法和策略的调研、设计、开发、评估等环节,提升用户体验;
2、发现并解决搜索场景中在查询分析、意图识别、排序模型、去重等方向的问题;
3、解决小红书搜索实际问题,更好的满足用户的搜索需求;
4、跟进业内搜索相关模型和算法的前沿进展,并在实际业务中进行合理应用。


任职资格:
1、本科及以上学历,计算机相关专业背景;
2、有搜索、推荐、广告、图像识别等相关背景优先;
3、熟悉机器学习、NLP、数据挖掘、知识工程的经典算法,并能在业务中灵活解决实际问题;
4、在国际顶级会议(KDD、SIGIR、WSDM、ICML、ACL等)以第一作者发表过高水平论文者、知名数据挖掘比赛(例如 KDD Cup 等)中取得领先名次者优先;
5、积极向上,踏实勤奋,自我驱动,善于沟通,解决问题优先。

欢迎感兴趣的朋友发送简历至:REDtech@xiaohongshu.com;并抄送 luyun2@xiaohongshu.com

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/218759.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

04、pytest运行多个测试用例

官方用例 目录结构 course_04 | |----subdir | | | |----sample03_test.py | | | |----test_sample04.py | |----sample02_test.py | |----test_sample01.py# content of test_sample01.pydef test_simple01():print("test simple01")assert 0# content of tes…

python 实现 AIGC 大模型中的概率论:生日问题的基本推导

在上一节中,我们对生日问题进行了严谨的阐述:假设屋子里面每个人的生日相互独立,而且等可能的出现在一年 365 天中的任何一天,试问我们需要多少人才能让某两个人的生日在同一天的概率超过 50%。 处理抽象逻辑问题的一个入手点就是…

Java面向对象(高级)-- 枚举类的使用

文章目录 一、概述二、定义枚举类(1)定义枚举类(JDK5.0 之前)1. 案例2. 分析3. 代码 (2) 定义枚举类(JDK5.0 之后)1. enum关键字声明枚举2. 举例3. 默认父类4. Enum中常用方法4.1 to…

辛普森距离(SD,Sampson Distance)

定义 Sampson误差是复杂性介于代数误差和几何误差之间,但非常近似于几何误差的一种误差。 应用 SLAM对极几何中使用到SD来筛选内点: 1.随机采样8对匹配点 2.8点法求解基础矩阵 ​; 3.奇异值约束获取基础矩阵F; 4.计算误差&…

在cmd下查看当前python的版本

在cmd窗口下运行python --version或者py --version,可以查看当前python的版本。例如:

初学vue3与ts:element-plus的警告(Extraneous non-props attributes (ref_key) ...)

用了vue3与ts,ui我就选了element-plus element-plus官网:https://element-plus.org/zh-CN/ element-plus官网(国内镜像站点):https://element-plus.gitee.io/zh-CN/ 国内镜像站点如果进不去的话,在element-plus官网最下面的链接-&…

「Verilog学习笔记」任意小数分频

专栏前言 本专栏的内容主要是记录本人学习Verilog过程中的一些知识点,刷题网站用的是牛客网 timescale 1ns/1nsmodule div_M_N(input wire clk_in,input wire rst,output wire clk_out );parameter M_N 8d87; parameter c89 8d24; // 8/9时钟切换点parameter di…

Windows测试端口连通性(Telnet勾选)

“win““r”之后,telnet地址端口号 在最新版本的Windows中,默认情况下并没有安装Telnet客户端。如果遇到"telnet不是内部或外部命令…"的错误,请手动安装Telnet客户端。你可以在控制面板的"程序和功能"选项卡中找到&quo…

spring boot mybatis TypeHandler 源码如何初始化及调用

目录 概述使用TypeHandler使用方式在 select | update | insert 中加入 配置文件中指定 源码分析配置文件指定Mapper 执行query如何转换 结束 概述 阅读此文 可以达到 spring boot mybatis TypeHandler 源码如何初始化及如何调用的。 spring boot 版本为 2.7.17,my…

学生档案管理系统设计

摘要 随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。作为计算机应用的一部分,使用计算机对学生档案信息进行管理,具有着手工管理所无法比拟的优点.例如:检索迅速、查找方便、可靠性高、存储量…

python-学生管理|汉罗塔

1.编写程序,实现学生信息管理系统。 运行程序,在控制台输入“1”之后的结果如下所示: 学生管理系统 1.添加学生信息 2.删除学生信息 3.修改学生信息 4.显示所有学生信息 0.退出系统 请选择功能:1 请输入新学生的姓名:小红 请输入…

如何解决vue中的组件样式冲突

目录 1:组件样式冲突问题 2:导致组件之间样式冲突的根本原因是: 3:问题演示 4:通过设置scoped解决组件之间样式冲突问题 5:设置scoped解决组件样式冲突的原理 6:使用deep修改子组件的样式…

AT COMMAND(转载)

AT(Attention)指令是由 Dennis Hayes 发明的,所以也称为 Hayes command set。AT 指令最初是用来指导 modem 工作的,后面随着技术的发展,低速 modem 已经退出了市场,但 AT 指令却不断发展,并且在…

多线程中死锁是如何产生的?如何检测?如何避免?

一、死锁是如何产生的? 死锁:是指两个或多个线程在执行过程中,因争夺资源而造成的一种僵局。具体来说,每个线程持有一部分资源,并等待其他线程所持有的资源释放,导致所有线程都无法继续执行。 例如&#…

马斯克“赛博皮卡”Cybertruck交付!43万起售,性能强如猛兽

原创 | 文 BFT机器人 埃隆马斯克常常被称为是“天才与疯子”的结合,一直是一个争议不断的人物。他九十年代创办电子支付公司;2004年成立特斯拉,开创了一个汽车领域的新时代;人到中年又扬言要发射卫星建立全球无线网…… 许多科技…

Python必备神器揭秘:15个最热门库全解析

更多资料获取 📚 个人网站:ipengtao.com Python生态系统中拥有大量优秀的库,为开发者提供了广泛且强大的工具。本文将介绍15个最受欢迎的Python库,包括它们的功能、优点以及示例代码,帮助读者更全面地了解和使用这些库…

游戏开发常见算法

1.根据权重获取不同的值: 算法思想: 代码实现: _proto.randWeightEnemy function (enemyIdMap, enemyIds, targetWeight, weightArray, monsterNumLimit) {console.log("目标权重值"targetWeight); //targetWeight的值为1700var r…

基于SpringBoot实现的电影院售票系统

一、 系统架构 前端:html | jquery | bootstrap 后端:springboot | thymeleaf | spring-data-jpa 环境:jdk1.8 | mysql | maven 二、代码及数据库 三、功能介绍 01. 首页 02. 登录页 03. 管理端-电影列表 04. 管理端-添加电影 05. 管…

[PyTorch][chapter 4][李宏毅深度学习][Gradient Descent]

前言: 目录: 1: 梯度下降原理 2: 常见问题 3: 梯度更新方案 4: 梯度下降限制 一 梯度下降原理 机器学习的目标找到最优的参数,使得Loss 最小 为什么顺着梯度方向loss 就能下降了。主要原理是泰勒公式。 假设损失函数为 忽略二阶导数, 当 …

【Python】创建简单的Python微服务Demo与FastAPI

创建简单的Python微服务Demo与FastAPI 在微服务架构中,通过FastAPI框架创建一个简单的Python微服务Demo涉及多个步骤,包括定义服务、使用框架、进行通信等。在这篇文章中,我们将使用FastAPI框架创建两个简单的微服务,它们通过RES…