搜索召回概要

搜索召回

召回 是整个检索流程的核心组成部分之一,其主要任务是从大规模文档集合中初步筛选出一批可能与用户查询相关的文档。对于召回的整体定位和要求应当为:

  • 快速缩小范围:从海量文档中选出一个初始候选集,通常数量为几千到几万条
  • 确保覆盖性:尽量保证真正相关的文档被包含在候选集内,避免漏召
  • 高效处理:需要在低延迟下完成大规模检索,兼顾效果和计算开销

召回模块的业务目标主要围绕提高搜索系统的用户体验和业务价值,作为一个承上启下的环节,召回整体的目标要和搜索的最终目标对齐,即上下游协同发展。而召回作为一个功能模块,自然需要有其目标优化的侧重点:

  • 覆盖率
    • 定义:覆盖率是召回的核心目标,在候选集范围内需要尽可能全面地覆盖与用户查询相关的文档,避免漏掉高价值或高相关性的结果。具体的,可以通过多路召回的方式,从不同角度和方向去探索覆盖边界
    • 评估方式:
      • 离线评估:通过人工/LLM/规则等方式构建理想的标准测试数据集
      • 在线评估:通过线上监控出现零少召回的结果的情况,以衡量长尾查询的覆盖效果
  • 效率
    • 定义:召回面对的是百万/千万级的海量数据,需要尽可能小的开销实现快速筛选
      • 快速响应:以最低延迟完成初步筛选
      • 低计算成本:控制计算资源消耗,提高系统的性价比
    • 评估方式:在线耗时、资源消耗等监控
  • 相关性
    • 定义:虽然不是召回最关心的指标,但是仍然是一个约束项。召回的候选集需要与用户查询足够相关,为后续排序模块提供高质量输入
  • 多样性
    • 定义:确保候选集中的内容多样化,避免召回结果过于集中
    • 评估方式:冗余度
  • 定制化
    • 定义:
      • 个性化匹配:结合用户画像或上下文信息,召回与特定用户需求匹配的候选集
      • 场景适配:针对不同业务场景采用不同的召回策略
  • 业务目标驱动
    • 定义:
      • 提高转化率:通过召回高相关、高价值的文档或商品,推动用户进行点击、购买或其他目标行为
      • 提升用户粘性:通过更精准和有趣的召回结果,吸引用户持续使用平台
    • 评估方式:在线监控 CTR、CVR、搜索活跃用户数、用户留存率等
  • 适应实时性需求
    • 定义:实时调整召回策略或结果以适应变化,例如突发热点事件或快速变动的库存
  • 数据可解释性
    • 定义:确保召回模块能解释为何某些候选内容被选中,以便调优和迭代

召回算法的实现方式主要有:

  • 文本召回:
    • **倒排索引:**通过词项(Term)倒排索引,快速定位文档
    • **KV召回:**基于协同过滤等图学模型,通过用户行为或文档特征,推荐相似或相关的文档
  • **向量召回:**利用语义向量模型(如 Word2Vec、BERT、SimCSE)将查询和文档映射到向量空间,通过向量相似度(如余弦相似度、欧几里得距离)进行检索
  • **混合召回:**结合关键词召回、向量召回的优点,通过加权、交集或并集策略生成候选集

本章将具体介绍文本召回中的倒排召回、协同过滤召回和向量召回的实现方式,以及如何评估和优化这些召回策略。并在最后介绍如何在多召回通道下聚合多路召回结果。

倒排召回
协同过滤召回
向量召回
召回聚合

更多内容请点击:搜索系统算法解析

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

通过阿里云 Milvus 与 PAI 搭建高效的检索增强对话系统

背景介绍 阿里云向量检索服务Milvus版(简称阿里云Milvus)是一款云上全托管服务,确保了了与开源Milvus的100%兼容性,并支持无缝迁移。在开源版本的基础上增强了可扩展性,能提供大规模 AI 向量数据的相似性检索服务。相…

滚珠花键的保养与维护方法

滚珠花键作为关键的线性运动引导装置,以其高精度和高刚性在众多领域发挥着举足轻重的作用。然而,为了保持其卓越的性能,保养与维护措施不可或缺。 滚珠花键的保养与维护其实就是润滑与清洁,以下是一些具体的保养与维护方法&#x…

Layui table不使用url属性结合laypage组件实现动态分页

从后台一次性获取所有数据赋值给 Layui table 组件的 data 属性,若数据量大时,很可能会超出浏览器字符串最大长度,导致渲染数据失败。Layui table 结合 laypage 组件实现动态分页可解决此问题。 HTML增加分页组件标签 在table后增加一个用于…

fastdds:idl

1使用网络收发数据的最简单方式 在学习idl之前,先来看一下我们在开发中,通过网络收发数据时,常常怎么实现。 struct Student {char name[32];int age;char sex;// f 男,m 女 };//发送侧 struct Student s1 {"xiaoming&q…

计算机网络之多路转接epoll

个人主页:C忠实粉丝 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 C忠实粉丝 原创 计算机网络之多路转接epoll 收录于专栏【计算机网络】 本专栏旨在分享学习计算机网络的一点学习笔记,欢迎大家在评论区交流讨论💌 目…

多个Echart遍历生成 / 词图云

echart官网 安装 如果版本报错推荐安装以下版本 npm install echarts4.8.0 --savenpm uninstall echarts//这个是卸载命令以下安装成功后是局部引入:多个Echart遍历生成 vue3echart单个页面多个图表循环渲染展示:<template><div class"main"><div …

Windows server 服务器网络安全管理之防火墙出站规则设置

Windows server 服务器网络安全管理之防火墙出站规则设置 创建一条出站规则 这条出站规则针对IE浏览器设置&#xff0c;指定路径 TCP协议和指定端口&#xff08;多个端口的写法要注意&#xff09; 所有IP&#xff0c;所有应用&#xff0c;都采用阻止 给这条规则进行命名…

jmeter 接口性能测试 学习笔记

目录 说明工具准备工具配置jmeter 界面汉化配置汉化步骤汉化结果图 案例1&#xff1a;测试接口接口准备线程组添加线程组配置线程组值线程数&#xff08;Number of Threads&#xff09;Ramp-Up 时间&#xff08;Ramp-Up Period&#xff09;循环次数&#xff08;Loop Count&…

Pytorch | 从零构建ResNet对CIFAR10进行分类

Pytorch | 从零构建ResNet对CIFAR10进行分类 CIFAR10数据集ResNet核心思想网络结构创新点优点应用 ResNet结构代码详解结构代码代码详解BasicBlock 类ResNet 类ResNet18、ResNet34、ResNet50、ResNet101、ResNet152函数 训练过程和测试结果代码汇总resnet.pytrain.pytest.py 前…

gpu硬件架构

1.简介 NVIDIA在视觉计算和人工智能&#xff08;AI&#xff09;领域处于领先地位&#xff1b;其旗舰GPU已成为解决包括高性能计算和人工智能在内的各个领域复杂计算挑战所不可或缺的。虽然它们的规格经常被讨论&#xff0c;但很难掌握各种组件的清晰完整的图景。 这些GPU的高性…

Java中的方法重写:深入解析与最佳实践

在Java编程中&#xff0c;方法重写&#xff08;Method Overriding&#xff09;是面向对象编程&#xff08;OOP&#xff09;的核心概念之一。它允许子类提供一个与父类中同名方法的具体实现&#xff0c;从而实现多态性&#xff08;Polymorphism&#xff09;。本文将深入探讨Java…

使用vcpkg安装opencv>=4.9后#include<opencv2/opencv.hpp>#include<opencv2/core.hpp>无效

使用vcpkg安装opencv>4.9后#include<opencv2/opencv.hpp>#include<opencv2/core.hpp>无效\无法查找或打开 至少从2024年开始&#xff0c;发布的vcpkg默认安装的opencv版本都是4.x版。4.8版本及以前&#xff0c;vcpkg编译后的opencv头文件目录是*/vcpkg/x64-win…

基于java web在线商城购物系统源码+论文

一、环境信息 开发语言&#xff1a;JAVA JDK版本&#xff1a;JDK8及以上 数据库&#xff1a;MySql5.6及以上 Maven版本&#xff1a;任意版本 操作系统&#xff1a;Windows、macOS 开发工具&#xff1a;Idea、Eclipse、MyEclipse 开发框架&#xff1a;SpringbootHTMLjQueryMysq…

基于字节大模型的论文翻译(含免费源码)

基于字节大模型的论文翻译 源代码&#xff1a; &#x1f44f; star ✨ https://github.com/boots-coder/LLM-application 展示 项目简介 本项目是一个基于大语言模型&#xff08;Large Language Model, LLM&#xff09;的论文阅读与翻译辅助工具。它通过用户界面&#xff08…

centos7下docker 容器实现redis主从同步

1.下载redis 镜像 docker pull bitnami/redis2. 文件夹授权 此文件夹是 你自己映射到宿主机上的挂载目录 chmod 777 /app/rd13.创建docker网络 docker network create mynet4.运行docker 镜像 安装redis的master -e 是设置环境变量值 docker run -d -p 6379:6379 \ -v /a…

实现 WebSocket 接入文心一言

目录 什么是 WebSocket&#xff1f; 为什么需要 WebSocket&#xff1f; HTTP 的局限性 WebSocket 的优势 总结&#xff1a;HTTP 和 WebSocket 的区别 WebSocket 的劣势 WebSocket 常见应用场景 WebSocket 握手过程 WebSocket 事件处理和生命周期 WebSocket 心跳机制 …

机动车油耗计算API集成指南

机动车油耗计算API集成指南 引言 在当今社会&#xff0c;随着机动车数量的持续增长和环保意识的不断增强&#xff0c;如何有效管理和降低车辆油耗成为了车主、车队管理者以及交通政策制定者共同关注的问题。为了帮助这些群体更好地理解和优化燃油消耗情况&#xff0c;本接口能…

前端yarn工具打包时网络连接问题排查与解决

最近线上前端打包时提示 “There appears to be trouble with your network connection”&#xff0c;以此文档记录下排查过程。 前端打包方式 docker启动临时容器打包&#xff0c;命令如下 docker run --rm -w /app -v pwd:/app alpine-node-common:v16.20-pro sh -c "…

IIC I2C子协议 SMBus协议 通信协议原理 时序 SMBus深度剖析

引言&#xff1a;系统管理总线&#xff08;SMBus&#xff09;是一种双线接口&#xff0c;通过该接口&#xff0c;各种系统组件芯片和设备可以相互以及与系统其他部分通信。它基于IC总线的操作原理。附录B提供了一些SMBus特性与IC总线不同的方式的描述。 SMBus为系统和电源管理相…

【Lua热更新】上篇

Lua 热更新 - 上篇 下篇链接&#xff1a;【Lua热更新】下篇 文章目录 Lua 热更新 - 上篇一、AssetBundle1.理论2. AB包资源加载 二、Lua 语法1. 简单数据类型2.字符串操作3.运算符4.条件分支语句5.循环语句6.函数7. table数组8.迭代器遍历9.复杂数据类型 - 表9.1字典9.2类9.3…