本文为学习笔记,基于王树森老师的书籍和视频、网上收集的资料做的整理

文档&书籍:【王树森】SearchEngine: 搜索引擎原理

视频地址:推荐系统 - YouTube

参考:wangshusen/RecommenderSystemsolidglue/Recommender_Systemdatawhalechina/fun-rec

博客:推荐 – chenpaopao工业界真实的推荐系统-小红书

其实搜索和推荐比较相似,搜索多了个QP,比较大的一部分技术和指标比较相通,搜索比推荐另外搜索排序考虑的因素更多,如相关性、内容质量、时效性、个性化等,而推荐主要考虑个性化ctr

入门

入门文档:wangshusen/SearchEngine: 搜索引擎原理

  • 垂直搜索:文档结构化、意图明显
  • 通用搜索:没有结构化,检索难度大、意图难判断

Base

用户满意度

  • 相关性:

    • 定义:q 和 d 的关系

      客观标准,不取决于用户u;语义上不是字面上;只需 d 命中 q 的一种主要意图

  • 内容质量

    TODO:打分模型

    • EAT:专业性、权威性、可信赖,针对作者和网站。(对金钱、健康类的查询词尤为重要。
    • 文本质量:针对文档本身
  • 时效性

    • 突发实效性【如汇率、政策】

      识别方法:数据挖掘为主

    • 一般实效性【如薅羊毛、黄金价格、相机测评】

      识别方法:BERT 等

    • 周期实效性【如双十一、春晚小品】

      识别:不处理(表现突发时效性时会被挖掘到,只是可能会慢半拍或遗漏)、人工标注 or 数据挖掘识别周期

  • 个性化

Relevance

定义与分档、评价指标、文本匹配、语义匹配。

query process

  • 分词Tokenization:文本召回需要根据词(term)去倒排索引中检索文档。

  • 实体识别NER:美团搜索中NER技术的探索与实践 - 美团技术团队

  • 词权重Term Weight:必要时可以丢词处理;计算相关性时可以用来加权

  • 类目识别:NLP识别(文档类目离线识别,搜索query在线识别)、召回排序将类目作为特征使用

  • 意图识别:用于召回排序时考虑别的因素

    • 实效性:考虑doc年龄
    • 地域性:考虑地点(用户定位、query提及、doc定位)
    • 用户名:识别后应检索用户名库
    • 求购意图:识别后应检索商品库
    • ….
  • 改写:解决以下问题

    • 语义匹配但文本不匹配
    • 召回doc数量太少

Recall

从文档库(数亿)中快速检索数万篇可能与 q 相关的 d

  • 文本召回:借助倒排索引,匹配q中的词和d中的词。

    q 分词,对每个词检索倒排索引,求这些集合的交集;但交集可能比较少,所以需要对 q 做丢词或者改写

  • 向量召回:将q和d分别表征为向量 x_q 和 z_d,给定x_q,查找相似度高的 z_d

    一个塔算出查询词向量,另一个塔算出物品向量然后用Ann来匹配相似度​

  • KV离线召回:对于高频查询q,离线建立q -> List 这样的key-value 索引。线上直接读取索引,获取 q 相关的文档。

Rank

排序依据:融合相关性、内容质量、时效性、CTR/CVR等多种分数。


To be continue…