一个完整的搜索引擎往往包含了比较多的复杂模块,每个模块相互作用、兜底组成了我们使用的搜索引擎。抽象起来,召回和相关性是搜索系统里最重要的两个功能。本文首先介绍一下召回问题。
召回是对于输入query,能够高效的获取query相关的候选doc集合。召回对于搜索引擎起着致命性的作用。因为一旦相关的doc不能够被召回,即使后面的相关性排序做好的再好,也是徒劳。尤其在doc资源不是很丰富的搜索场景下,召回更是一个比较明显的问题。
首先面临的问题是索引粒度问题。我们知道召回是通过倒排索引求交得到的,当以词为粒度,粒度较细,召回的文章的数目较多,但也可能由于倒排过长把一些相关的结果误截断;当以更大的phrase粒度,粒度较粗,召回的文章相对更相关,但也容易造成召回的结果过少。
其次召回要能够保证有一定的召回文章数。query大部分模块都是为了解决召回问题,比如非必留,同义词,纠错。这是因为query和doc往往会存在描述不一致的问题。比如query是“如何考取广大的研究生?”,但大部分doc都是讲广州大学的研究生。因此需要将广大同义成广州大学才能正确的召回一些相关文章。用户query也会存在一些错误query,比如刘德花,这时系统需要将query纠错成“刘德华”,才能正确的召回一些相关文章。用户query也会存在和doc不是完全匹配的情况,尤其是对于长query,比如“无问西东电影的主演是谁?”,如果要求原搜索串完全命中,可能导致召回结果数过少或零结果。这里分析“电影”是一个冗余的信息,“是谁”是一个不重要的词,其参不参与倒排的求交并不影响召回doc的相关性,这时召回时可以直接把这2个词直接丢掉。
最后召回要保证结果的多样性。尤其是对于短query。因为相比于长query,短query往往是一些实体,召回doc数往往不是关键问题,用户也希望有一些惊喜的结果,避免搜索结构都是一些类似或重复结果。query事件扩展,query改写都是为了解决召回的多样性问题。比如当用户输入“武汉大学”,如果只是返回一些武汉大学的百科、高考录取信息,可能对用户并没有什么吸引力。这是如果能将武汉大学能和最近比较热的“武汉大学 樱花”、“武汉大学 和服”关联起来,可能会有侧重召回扩展内容相关的doc,增加结果多样性。
前面讲的召回还主要都是基于字面召回,深度学习的发展使得语义召回是现在研究的热点和流行的方法。其思路是分为将query和doc表示成embedding,然后基于embedding计算得到一些相似的doc。这种召回方式虽然能够召回一些相关doc,但其不能保证一些最相关的文章被一定会被召回回来。一方面语义会漂移,另一方面embedding模型往往是黑盒模型,很难debug。
召回问题不仅在搜索里至关重要,在推荐,广告中同样是一个关键问题。并且不同应用的侧重点不太一样,比如搜索中更侧重召回doc的数量,推荐中更侧重召回结果的多样性。因此做好召回是保证后续模块的第一步。
相关阅读
本文内容为星轨数据版权所有,未经授权许可不得任意转载复制,违者必究!
更多精彩,长按图片关注“星轨数据”联系我们
原网址: 访问
创建于: 2021-10-20 10:35:18
目录: default
标签: 无
未标明原创文章均为采集,版权归作者所有,转载无需和我联系,请注明原出处,南摩阿彌陀佛,知识,不只知道,要得到
java windows火焰图_mob64ca12ec8020的技术博客_51CTO博客 - 在windows下不可行,不知道作者是怎样搞的 监听SpringBoot 服务启动成功事件并打印信息_监听springboot启动完毕-CSDN博客 SpringBoot中就绪探针和存活探针_management.endpoint.health.probes.enabled-CSDN博客 u2u转换板 - 嘉立创EDA开源硬件平台 Spring Boot 项目的轻量级 HTTP 客户端 retrofit 框架,快来试试它!_Java精选-CSDN博客 手把手教你打造一套最牛的知识笔记管理系统! - 知乎 - 想法有重合-理论可参考 安宇雨 闲鱼 机械键盘 客制化 开贴记录 文本 linux 使用find命令查找包含某字符串的文件_beijihukk的博客-CSDN博客_find 查找字符串 ---- mac 也适用 安宇雨 打字音 记录集合 B站 bilibili 自行搭建 开坑 真正的客制化 安宇雨 黑苹果开坑 查找工具包maven pom 引用地 工具网站 Dantelis 介绍的玩轴入坑攻略 --- 关于轴的一些说法 --- 非官方 ---- 心得而已 --- 长期开坑更新 [本人问题][新开坑位]关于自动化测试的工具与平台应用 机械键盘 开团 网站记录 -- 能做一个收集的程序就好了 不过现在没时间 -- 信息大多是在群里发的 - 你要让垃圾佬 都去一个地方看难度也是很大的 精神支柱 [超级前台]sprinbboot maven superdesk-app 记录 [信息有用] [环境准备] [基本完成] [sebp/elk] 给已创建的Docker容器增加新的端口映射 - qq_30599553的博客 - CSDN博客 [正在研究] Elasticsearch, Logstash, Kibana (ELK) Docker image documentation elasticsearch centos 安装记录 及 启动手记 正式服务器 39 elasticsearch 问题合集 不断更新 6.1.1 | 6.5.1 两个版本 博客程序 - 测试 - bug记录 等等问题 laravel的启动过程解析 - lpfuture - 博客园 OAuth2 Server PHP 用 Laravel 搭建带 OAuth2 验证的 RESTful 服务 | Laravel China 社区 - 高品质的 Laravel 和 PHP 开发者社区 利用Laravel 搭建oauth2 API接口 附 Unauthenticated 解决办法 - 煮茶的博客 - SegmentFault 思否 使用 OAuth2-Server-php 搭建 OAuth2 Server - 午时的海 - 博客园 基于PHP构建OAuth 2.0 服务端 认证平台 - Endv - 博客园 Laravel 的 Artisan 命令行工具 Laravel 的文件系统和云存储功能集成 浅谈Chromium中的设计模式--终--Observer模式 浅谈Chromium中的设计模式--二--pre/post和Delegate模式 浅谈Chromium中的设计模式--一--Chromium中模块分层和进程模型 DeepMind 4 Hacking Yourself README.md update 20211011
Laravel China 简书 知乎 博客园 CSDN博客 开源中国 Go Further Ryan是菜鸟 | LNMP技术栈笔记 云栖社区-阿里云 Netflix技术博客 Techie Delight Linkedin技术博客 Dropbox技术博客 Facebook技术博客 淘宝中间件团队 美团技术博客 360技术博客 古巷博客 - 一个专注于分享的不正常博客 软件测试知识传播 - 测试窝 有赞技术团队 阮一峰 语雀 静觅丨崔庆才的个人博客 软件测试从业者综合能力提升 - isTester IBM Java 开发 使用开放 Java 生态系统开发现代应用程序 pengdai 一个强大的博主 HTML5资源教程 | 分享HTML5开发资源和开发教程 蘑菇博客 - 专注于技术分享的博客平台 个人博客-leapMie 流星007 CSDN博客 - 舍其小伙伴 稀土掘金 Go 技术论坛 | Golang / Go 语言中国知识社区
最新评论