Staff AI Engineer · Phone AI System Design

LinkedIn 自然语言搜索:从 Keyword 引擎迁移且缺标注数据

保留旧倒排与结构化过滤,解析自然语言意图、混合召回和重排;用日志弱监督冷启动并控制偏差。

题目重点:保留旧倒排与结构化过滤,解析自然语言意图、混合召回和重排;用日志弱监督冷启动并控制偏差。

题意与假设

这道练习题保留了面经中值得训练的核心约束,并将需要澄清的条件单独列出。现场拿到变体时,先和面试官确认这些条件。

  • 以招聘/人员搜索作说明性场景,但题目只说现有 keyword search;实际索引对象须当轮确认。
  • 训练版假设旧搜索引擎至少提供倒排索引、结构化过滤与可回放查询日志;若日志不可用,需先构造人工标注集和受控合成查询,不得虚构现成训练数据。

解题路线

  1. 保留旧系统作为可回退的 lexical 召回路径。自然语言解析层抽取职位、技能、地点、资历与意图,生成结构化过滤和关键词改写;对歧义条件保留可解释的候选解释,而非强行一刀切。
  2. 新增语义召回可用文本向量或查询扩展,与 BM25/过滤候选混合,先满足权限和硬条件,再用轻量 ranker/交叉编码器重排;为每个结果保存匹配证据,避免模型凭空解释。
  3. 无标注冷启动从旧搜索点击、改写、停留与后续行动获取弱标签,但展示位置、历史关键词习惯和流量选择会造成偏差。用人工双人标注覆盖高频与长尾意图,做离线 NDCG/Recall@K 及无结果率,再小流量 A/B 看任务完成和低质量点击。
  4. 若用 LLM 生成 query rewriting/训练样本,设置 schema 约束、去重、事实校验和人工抽检;不能让模型编造用户技能或绕过权限过滤。上线按延迟预算分层缓存,模型超时回退旧搜索。

手动走一遍

训练查询‘在纽约做过分布式指标平台的后端工程师’:解析地点 NYC、领域 metrics platform、岗位 backend,先以旧索引和硬过滤取候选,再语义召回‘observability/time-series’相关描述,重排时引用简历片段。没有新训练集时先用现有查询改写日志形成弱对,再人工检查近义词误扩展。

规模与取舍

总延迟约解析+两路召回+重排;若每路取 K 候选、重排 M 条,则排序成本随 M 增长,M≪全索引 N。向量索引容量约 O(Nd),d 为向量维度,具体召回/延迟与索引类型及过滤选择性有关;题目无规模数字,不填固定 QPS。

易错点与追问

容易失分的边界

  • 一开始替换旧 keyword 引擎,失去可回退路径和精确过滤。
  • 把旧点击当无偏相关标签。
  • 让语义结果越过硬性地点/权限限制。
  • 只优化离线相关度,忽略无结果率、任务成功与延迟。
  • 说没有数据却凭空假设大量人工标注。

继续深挖

  • 旧日志很少或没有点击,第一批评测集怎样建?
  • 用户说‘不要销售’等否定约束如何保证?
  • 语义召回命中但旧关键词不命中时怎样解释?
  • 模型延迟超标时如何降级?
✓已复制微信号!