(三)基于文本的QA问答系统——SGPT:GPT Sentence Embeddings for Semantic Search解读

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

SGPT:GPT Sentence Embeddings for Semantic Search解读

概述

该方法基于如下论文:

[2202.08904] SGPT: GPT Sentence Embeddings for Semantic Search (arxiv.org)
该方法用于基于上下文信息对使用BM2.5算法获得的检索结果进行重排序。

先序知识

预训练模型

预训练在计算机视觉领域早已应用,NLP近些年随着BERT的出现也进入了预训练模型时代。

预训练模型优势:

  1. 在庞大的无标注数据上进行预训练可以获取更通用的语言表示,并有利于下游任务;
  2. 为模型提供了一个更好的初始化参数,在目标任务上具备更好的泛化性能、并加速收敛;
  3. 是一种有效的正则化手段,避免在小数据集上过拟合(一个随机初始化的深层模型容易对小数据集过拟合)

两大范式

浅层词嵌入

学习上下文独立的静态词嵌入,应用到下游任务时需要重新训练,例如word2vec。

预训练编码器

通过一个预训练的编码器能够输出上下文相关的词向量,解决一词多义的问题。这一类预训练编码器输出的向量称之为「上下文相关的词嵌入」。如GPT、BERT。

GPT

由于本文中提到的方法以GPT作为预训练模型,因此将着重介绍。

GPT是“Generative Pre-Training”的简称,从名字上就可以看出其是一个生成式的预训练模型。与ELMo不同的是,其采用多层Transformer Decoder作为特征抽取器,多项研究也表明,Transformer的特征抽取能力是强于LSTM的。

Prompt

Prompt是一种为下游任务设计的”模板“,它可以帮助预训练模型回忆起自己在预训练时学习到的内容。pre-train、prompt、predict带来了nlp的第二次巨变。

比如,在该问题中我们可以选用这样的prompt:”我们的目的是找到与查询相关的文档,查询{query}最相关的文档是{doc}“。

如何设计和选择prompt会影响最终的性能表现。

文章解读

作者在本文中提出了两种计算query和doc相关度的方法,Bi-Encorder和CrossEncoder。这两种方法都是基于GPT预训练模型。

SGPT Cross-Encoder Asymmetric Search

在Cross-Encoder中,query和doc一起作为输入,模型输出可以衡量这种组合中语义的合理性。优点是可以充分利用大规模语料库中的语义信息,缺点在于对于不同doc,query需要重复被编码。

查询的目的是找到最相关的文档,即求解在这里插入图片描述

从而有在这里插入图片描述

P(q)对于所有文档而言是一个常数,因此可以不考虑,而P(d)我们认为在语料库中近似相似,因此可以通过P(q|d)计算概率。

在实际使用时,作者使用prompt来计算P(q|d),即求解:在这里插入图片描述

其中qi代表query的token,pi代表prompt的token。

最后使用,其中out_i代表query token所对应的输出,因为对于所有文档而言,query是相等长度的,因此无需进行归一化。
∑ l o g ( s o f t m a x ( o u t i ) ) \sum{log(softmax(out_i))} logsoftmaxouti
该值一定是负数,其越接近0,代表query和doc相关度越高。

SGPT Bi-Encoder Asymmetric Search

在bi-Encoder中,query和doc被分别输入,然后计算embedding编码的余弦相似度。这种方法query只需编码一次,但是分别编码的query和doc不能充分利用大规模语料库的信息。

在Bert模型中,句子的编码常常使用[cls]符对应位置的编码来替代,这是因为Bert可以看到双向信息,即便[cls]在句子开始处,只要设置恰当的训练任务就可以编码语义信息。然而GPT模型只能看到单向的信息,因此常见的做法是使用最后一个token的编码和编码整个句子的信息。

然而,和单个token的编码相比,平均池化(mean-pooling)通常会有更好的表现,在本文中作者针对GPT模型提出了一种加权池化的方法。

在这里插入图片描述

其中hi代表第i个token的隐藏层输出。从上述公式中可以看出,越靠后的token权重越大。作者指出,由于GPT只能单向编码,因此越靠后的token蕴含越多的语义信息。

存在的问题

1、中文预训练GPT模型十分匮乏。

目前想到的解决方法包括:

1、使用bert代替GPT,但不期待其效果理想,因为GPT是为文本生成任务设计的语言模型,而bert用于文本分类和fill mask的任务,对于Cross-Encoder需要表征query和doc搭配的合理性,显然用于文本生成的GPT更胜一筹。

2、将中文翻译成英文,然后作为模型输入。

2、怎样算是一个好的Prompt

Prompt的设计会极大的影响最终效果。对于一个Prompt可能出现在A任务上的性能好,但在B任务上表现极差的情况。比较直观的策略是设计几个不同的Prompt然后对结果进行平均。

android gpt分区大小,[MTK] 如何确认各个分区起始偏移与大小 [MTK] 如何确认各个分区起始偏移与大小无标签 2020-05-15阅读:2972分区表中(partition_table_MTXXXX_emmc.csv)中包含各分区预设大小信息,但是(1)ptgen工具在根据分区表生成scatter文件中,会根据平台配置文件、align需求等进行调整,导致scatter文件中部分分区大小与预设大小可能不一致。(2)为达到usedata分区自适应存储器(如e... 阅读详情

相关推荐

论文综述:问答系统综述

PS:这是我的文献阅读大作业~ 文章目录问答系统综述报告1. 摘要2. 引言3. 基于文本的问答3.1 数据集与评价指标3.1.1 数据集3.1.2 评价指标3.2 基于文本的问答的主要框架3.4 从深度学习角度的代表工作3.5 基于文本的问答小结4. 基于知识库的问答4.1 数据集4.2 基于知识库问答的基本框架4.3 基于语义解析的代表工作4.4 基于信息检索的代表工作4.5 基于知识库的问答小结5. 总结参考文献 问答系统综述报告 1. 摘要 在科技发达和信息爆炸的现代社会中,如何从大规模的信息中

qq_38293297的博客 1万+

[论文笔记]SGPT: GPT Sentence Embeddings for Semantic Search

⭐ 作者提出了利用仅编码器的类GPT架构来产生句子嵌入以支持语义检索和其他嵌入任务。在Bi-Encoder设置中,使用位置加权平均池化来得到具有语义信息的句子嵌入。在Cross-Encoder设置中,提取预训练GPT模型的对数概率产生无监督结果。

日积月累,天道酬勤 2087

GPT】根据embedding进行相似匹配(QA问答、redis使用、文本推荐)

QA使用的是用户的Question去匹配已有知识库,而推荐是使用用户的浏览记录去匹配。但是很明显,推荐相比QA要更复杂一些,主要包括以下几个方面: 刚开始用户没有记录时的推荐(一般行业称为冷启动问题)。 除了相似还有其他要考虑的因素:比如热门内容、新内容、内容多样性、随时间变化的兴趣变化等等。 编码(Embedding输入)问题:我们应该取标题呢,还是文章,还是简要描述或者摘要,还是都要计算。 规模问题:推荐面临的量级一般会远超QA,除了横向扩展机器,是否能从流程和算法设计上提升效率。 用户反馈对推荐系统

发现问题,并解决问题,批判性思维 4025

SGPT: GPT Sentence Embeddings for Semantic Search

语义搜索分为两个部分:1.搜索和query 相关的topk文档。2.理解文档和query后面隐藏的语义信息,而不是字面含义。这篇论文提出了SGPT模型,只用decoder-only的transformer来进行语义搜索和sentence向量的提取。

WitsMakeMen的专栏 893

基于文本语义的智能问答机器人

本项目结合 Facebook AI 研究院开源的针对聚类和相似性搜索库Faiss 、Google提供的BERT模型实现一个基于文本语义的智能问答系统。通过项目案例从0到1搭建FAQ智能问答机器人,让大家轻松掌握 文本语义相似度文本检索系统和FAQ问答机器人在工业界应用。

(二)基于文本QA问答系统——深度检索模型概述

深度检索模型 概述 该部分用于基于上下文信息实现语境对称检索和语境非对称检索。 名词解释 语境检索semantic search指的是结合上下文语境信息的检索。 关于对称检索和非对称检索在文章SGPT: GPT Sentence Embeddings for Semantic Search中有如下解释: 简而言之对称检索指的是query与doc的结构和语义相似,找到与query最相关的若干doc; 非对称检索指的是query与doc结构与语义差异较大,找到与query最相关的若干doc。 动机 预训练语言

Simonsdu的博客 999

《预训练周刊》第38期: Transformer、BERT结构优化

No.38智源社区预训练组预训练研究观点资源活动关于周刊本期周刊,我们选择了12篇预训练相关的论文,涉及句子表示、变换器结构优化、数据增强、网络结构优化、动态神经网络、模型压缩、图预训练模...

BAAIBeijing的博客 561

2022年几款前沿的文本语义检索/Sentence Embedding方法:Gradient Cache, SGPT,ART,DPTDR,RocketQAv2, ERNIE-Search

上面的一些工作都是最近调研的比较有代表性的工作,其中包含了百度的一些工作,因为百度在搜索领域有着得天独厚的优势,我也使用了一些RocketQA等系列的模型,在学术和工业落地场景上都有着不错的效果,除了这些工作外还有SimLM,ColBERTv2等工作。更多关于语义检索方向的内容讲解,请参考本栏目后续的文章,如果有不懂的内容,请留言,我随即为大家安排上哈。

Learning from the mistakes 2531

【深度学习】QA机器人的实现

问答机器人是在分类之后,对特定问题进行回答的一种机器人。至于回答的问题的类型,取决于语料。当前需要实现的问答机器人是一个回答编程语言(比如python是什么,python难么等)相关问题的机器人pysparnn是一个对sparse数据进行相似邻近搜索的python库,这个库可以用来实现:高维空间中寻找最相似的数据的。pysparnn使用的是一种cluster pruning(簇修剪)的技术,即,开始的时候对数据进行聚类,后续再有限个类别中进行数据的搜索,根据计算的余弦相似度返回结果。随机选择N。

weixin_43923463的博客 882

练习:QA对和嵌入(Embedding)

QA对(Question-Answer Pairs)是指一组问题和对应的答案。每个QA对包含一个问题和一个与之关联的答案。有了QA对后,结合向量数据库,词嵌入,则可以完成对用户问题的相似度召回。再加上langchain中的RetrievalQA,LLMChain,结合大模型,完成自动顾问系统,回复客户的提问。

BUBU猪的技术收藏栏 1037

基于文档的智能问答系统

自己训练的智能问答系统

iRudder的专栏 1677

基于decoder-only LLM 的embeddings:LLM2Vec、Echo embeddings、PromptEOL、E5-mistral-7b-instruct、Sgpt

基于decoder-only LLM得到embedding的方法:LLM2Vec、Echo embeddings、PromptEOL、E5-mistral-7b-instruct、Sgpt、RepLLaMA 、cpt-text、UDEVER

beingstrong的博客 2731

NLP: 基于文本语义的智能问答系统

向AI转型的程序员都关注了这个号????????????人工智能大数据与深度学习 公众号:datayx问答系统是自然语言处理领域一个很经典的问题,它用于回答人们以自然语言形式提出的问题,...

datayx的文章 2万+

知识图谱与语义搜索

1.背景介绍 知识图谱(Knowledge Graph)和语义搜索(Semantic Search)是当今人工智能和信息检索领域的热门话题。知识图谱是一种结构化的数据库,用于存储实体(如人、地点、组织等)和它们之间的关系(如属性、类别、相关性等)。语义搜索是一种基于自然语言处理和知识图谱技术的搜索方法,它能够理解用户的查询意图并提供更准确和相关的搜索结果。 在这篇文章中,我们将深入探讨知识图谱...

AI天才研究院 1636

使用Azure Semantic search (语义搜索) 对私有知识库进行索引和搜索

大语言模型(LLM)已经让我们意识到了通用人工智能的威力,但是在经历过最初的那一拨狂热之后,人们更多的还是在思考如何把私有知识库与这些模型结合,以便实现更加强大的能力。针对这个领域,短短几个月内,就有很多不同的实现方式,其基本思路是对私有知识库进行向量化,通过全新的索引和搜索来先做第一轮的处理,最后将这个搜索结果作为上下文传递给LLM进行进一步的处理。毫无疑问,这个领域会有广阔的前景。我会分几篇文...

dotNET跨平台 541

NLP项目实战---基于检索的问答系统

import json from matplotlib import pyplot as plt import re import string import nltk from nltk.corpus import stopwords from nltk.tokenize import word_tokenize from nltk.stem.porter import PorterStemme...

"禅达牛车"的博客 3119

bert 中文基于文本问答系统

https://blog.csdn.net/frank_zhaojianbo/article/details/107829713

张伟的专栏 1584

如何快速搭建Apereo CAS服务:基于Overlay模板的5分钟启动教程

Apereo CAS是一款功能强大的企业级单点登录解决方案,通过cas-overlay-template模板可以快速搭建属于自己的CAS服务。本教程将带你在5分钟内完成从环境准备到服务启动的全过程,即使是新手也能轻松上手。 ## 📋 准备工作:环境要求 在开始之前,请确保你的系统已安装以下环境: - JDK 11或更高版本 - Git - 网络连接(用于下载依赖) ## 🚀 一键部署步骤

gitblog_00710的博客 934

(七)基于文本QA问答系统——实践过程

本文检索了基于预训练模型的信息检索的两种实现方法。

Simonsdu的博客 1341
上一篇: (二)基于文本的QA问答系统——深度检索模型概述
下一篇: (四)基于文本的QA问答系统——biencoder方法
Simonsdu
博客等级 码龄7年 4粉丝 25原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值