返回博客

向量搜索如何找到关键词之外的候选人

向量搜索如何找到关键词之外的候选人

招聘人员搜索“推荐系统”时,人才库里可能有人写的是“个性化排序”“召回与精排”或“点击率预估”。关键词检索只有在查询和简历共享词汇时才容易命中;向量搜索试图把不同表达映射到相近语义位置,从而发现词面不重合的候选人。

它解决的是召回盲区,不是自动判断适配。向量距离可以表示文本相关,却不知道证书是否必须、年限是否满足,也不会天然区分“学过”与“负责生产系统”。

稠密向量让语义可以被近邻搜索

Sentence-BERT 将句子编码为可直接比较的向量,使大规模语义相似搜索成为可能。DPR 用双编码器分别表示问题和段落,在开放域问答中展示了稠密检索的召回能力。

映射到人才库,职位要求或搜索查询是一侧,候选人的工作经历、项目和技能证据是另一侧。候选向量可以离线建立索引,查询到来时快速返回近邻。

人才搜索应按经历片段召回,再聚合到候选人,而不是压缩整份简历
人才搜索应按经历片段召回,再聚合到候选人,而不是压缩整份简历

整份简历只做一个向量往往会稀释关键信息。一段高度相关的项目可能被教育、兴趣和旧经历平均掉。更合适的是按工作经历、项目或技能证据切片检索,再聚合到候选人,并保留命中的原文片段。

关键词仍然不可替代

向量模型可能把语义相关但不等价的内容拉近,例如“了解云平台”与“负责 Kubernetes 生产集群”。对精确证书、公司、地点、产品版本和否定表达,稀疏关键词通常更可控。

混合检索同时运行 BM25 等稀疏检索和稠密向量召回,再融合排名。它既保留精确命中,也补充同义表达。SPLADE 进一步学习词汇表维度上的稀疏表示,将语义扩展与倒排索引结合。

硬约束不应被相似度覆盖。工作地点、有效资质和明确必需条件应作为过滤或独立状态,而不是与语义分数加权后“抵消”。

迟交互模型在效率与精度之间折中

单向量双塔速度快,却把整段文本压成一个表示;交叉编码器逐词比较更精细,但无法对全库逐一运行。ColBERT 为查询和文档保留多个 token 级向量,在检索后期进行 MaxSim 迟交互,试图兼顾预计算与细粒度匹配。

人才搜索可以采用多阶段架构:结构化条件先过滤,关键词与稠密向量并行召回,迟交互或交叉编码器重排前几百条,最后按候选人合并经历证据。

混合人才搜索由过滤、双路召回、重排和证据聚合组成
混合人才搜索由过滤、双路召回、重排和证据聚合组成

查询理解决定了搜索上限

用户输入“找做过跨境支付风控的高级算法工程师”,系统应拆出岗位层级、领域、职责和技能,而不是只生成一个句向量。结构化部分用于过滤或分面,语义部分用于召回相关经历。

查询扩展也要可见、可编辑。模型可建议“反欺诈、交易风险、异常检测”等相关概念,但招聘人员应能删除错误扩展。否则一次看似聪明的扩词会悄悄改变岗位要求。

怎样判断向量搜索真的有用

离线测试要包含两类困难样本:词不同但相关,验证语义增益;词相同但含义不同,验证误召回控制。召回层看 Recall@K,排序层看 MRR 或 NDCG,结果还需按岗位、语言和资历切片。

线上更重要的是有效候选覆盖、查询改写次数、证据点击与人工保存率。点击不是天然正确标签,热门候选会因曝光继续获得点击,因此实验需要控制位置偏差,并保留人工判断的独立样本。

向量搜索最有价值的地方,是把招聘人员可能想不到的表达带回结果集。最终系统仍应显示为何命中、原文在哪里,并让硬约束与人工判断拥有清楚位置。

资料来源

返回博客申请试用