【王树森搜索引擎技术】概要04:搜索引擎的链路(查询词处理、召回、排序)

news/2025/1/20 4:28:51/

搜素引擎的链路

  • 分为查询词处理,召回,排序
    在这里插入图片描述

查询词处理

在这里插入图片描述

分词

  • 分词:冬季卫衣推荐 -> 冬季 / 卫衣 / 推荐
  • 为什么要做分词:文本召回根据词在倒排索引中检索文档
  • 倒排索引的 key 大多是 冬季,卫衣, 推荐这样的常用词,数量不大
  • 加入倒排索引的 key 是冬季卫衣推荐这样的词,倒排索引会过于巨大

词权重

  • 冬季卫衣推荐 -> 冬季 / 卫衣 / 推荐,三个词同等重要吗”?可以丢弃某个词吗?
  • 词权重:卫衣>冬季>推荐
  • 为什么要计算词权重?如果查询词太长,没有文档可以同时包含其中的所有词,需要丢弃不重要的词
  • 计算查询词与文档相关性时,可以用词权重做加权

类目识别

  • 每个平台都有各自的多级类目体系
    • 一级类目:美妆
    • 二级类目:彩妆,护肤,美甲,香水
  • 用NLP技术实别文档,查询词的类目
    • 在文档发布或被爬虫获取到时,离线识别文档类目
    • 在用户做搜索时,在线实别查询词的类目
    • 召回模型,排序模型将文档,查询词类目作为目的特征

查询词意图识别

  • 时效性意图:查询词对文档“新“的需求,召回和排序均需要考虑文档的年龄
  • 地域性意图:召回和排序不止需要文本相关性,还需要结合用户定位地点,查询词提及的地点,文档定位的地点
  • 用户名意图:用户想要找平台中某位用户,应当检索用户名库,而非检索文档库
  • 求购意图:用户可能想要购买商品,同时在文档库,商品库中做检索
  • 还有很多别的意图,一个查询可能包含多个意图

查询词改写

  • 用户输入查询 q,算法将其改写为多个查询词
  • 查询词改写有什么用?
  • 第一:解决语义匹配,但文本不匹配的问题
    在这里插入图片描述
  • 解决召回文档数量过少的问题
    在这里插入图片描述

召回

  • 给定查询词 q,从文档库中快速检索数万篇可能与 q 相关的文档 d
  • 文本召回:借助倒排索引,匹配 q 中的词和 d 总的词
  • 向量找回:将 q 和 d 分别表征为向量 x q x_q xq z d z_d zd ,给定 x q x_q xq ,查找相似度高的 z d z_d zd
  • KV召回,对于高频查询词 q, 离线建立 q->List(d) 这样的 key-value 索引。线上直接读取索引,获取 q 相关的文档

文本召回

  • 离线处理文档,建立倒排索引。
  • 给定词 t,可以快速找到所有包含 t 的文档
  • 给定查询词 q,做分词得到多个词 t 1 . ⋅ ⋅ ⋅ . t k t_1. ···. t_k t1.⋅⋅⋅.tk
  • 对于每个词 t i t_i ti ,检索倒排索引,得到文档的集合 D i D_i Di
  • 求 k 个集合的交集,作为文本召回的结果
  • 交集可能很小,甚至为空。因此需要对 q 做丢词,改写
    在这里插入图片描述

向量召回

在这里插入图片描述

KV召回

在这里插入图片描述

排序

  • 前面的内容,相关性最重要
    在这里插入图片描述
    在这里插入图片描述

http://www.ppmy.cn/news/1564581.html

相关文章

解决CSS中样式的优先级问题

在CSS中&#xff0c;有以下几种方式来确定优先级&#xff1a; 内联样式 - 直接在HTML元素的 style 属性中写样式&#xff0c;它的优先级是最高的。例如 <p style"color: red;">这是一段红色文字</p> 。 ID选择器 - 当在CSS中使用 #id 选择器来定…

深入剖析 Redis 过期删除策略

深入剖析 Redis 过期删除策略 在当今大数据和高并发的时代&#xff0c;缓存技术对于提升系统性能至关重要&#xff0c;而 Redis 作为一款广泛使用的高性能键值对存储数据库&#xff0c;其过期删除策略更是其中的关键一环。今天&#xff0c;就来和大家深入探讨一下 Redis 过期删…

集群内SSH免密登录及批处理

集群内SSH免密登录及批处理 一、背景二、操作步骤&#xff08;默认在主节点操作&#xff09;1. 为 root 用户设置密码并允许SSH登录&#xff08;在**每台主机**上操作&#xff09;2. 在主节点安装 pdsh&#xff0c;用于批量执行命令3. 创建集群主机列表4. 编写自动生成SSH密钥的…

深度学习学习笔记(第30周)

一、摘要 本周报的目的在于汇报第30周的学习成果&#xff0c;本周主要聚焦于基于深度学习的图像分割领域的常用模型U-net。   U-net是最常用、最简单的一种分割模型&#xff0c;在2015年被提出。UNet网络是一种用于图像分割的卷积神经网络&#xff0c;其特点是采用了U型网络…

解决Spring Boot中Druid连接池“discard long time none received connection“警告

在使用Spring Boot结合Druid连接池时&#xff0c;开发者可能会遇到"discard long time none received connection"的警告信息。虽然这通常不会影响应用程序的正常运行&#xff0c;但这些警告信息可能会让人感到困扰。本文将探讨这个问题的原因&#xff0c;并提供几种…

vue 前端优化性能优化方法

1.列表使用唯一 key v-for"item in activeList" :key"item.id"原因是不使用 key 或者列表的 index 作为 key 的时候&#xff0c;每个元素对应的位置关系都是 index&#xff0c;直接导致我们插入的元素到后面的全部元素&#xff0c;对应的位置关系都发生了变…

如何写好ChatGPT的提示词:从入门到专家

在人工智能的飞速发展中&#xff0c;ChatGPT 等语言模型已经成为人们解决问题、生成内容和提升效率的强大工具。然而&#xff0c;要充分发挥这些模型的潜力&#xff0c;关键在于如何设计有效的提示词&#xff08;Prompt&#xff09;。本文将从基础概念到高级技巧&#xff0c;全…

Kotlin函数类型探索:T.()->Unit的扩展函数、无参函数()->Unit与类型参数函数(T)->Unit

在Kotlin编程语言的丰富特性中&#xff0c;函数类型扮演着至关重要的角色。它们不仅定义了代码的行为&#xff0c;还通过灵活的类型系统促进了代码的重用和模块化。本文将深入探讨Kotlin中的三种核心函数类型&#xff1a;T.()->Unit的扩展函数、无参函数()->Unit以及类型…