news 2026/4/10 21:36:51

什么是粗排和精排

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
什么是粗排和精排

在 RAG、推荐系统、搜索引擎等场景中,粗排(Coarse-grained Ranking)精排(Fine-grained Ranking)是一套 **“先海选、再精选”** 的两级检索排序策略,核心目的是在保证检索效率的前提下,大幅提升结果的精准度。

简单类比:

  • 粗排 = 简历初筛:HR 快速扫一遍简历,把 “学历、工作年限” 达标的候选人挑出来,不纠结细节;
  • 精排 = 复试面试:对初筛通过的候选人,深入考察专业技能、项目经验,最终确定录用名单。

在 RAG 的向量检索流程中,这套策略尤其适合海量数据场景(比如向量库中有百万 / 千万级文档片段),直接全局精排会严重拖慢速度,两级排序能兼顾 “快” 和 “准”。

一、粗排:快速筛选,缩小范围

1. 核心目标

全量向量数据中,快速筛选出与问题 “可能相关” 的候选集,过滤掉明显不相关的数据,减少后续精排的计算量。

2. 技术特点
  • 计算速度快:采用轻量级模型 / 规则,不追求高精度,只做 “快速过滤”;
    • 向量检索中:常用近似最近邻(ANN)算法(比如 Milvus 的 IVF_FLAT、HNSW),牺牲一点点精度换速度;
    • 其他场景:也可以用关键词匹配、标签过滤等简单规则(比如用户问 Spark,直接过滤掉 Hadoop 相关文档)。
  • 召回率优先:粗排要保证 “不漏掉潜在相关数据”,所以筛选条件比较宽松,候选集的数量通常是最终需要结果的10~100 倍(比如要最终返回 10 条结果,粗排先选出 200 条候选)。
3. 在 RAG 中的应用示例

假设 Milvus 中有 100 万条技术文档向量,用户提问 “Spark 宽依赖和窄依赖的区别”:

  • 粗排步骤:用问题向量通过 HNSW 算法检索,快速返回200 条候选片段(耗时毫秒级),这些片段都和 Spark 相关,但可能包含部署、调优、依赖关系等不同内容。

二、精排:精准排序,择优输出

1. 核心目标

对粗排筛选出的候选集,进行精细化相关性计算,最终按 “与问题的匹配度” 排序,选出最相关的 Top-K 结果。

2. 技术特点
  • 计算精度高:采用更复杂的模型 / 算法,深入计算 “问题与候选片段” 的语义相关性;
    • 向量检索中:常用余弦相似度、点积等精准度量方式,或引入交叉编码器(Cross Encoder)—— 专门用于计算 “文本对” 的相关性得分,比单向 Embedding 更精准;
    • 其他场景:也可以用深度学习模型(如 BERT 变体),建模问题与文本的深层语义关联。
  • 效率要求低:因为候选集已经被粗排缩小,所以即使精排算法复杂,整体耗时也可控。
3. 在 RAG 中的应用示例

对粗排选出的 200 条 Spark 相关候选片段:

  • 精排步骤 1:用 Cross Encoder 计算 “用户问题 ↔ 每个候选片段” 的相关性得分(置信度);
  • 精排步骤 2:按得分从高到低排序,选出 Top-5 最相关的片段(比如直接讲解依赖关系的文档);
  • 最终:把这 5 条片段传给大模型生成答案。

三、粗排 + 精排的完整流程(RAG 场景)

用户提问 → 问题向量化 → 粗排(ANN 检索全量数据,选出 N 条候选) → 精排(Cross Encoder 计算相关性,选出 K 条 Top 结果) → 传给大模型生成答案
阶段核心算法目标速度精度
粗排近似最近邻(HNSW/IVF)、关键词过滤快速召回候选集快(毫秒级)较低
精排余弦相似度、交叉编码器(Cross Encoder)精准排序候选集中等(百毫秒级)较高

四、为什么需要两级排序?

  • 只做粗排:速度快,但结果精度低,可能混入很多弱相关数据,影响 RAG 效果;
  • 只做精排:对全量数据逐一计算精准相似度,在海量数据下速度极慢(比如千万级数据需要几秒甚至几十秒),无法满足实时检索需求;
  • 粗排 + 精排:平衡了效率精度,是海量数据场景下的最优解。

五、实操小技巧(LangChain + Milvus 实现粗排 + 精排)

  1. 粗排:用 Milvus 的 HNSW 索引做近似检索,获取候选集;
  2. 精排:用 LangChain 的CrossEncoderReranker对候选集重新排序。
from langchain.retrievers import ContextualCompressionRetriever from langchain.retrievers.document_compressors import CrossEncoderReranker from langchain_community.cross_encoders import HuggingFaceCrossEncoder from langchain_community.vectorstores import Milvus # 1. 初始化 Milvus 粗排检索器 vector_db = Milvus(...) coarse_retriever = vector_db.as_retriever(search_kwargs={"k": 200}) # 粗排召回 200 条 # 2. 初始化精排重排器(用 HuggingFace 的 Cross Encoder 模型) model = HuggingFaceCrossEncoder(model_name="BAAI/bge-reranker-base") compressor = CrossEncoderReranker(model=model, top_n=5) # 精排选 Top-5 # 3. 组合粗排+精排 compression_retriever = ContextualCompressionRetriever( base_retriever=coarse_retriever, base_compressor=compressor ) # 4. 检索 docs = compression_retriever.get_relevant_documents("Spark 宽依赖和窄依赖的区别")

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/10 12:07:20

苹果宣布专业图像编辑应用Pixelmator Pro即将登陆iPad

根据苹果关于即将推出的Apple Creator Studio的新闻稿,Pixelmator Pro将为iPad用户带来桌面级的设计体验。直观的触控操作让用户能够更轻松地在iPad上创建桌面级设计作品。全功能的图层侧边栏允许创作者使用图像、形状、文本甚至视频等多种独特元素来构建设计。智能…

作者头像 李华
网站建设 2026/4/8 7:45:36

告别文献 “乱炖”!宏智树 AI 手把手教你写出有灵魂的文献综述

作为深耕论文写作科普的教育博主,后台总能刷到这样的求助:“读了几十篇文献,写出来的综述像‘大杂烩’”“观点堆砌没逻辑,被导师批‘没找到研究缺口’”“参考文献格式错一堆,查重率还居高不下”。文献综述不是简单的…

作者头像 李华
网站建设 2026/4/7 19:39:47

0x3f第32天复习 (12;30-12:50)

子串基础前缀和思考前缀和的定义是什么和为k的子数组1min ac两数之和接雨水三数之和ac字母异位词分组ac最长连续序列ac移动零ac无重复字符的最长子串ac找到字符串中所有字母异位词ac滑动窗口最大值1min ac1min ac最小覆盖子串1min ac1min ac思考买卖股票的最佳时机1min ac1min …

作者头像 李华
网站建设 2026/4/8 22:11:30

大模型算法社招面试全攻略:技术要点+简历优化+代码题解析

本文作者分享了从国企跳槽至大模型算法领域社招的完整经历。详细介绍了职业规划考量、简历准备技巧,以及大模型相关技术面试要点,包括SFT、RAG、Agent等热门技术方向。同时提供了常见代码题考察情况和业务方向分析,为想进入大模型领域的求职者…

作者头像 李华
网站建设 2026/4/8 7:39:27

算法题 增减字符串匹配

942. 增减字符串匹配 问题描述 给定只含 "I"(增加)和 "D"(减少)的字符串 s,令 n s.length。 根据 s 构造一个排列 perm(长度为 n 1),使得对于所有的 i&#x…

作者头像 李华
网站建设 2026/4/9 14:47:07

基于Django的蔬菜批发管理系统设计与实现

基于Django的蔬菜批发管理系统设计与实现 一、系统开发背景与意义 蔬菜批发行业作为农产品流通的关键环节,长期面临供应链效率低、损耗率高、交易流程繁琐等问题。传统模式下,供应商信息分散导致采购比价困难,库存依赖人工盘点易造成积压或缺…

作者头像 李华