搜索系统

  1. Stage 1: Retrieval (快速召回)
    • 方法:使用传统算法(如 BM25)或Bi-encoder(双编码器)。
    • Bi-encoder:分别独立地将 query 和所有 documents 编码成向量,并存储在向量数据库中。查询时,只需计算 query 向量与所有 document 向量的相似度(如余弦相似度),这个过程极快。
    • 目标:从数百万甚至数十亿的文档库中,快速捞回几百个相关的候选者(“宁可错杀,不可放过”)。
  2. Stage 2: Reranking (精准重排)
    • 方法:使用 Cross-encoder。
    • 过程:对第一阶段返回的这几百个候选文档,使用 Cross-encoder 逐一与 query 计算精准的相关性分数。
    • 目标:根据 Cross-encoder 的分数对这些候选文档进行重新排序,将最相关的结果排在最前面,然后呈现给用户。
特性Cross-encoder (交叉编码器)Bi-encoder (双编码器)
角色定位Reranker (重排序器),专家评审员Retriever (召回器),海选面试官
工作方式(Query, Doc) 一起处理QueryDoc 分开处理
速度慢 (每次查询都要实时计算)快 (文档向量可预计算和索引)
准确度高 (充分的词级别交互)中等 (仅通过向量的最终表示比较)
典型架构model([CLS] Q [SEP] D [SEP]) -> scorescore = cos_sim(model(Q), model(D))
使用场景第二阶段:重排序第一阶段:大规模召回