(五)基于文本的QA问答系统——corss-encoder方法

预训练模型语义相似性计算(六)--cross-encoder 前面讲的各个语义相似性计算的模型,基本都是双塔的结构。双塔结构主要优点是相似性计算快速,这里指的快速不是模型单个数据的推理速度,而是在大量问句场景下的计算,比如相似问句的召回场景。因为双塔模型得到的其实是单个问句的表示,相似性的计算只是在最后做了简单的计算,最耗时的问句表示操作可以离线完成。而cross-encoder是在模型输入时进行了拼接输入,这样两个问句进行更深层的交互,相似句任务直接在模型中完成,而不单单是问句的语义表示模型。所以cross-encoder的相似计算效果也要明显优于双... 阅读详情

cross-encoder方法

概述

该方法基于GPT模型,利用doc和query构造prompt。将prompt作为模型输入,利用query对应位置的输出结果计算log_softmax,该值可以反映输入词对应输出的预测概率,我们关注query中含有的词汇,对输出中对应query中含有的词汇进行求和,该值可以反映该doc和query相关的程度。

由于doc和query共同编码,因此对于语义的理解程度更好。

初始化模型并构造prompt

tokenizer = AutoTokenizer.from_pretrained("Muennighoff/SGPT-125M-weightedmean-msmarco-specb-bitfit",cache_dir = './SGPT-125M-weightedmean-msmarco-specb-bitfit')
model = AutoModelForCausalLM.from_pretrained("Muennighoff/SGPT-125M-weightedmean-msmarco-specb-bitfit",cache_dir = './SGPT-125M-weightedmean-msmarco-specb-bitfit')

prompt = 'Documents are searched to find matches with the same content.\nThe document "{}" is a good search result for "'

构造上下文并编码

context = prompt.format(doc)
# context_len = len(re.split('[,. ]', context))
context_enc = tokenizer.encode(context, add_special_tokens=False)

对query编码

这里对query编码是因为最后需要计算输出中对应于query中词的log_softmax的sum。

continuation_enc = tokenizer.encode(query, add_special_tokens=False)

初始化model inpt并计算概率

 model_input = torch.tensor(context_enc + continuation_enc[:-1])
continuation_len = len(continuation_enc)
input_len, = model_input.shape

# [seq_len] -> [seq_len, vocab]
logprobs = torch.nn.functional.log_softmax(model(model_input)[0], dim=-1).cpu()
# [seq_len, vocab] -> [continuation_len, vocab]
logprobs = logprobs[input_len - continuation_len:]
# 获取query中对应的词的输出,continuation_enc
# Gather the log probabilities of the continuation tokens -> [continuation_len]
logprobs = torch.gather(logprobs, 1, torch.tensor(continuation_enc).unsqueeze(-1)).squeeze(-1)
score = torch.sum(logprobs)

小结

经过测试,该方法的性能表现优于bi-encoder,但是速度明显较慢。

Cross Encoder 架构类型 是一种用于处理文本对(text pair)任务的深度学习模型架构,常用于Rerank(重排序)问答匹配自然语言推理(NLI)等任务。与双塔模型(Dual Encoder)不同,Cross Encoder 会将两个输入(通常是 Query 和 Document)拼接在一起输入模型,进行联合编码和语义交互。项目表现检索精度✅ 非常高(最强之一)推理速度❌ 慢,随候选数量线性增长并行化能力✅ 支持 GPU 批量处理优化是否可离线预计算❌ 否,必须实时对每个 query-doc pair 推理。 阅读详情

相关推荐

Bi-Encoder 与 Cross-Encoder 全解析:原理、对比与实战模型推荐

Bi-Encoder 是一种将 Query 和 Document 分别编码为向量的架构,通常用于大规模语义检索任务。Cross-Encoder 将 Query 和 Document 拼接后,一起输入到一个 Transformer 模型中,进行整体编码与匹配打分。应用场景推荐使用方式大规模语义检索Bi-Encoder + 向量数据库小规模高质量排序高性能企业RAG系统。

Harry的博客 3520

Cross-Encoder实现文本匹配(重排序模型)

本文介绍了CrossEncoder重排序模型的原理和代码实践。

日积月累,天道酬勤 4824

别再只用双塔模型了!聊聊Cross-Encoder在语义匹配排序阶段的实战效果(附Hugging Face模型实测对比)

本文深入探讨了Cross-Encoder在语义匹配排序阶段的实战效果,对比了其与双塔模型的优劣,并提供了Hugging Face模型实测数据。通过分析预训练模型在语义相似性计算中的应用,展示了Cross-Encoder在提升匹配精度方面的显著优势,适合智能客服、搜索引擎等场景的精排需求。

weixin_33737774的博客 422

【AI 大模型】RAG 检索增强生成 ⑧ ( 文本相似度排序 | Bi-Encoder 双编码器 | Cross-Encoder 交叉编码器 )

一、文本相似度排序 1、向量数据库查询弊端 2、二次排序的必要性 2、相似度排序模型 3、Bi-Encoder 双编码器 4、Cross-Encoder 交叉编码器 5、结合使用 6、Bi-Encoder 双编码器 与 Cross-Encoder 交叉编码器 对比 二、Bi-Encoder 双编码器 用法实例 三、Cross-Encoder 交叉编码器 用法实例 1、Cross-Encoder 交叉编码器 实现原理 4、Cross-Encoder 交叉编码器 代码示例

让 学习 成为一种 习惯 ( 韩曙亮 の 技术博客 ) 1万+

别再只用双塔模型了!聊聊Cross-Encoder在语义匹配排序中的实战效果(附Hugging Face模型对比)

本文深入探讨了Cross-Encoder在语义匹配排序中的实战效果,对比了其与双塔模型的优劣。通过实际案例分析和技术细节,展示了Cross-Encoder在搜索系统精排、推荐系统冷启动优化和智能客服问答匹配中的显著优势。文章还提供了模型选型建议和工程化落地方案,帮助开发者在实际业务中有效应用Cross-Encoder技术。

weixin_29181861的博客 411

Bi-Encoder vs Cross-Encoder

维度Bi-Encoder编码方式查询和文档独立编码查询和文档联合编码计算效率高,适合大规模检索低,适合小规模精细排序语义交互较弱强,捕捉细粒度上下文关系适用场景大规模语义搜索、实时响应精准排序、重排序、语义匹配计算资源需求低高结合实际需求,合理选择或结合使用Bi-Encoder和Cross-Encoder,能够在效率与准确率之间取得最佳平衡。以上内容基于多篇权威资料总结整理,并结合官方示例代码进行演示,便于理解和应用。

Turbo.AI,专注AI工程化 1911

Dual-Cross-Encoder:面向稠密向量检索的Query深度交互的文档多视角表征

每天给你送来NLP技术干货!来自:NLP工作站写在前面大家好,我是刘聪NLP。今天给大家带来一篇北航和微软出品的稠密向量检索模型Dual-Cross-Encoder,结合Query生成和对比学习技术,将文档与生成的不同伪query进行深度交互学习构建文档的不同视角的表征向量,再与Query向量进行稠密向量检索。论文名为《Learning Diverse Document Representatio...

zenRRan的博客 1319

高效信息检索:使用Cross Encoder进行重排序

集成Cross Encoder可以显著提升信息检索的精度。开发者可以根据需要在不同平台上部署模型,如AWS SageMaker。Hugging Face Cross-Encoders 文档AWS SageMaker 用户指南。

afTFODguAKBF的博客 1087

Bi-Encoder 和 Cross-Encoder

可以使用一个两阶段的查找流水线,首先使用 bi-encoder 快速高效的检索一个结果候选列表;然后使用 cross encoder 去重排序这些最相关的结果。多级搜索管道可受益于 bi-encoder 的高效检索方法和 cross-encoder 的高精确度,从而在大规模数据集上进行有效搜索。结合 Bi-Encoder 和 Cros-Encoder 来提高 RAG 流水线。

weixin_46034279的博客 1072

Cross-Encoder(交叉编码器)和 Bi-Encoder(双编码器)

摘要: Cross-Encoder(交叉编码器)和Bi-Encoder(双编码器)是NLP中处理文本匹配的两种模型。Bi-Encoder通过独立编码双文本生成向量后计算相似度,适合大规模检索(高效但精度较低);Cross-Encoder联合编码双文本,利用交叉注意力捕获细粒度交互,精度高但计算成本大,适用于精细匹配。实际应用中常结合两者:先用Bi-Encoder快速筛选候选,再用Cross-Encoder重排序以平衡效率与精度。

Cachel Wood的博客 730

RAG应用:交叉编码器(cross-encoder)和重排序(rerank)

Sentence Transformers提供两种模型类型:Bi-encoders和Cross-encoders。Bi-encoders适合快速检索大量句子,通过独立编码实现高效搜索;Cross-encoders则通过联合编码句子对获得更高精度,但计算复杂度随数据量平方级增长,适合小规模分类或重排序任务。实际应用中可结合两者优势,先用Bi-encoder粗筛候选,再用Cross-encoder精排。文中以AI论文检索为例,展示了这种混合方案在处理10万级语料时的有效性,并提供了交叉编码器在QA和语义相似度任

Cachel Wood的博客 1050

sentence-transformers交叉编码器:CrossEncoder架构与排序任务

### 1.1 什么是CrossEncoder? 交叉编码器(CrossEncoder)是一种特殊的神经网络架构,专门设计用于**文本对匹配**和**排序任务**。与生成固定长度嵌入向量的双编码器(Bi-Encoder)不同,CrossEncoder直接将两个文本作为输入,通过Transformer模型进行深度交叉注意力计算,最终输出一个表示文本对相关性的分数。 ```mermaid flow...

gitblog_00718的博客 1671

【人工智能时代】-RAG重排哪家强?Cross-Encoder VS LLM Reranker

重排模型显著提升了信息检索(IR)系统的质量。传统重排方法依赖于手工定义的特征和特定的学习排序损失函数。随着BERT等模型的出现,交叉编码器(Cross-Encoder )成为了标准的重排工具。近年,大型语言模型(LLMs)也被证明是有效的零样本(zero-shot)重排器。因此,做出了一项深入研究:在重新排列有效的的背景下,比较了。后半句的结论好像有点不对,有兴趣的小伙伴可以看下文的实验对比数据分析下。

xiaoli8748的专栏 793

RAG 进阶:为什么有了向量检索,还必须引入 Cross-Encoder 重排?

RAG系统中,向量检索虽快但精度不足,而Cross-Encoder能实现更精准的语义匹配。本文解析了二者的核心差异:Embedding独立编码导致语义理解局限,而Cross-Encoder通过联合编码实现深度交互。企业级RAG采用"先粗召回再精排序"架构,先用向量检索快速筛选Top候选,再用Cross-Encoder精细重排,既保证效率又提升答案质量。这种组合能有效减少大模型幻觉,是构建可靠RAG系统的关键。文中还提供了Python代码示例,展示如何实现两阶段检索流程。

让技术为我所用 501

opencv去除印章痕迹

今天看到一个很有意思的程序,就是去除票据上的红色印章,觉得很有意思,就把它抄过来记录一下,同时自己也开了一下脑洞。 原来的程序来自:https://www.cnblogs.com/skyfsm/p/7638301.html 可以看到图像效果很不错,下面是源码实现: #include <iostream> #include <opencv2/imgproc/imgpro...

zeng_haoyu的博客 7957

TSMaster如何用珠海创芯CAN卡实现高效CAN通信(附完整驱动安装指南)

本文详细介绍了如何使用TSMaster软件与珠海创芯CAN卡实现高效CAN通信,包括驱动安装、系统配置、ControlCAN.dll替换及TSMaster集成配置等关键步骤。通过实战指南和故障排除技巧,帮助工程师快速搭建稳定可靠的CAN通信测试环境,适用于汽车电子和工业控制等领域。

weixin_29201859的博客 480

使用Cross Encoder实现高效的文档重排序:提升检索质量的实用指南

Cross Encoder重排序是提升检索质量的强大工具。通过结合快速的初始检索和精确的重排序,我们可以显著提高搜索结果的相关性。Hugging Face Cross-Encoders文档LangChain文档Sentence Transformers库。

ppoojjj的博客 1570

汇川PLC用户程序结构详解:如何像搭积木一样配置多任务?附EtherCAT最佳实践

本文深入解析汇川PLC用户程序结构,阐述如何像搭积木一样,通过POU、FB、FC等模块化组件高效配置多任务。文章重点结合EtherCAT通讯场景,分享了任务周期、优先级设置的最佳实践与关键避坑指南,帮助工程师构建稳定、高效的运动控制系统。

weixin_29184075的博客 541

RAG系统文本检索优化:Cross-Encoder与Bi-Encoder架构技术对比与选择指南

本文将深入分析这两种编码架构的技术原理、数学基础、实现流程以及各自的优势与局限性,并探讨混合架构的应用策略。

deephub 1490

[数字电路]用与非门实现BCD译码器驱动数码管

Hello,大家好。这里是xdd_core,好久不见。今天来和大家聊聊大一数字电路课程的一个课设。# Key word:BCD Decoder,Proteus8.x,NAND Gate,Digital Circuit# 流程:Proteus8.x仿真电路并绘制PCB导出Gerber文件打样,最终实物验证。# 以下为我对这个课设的report(里面对整个设计做了详细介绍,并设计了完整的验证电路) 感谢观看,仅供参考,未经作者允许,禁止转载/抄袭,本文已上传至数据库,查重必挂QAQ BCD to 7-Segme

xddcore的博客 6012

【WRF工具】WRF 模型输出可视化工具 RIP4

【WRF工具】WRF 模型输出可视化工具 RIP4

WW、forever的博客 1594

检索模型cross-encoder笔记

检索模型cross-encoder笔记

enthan809882的博客 127

Serial RapidIO Gen2 IP 说明(三)

前言 继续接着上篇文章,介绍Serial RapidIO Gen2 IP 的具体端口信息。 一、端口描述 1、缓冲设计接口 2、物理层接口 参考说明 【1】Serial RapidIO Gen2 v4.1https://china.xilinx.com/content/dam/xilinx/support/documentation/ip_documentation/srio_gen2/v4_1/pg007_srio_gen2.pdf ...

记录所学,分享知识,结识挚友 1320

ColBERT和ColBERTv2:兼具Bi-encoder和cross-encoder优势的多向量排序模型

ColBERT是一种多向量排序模型,因为引入了延迟交互机制(late interaction architecture)相比与cross-encoder效率提升了很多。ColBERTv2针对ColBERT的缺点进一步优化了性能和效率。在RAG大热的这一年,ColBERT也引起了一些关注。

beingstrong的博客 6986

人工蜂群优化算法(ABC)详解:原理、实现与应用

人工蜂群算法(Artificial Bee Colony, ABC)是Karaboga于2005年提出的一种群体智能优化算法,其灵感来源于蜜蜂群体在自然界中高效的采蜜行为。该算法通过模拟雇佣蜂、观察蜂和侦察蜂三种角色的分工协作来寻找最优解。在ABC算法中,每个潜在的解决方案被视为一个“食物源”,其质量由适应度函数评估。雇佣蜂负责在已知优质食物源附近进行局部开采;观察蜂根据雇佣蜂分享的信息,以一定概率选择并跟进优质食物源;侦察蜂则随机探索新区域,防止种群陷入局部最优。

qq_42212808的博客 393

3步!Spring Boot+OCR引擎秒提身份证/营业执照?手把手教你从零实现!

OCR技术革新文档识别效率 本文演示了如何利用Spring Boot+Tesseract OCR+OpenCV构建自动化文档识别系统。相比传统人工录入,OCR技术可实现: 5秒极速提取身份证/营业执照关键信息 精准识别中文文本(准确率90%+) 正则过滤自动匹配结构化数据 技术要点: OpenCV图像预处理(灰度化+二值化) Tesseract多语言OCR识别 正则表达式精准提取证件号码 效率提升达100倍,错误率降低90%,适用于金融、政务等需要批量处理证件的场景。

java专栏 904
上一篇: (四)基于文本的QA问答系统——biencoder方法
下一篇: (六)基于文本的QA问答系统——前后端介绍
Simonsdu
博客等级 码龄7年 4粉丝 25原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值