Embedding模型与Rerank模型

随着大语言模型(LLM)与自然语言处理技术的发展,我们正在进入一个“从关键词匹配到语义理解”的新时代。在传统的信息检索系统中,TF-IDF、BM25 等基于词频和倒排索引的算法长期扮演主角,但它们往往无法理解语义上的相似性,也容易遗漏那些表达方式不同但含义相近的内容。

为了弥补这一缺陷,近年来两类基于深度学习的检索模型体系逐渐成为主流:

  1. Embedding 模型(向量检索):利用预训练语言模型将文本编码为稠密向量,实现“语义级别”的高效初筛;

  2. Rerank 模型(重排序):基于交叉编码器结构,对初筛结果进行细致语义打分,提升最终排序的精度。

这套“粗排 + 精排”的双阶段架构已经广泛应用于搜索引擎、问答系统、智能客服、法律检索、推荐系统等领域,成为构建高性能语义检索系统的核心基础。

本节将分别介绍这两类模型的工作机制、代表模型、应用场景、优劣对比及组合方式,帮助你全面理解它们在现代信息检索中的角色与价值。

1. Embedding模型(向量检索模型)

定义:

Embedding 模型通过将自然语言文本(如句子、段落、文档)编码为稠密的向量表示,使得语义相似的文本在高维向量空间中距离更近。常采用“双塔结构(dual encoder)”,分别对查询(Query)和文档(Document)进行独立编码,然后通过向量相似度(如点积、余弦相似度)计算它们的匹配程度。

应用场景:

  • 检索阶段(Retrieval Stage): 用于从海量文档中快速筛选出与用户查询相关的Top-K候选文档,常作为多阶段检索系统的第一步。

  • 向量数据库搜索: 搭配如 FAISS、Milvus、Weaviate、Qdrant、Elasticsearch(dense vector plugin) 等工具进行高效近似最近邻(ANN)搜索。

  • 多模态检索: 通过对文本、图片、音频等进行统一向量编码,实现跨模态检索(如 CLIP / GIT)。

代表模型:

  • Sentence-BERT / SBERT: 经典句向量模型,基于BERT微调,提升语义相似度任务性能。

  • BGE(BAAI General Embedding): 智源研究院开源的中文向量模型,在语义检索、排序任务上表现优秀。

  • E5 / E5-mistral: 多语言语义检索模型,训练目标为文本对齐、问答、分类等统一场景。

  • OpenAI Embedding(text-embedding-ada-002): 商业化API接口广泛用于语义索引。

  • Cohere、文心一言 Embedding、ChatGLM Embedding: 各大厂商/机构提供的定制化文本向量服务。

  • ColBERT(轻量双塔模式): 可用于兼顾向量召回与局部匹配的模型。

优点:

  • 召回效率高: 可实现毫秒级大规模向量检索,适用于百万到亿级规模的文档库。

  • 支持ANN(Approximate Nearest Neighbor): 利用向量索引技术(如HNSW、IVF-PQ等)大幅加速检索速度。

  • 易于部署: 模型前向计算速度快,编码后可缓存文档向量,实现离线或增量更新。

缺点:

  • 缺乏交互: Query 与文档独立编码,无法建模二者之间的上下文细节、语法关系等。

  • 易被词面相近但语义偏差的文本误召回: 如“2024年GDP预测” ≠ “2024年GDP数据”。

2. Rerank模型(重排序模型)

定义:

Rerank 模型用于对初步召回的 Top-K 候选文档与查询逐对计算相关性打分(Query-Document Pairwise Scoring),再依据得分进行精确排序。通常基于“交叉编码器(Cross-Encoder)”结构,将 Query 与每条候选文档拼接后整体送入模型处理,从而建模细粒度交互。

应用场景:

  • 重排序阶段(Reranking Stage): 提升召回结果的相关性精度,过滤掉语义模糊但无关的候选项。

  • 问答系统、智能客服、法律检索、学术搜索 等对匹配质量要求极高的任务中被广泛使用。

  • 用户侧展示优化: 将最相关或最有价值的文档排到前面,提高用户点击率和满意度。

代表模型:

  • BERT + MLP: 经典交叉编码结构,输入为 [CLS] Query [SEP] Doc [SEP],输出 [CLS] 向量接 MLP 得分。

  • MonoT5: 基于T5模型的单向重排序器,通过生成“Relevant”/“Not Relevant”或打分文本评估相关性。

  • RocketQA / RocketQA-v2: 百度提出的多阶段训练+数据增强策略提升BERT检索表现。

  • bge-reranker: BGE系列中的高性能交叉重排模型,适合中文任务。

  • ColBERT(late interaction模式): 模糊嵌入交互设计,兼顾效率与语义交互。

优点:

  • 精度高: 能够捕捉词级别、句法级别的精细匹配,效果接近人工标注。

  • 更贴近人类判断逻辑: 特别适合那些依赖事实准确性与语义推理的检索任务。

  • 支持定制打分策略: 可融合多种特征(位置、TF-IDF、元信息)进行学习。

缺点:

  • 计算成本高: 每条 Query-Doc 对都需一次前向计算,不适合大规模初检阶段。

  • 扩展性差: 仅能处理少量候选(如Top-50/Top-100),否则效率严重下降。

常见组合方式(Two-Stage 检索架构)

在实际应用中,Embedding 模型和 Rerank 模型常被组合使用,形成“两阶段检索系统”,兼顾效率与精度:

QueryEmbedding 模型编码向量数据库召回 Top-KRerank 模型精排最终排序 Top-N 结果

例如:

  • 用户查询:“2024年中国GDP是多少?

  • Embedding 模型 召回包含关键词“中国、GDP、2024”等相关但未必准确的多个候选文档。

  • Rerank 模型 对这些文档与原始Query进行逐对匹配,识别出真正包含“最新GDP统计数据”的那一条,并将其排在首位。

总结对比表:

特性

Embedding模型

Rerank模型

模型结构

双塔(Dual Encoder)

交叉编码器(Cross Encoder)

匹配方式

向量相似度

语义交互打分

优点

快速、高效、易扩展

精准、细粒度语义判断

缺点

缺乏交互、误召回率高

慢、计算开销大

典型用途

初筛召回

精排排序

可扩展性

支持百万级文档库

仅适合少量候选精排

1. 内容概要 本项目是一个支持科学函数的命令行计算器,兼容 C++98 标准。它实现了中缀表达式词法分析、后缀表达式转换求值,支持常见数学运算(如幂、三角函数、对数等)括号优先级解析。程序还提供了角度版三角函数、角度弧度互转功能,并支持函数调试输出函数演示模式。 2. 适用人群 * C++ 初中级学习者,特别是希望深入理解表达式求值机制者 * 需要一个可扩展的计算引擎的项目开发者 * 想通过项目实践词法分析、调度场算法、数学函数封装的开发者 * 高校学生课程设计、编译原理实践者 3. 使用场景及目标 * 实现中缀表达式的完整求解器,支持函数嵌套、优先级结合性处理 * 提供角度弧度版本的三角函数,以适应不同输入偏好 * 演示中缀转后缀过程,辅助编程教育算法教学 * 提供科学函数辅助计算,如 `log`, `sqrt`, `abs`, `exp`, `ceil`, `floor` 等 4. 其他说明 * 支持函数:sin, cos, tan(弧度);sind, cosd, tand(角度) * 支持函数嵌套,如 `sin(deg2rad(30))` * 支持操作符:+, -, \*, /, ^, \*\*(幂运算)括号优先级 * 所有函数均通过 map 注册,方便扩展自定义 * 输入 `help` 查看支持函数,`demo` 观看转后缀过程,`quit` 退出程序 * 提示用户避免使用 `°` 符号,推荐使用角度函数代替 * 可通过 `g++ calculator.cpp -o calculator -lm` 编译(需链接数学库)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值