LLM大模型 (chatgpt) 在搜索和推荐上的应用

目录

  • 1 大模型在搜索的应用
    • 1.1 召回
      • 1.1.1 倒排索引
      • 1.1.2 倒排索引存在的问题
      • 1.1.3 大模型在搜索召回的应用 (实体倒排索引)
    • 1.2 排序
      • 1.2.1 大模型在搜索排序应用(融入LLM实体排序)
  • 2 大模型在推荐的应用
    • 2.1 学术界关于大模型在推荐的研究
    • 2.2 推荐存在的一些问题
    • 2.3 大模型在推荐的应用 (加强用户实时兴趣识别)
  • 3 总结

1 大模型在搜索的应用

1.1 召回

我们知道在搜索中,item的召回主要还是基于关键词召回,但是用户表达与商家对item的描述存在差异导致一些长尾query可能召回很少或者召不回item,虽然现在有语义模型可以减少这种问题出现,但当数据稀疏,训练样本较少的情况下,基于语义向量召回效果也并不好。
那么大模型是不是可以提高召回的效果?答案是可以的,大模型的一个优势就是有多领域知识,可以更好的理解信息。接下来介绍用大模型做基础工作提升召回效果

1.1.1 倒排索引

基于关键词的召回,我们首先要清楚什么是倒排索引,如下图所示:

在这里插入图片描述
上述整个流程表示了倒排索引是如何建立的以及ES如何基于倒排索引进行检索。

1.1.2 倒排索引存在的问题

由于用户与商家存在表达差异以及数据噪声等问题,导致基于倒排索引进行召回存在一些问题,假设我们有如下倒排索引数据:

索引词文档
挂面福临门挂面500g*2袋
福临门挂面500g*2袋,佰草集白泥面膜组合
佰草集白泥面膜组合

当用户搜索query=‘白面’,通过切词,可以切分为:"白|面"两个term,从上面倒排索引表可以看出,同时命中“白"和"面“文本是:“佰草集白泥面膜组合”,反而和query相关的文本:“福临门挂面500g*2袋”没能够同时命中这两个term。主要原因是用户表达与商家描述存在差异,同时数据噪声加大了索引建立的复杂性通过语义向量进行召回减少了这种问题,但是需要大量的数据训练模型,才有较好的效果,当数据量不足的时候,效果并不佳。

1.1.3 大模型在搜索召回的应用 (实体倒排索引)

大模型的优势是基于庞大的多类型数据进行学习的,所以有很强的通用知识能力。我们可以基于大模型来优化倒排索引,提升召回的效果。通过大模型对文本生成标准的实体词,比如 {洗面奶,手机,苹果,牛奶,口红,馒头,香蕉,面, 面膜,蛋糕等},基于大模型的理解能力,将文本映射到标准的实体词中,同时对用户输入的query也映射到实体词,这样就可以将query与item的标准实体词建立关联。首先,我们构造好我们的promp,让chatgpt生成我们想要的结果,我们prompt模板可以这么写:

给定如下实体词和文本内容,给出每条文本内容对应的实体词
输出格式:{文本内容:实体词}
实体词:{洗面奶,手机,苹果,牛奶,口红,馒头,香蕉,面, 面膜,蛋糕}
文本内容: {白面, 平安质优 福临门挂面500g*2袋,佰草集白泥面膜组}

然后我们调用chatgpt进行预测,如下所示:
在这里插入图片描述
得到的结果如下:
{白面: 面, 平安质优 福临门挂面500g*2袋: 面, 佰草集白泥面膜组合: 面膜}
从测试来看,预测的还是比较准确的。这样,我们可以基于大模型建立标准化的实体索引,索引建立如下:

索引词标准化实体索引文档
挂面福临门挂面500g*2袋
福临门挂面500g*2袋,佰草集白泥面膜组合
面膜佰草集白泥面膜组合

用chatgpt对query和item生成标准实体词,通过实体词建立索引关系,这种方式可以减少用户表达与item信息描述的差异导致召不回或者召不准的问题,索引建立流程图如下所示:
在这里插入图片描述

1.2 排序

在搜索中,影响语义排序算法主要有三个核心部分,我们基于双塔模型的结构来讲解,如下所示:
在这里插入图片描述
第一部分 (人的特征):在搜索里面,核心是用户搜索的query,还有用户历史行为以及画像等特征
第二部分 (货的特征):这里主要包括货(item)的标题,标签等特征
第三部分 (人与货的关系):主要基于用户行为比如:曝光,点击,转化等反馈数据中建立关系,这也是我们的模型训练样本主要来源。若用户点击了一个item,则这个用户与item的样本label我们就认为是正样本y=1,否则y=0。但是在现实场景中,数据稀疏,数据噪声等问题,导致模型对人与货的匹配学习存在较大的挑战,有可能会犯我们人看来很“低级“的错误,比如用户搜索一个“橙",模型反而将“梨子"相关的item给出的排序分比有“橙子"的item分还高。

1.2.1 大模型在搜索排序应用(融入LLM实体排序)

所以,顺着我们上述部分讲述的大模型在搜索召回层的应用,在排序层我们其实也可以利用大模型的通用知识理解能力,融入大模型的通用知识实体排序,如下图所示:
在这里插入图片描述
我们可以基于大模型对query与item生成的标准实体进行简单的匹配打分再融合到最终的排序的模型里,融合部分可以简单的进行加权求和得到最终的排序分也可以将大模型对query和item生成的标准实体作为基础排序模型特征输入等
在这里也尝试了下用大模型生成向量,基于余弦值做相似度分计算,如下是调用chatgpt计算向量相似分代码:

def embedding(content):response = openai.Embedding.create(model="text-embedding-ada-002",input=content)embs = response.data[0].embeddingreturn embsif __name__=='__main__':query = '白面'content_1 ='福临门挂面500g*2袋'content_2 = '草集白泥面膜组合'q_emb = np.array(embedding(query))c1_emb = np.array(embedding(content_1))c2_emb = np.array(embedding(content_2))# cos simiqc1_cos = q_emb.dot(c1_emb) / (np.linalg.norm(q_emb) * np.linalg.norm(c1_emb))qc2_cos = q_emb.dot(c2_emb) / (np.linalg.norm(q_emb) * np.linalg.norm(c2_emb))print('query:%s\nitem:%s\n相似度为:%s' % (query, content_1, qc1_cos))print('query:%s\nitem:%s\n相似度为:%s' % (query, content_2, qc2_cos))	

输出结果为:
在这里插入图片描述
从结果来看,query=‘白面’与item='草集白泥面膜组合’相似分更高😞😞😞😞😞😞😞😞
看来不理想,不过具体openai提供的抽取词向量模型model="text-embedding-ada-002"具体结构是怎样也不是很清楚。

2 大模型在推荐的应用

2.1 学术界关于大模型在推荐的研究

如下是一些大模型在推荐的研究论文:

  • Is ChatGPT a Good Recommender? A Preliminary Study
  • Uncovering ChatGPT’s Capabilities in Recommender Systems
  • LKPNR: LLM and KG for Personalized News Recommendation Framework
  • HeterogeneousKnowledgeFusion:ANovelApproachforPersonalized RecommendationviaLLM
  • LLM-Rec:Personalized Recommendation via Prompting Large Language Models
  • PALR:Personalization Aware LLMs for Recommendation

  • 从上面的一些paper关于大模型在推荐的应用,整体总结如下图所示:
    在这里插入图片描述
    整体还是偏向In-context learning。通过构造 task-specific prompt让大模型进行推荐或者生成更丰富的信息内容提升base推荐模型的效果。

2.2 推荐存在的一些问题

当用户行为数据稀疏,数据量不足的时候,推荐系统存在的一些基础问题如下图所示:
在这里插入图片描述
主要是两大类问题:个性化弱以及精准度问题。

2.3 大模型在推荐的应用 (加强用户实时兴趣识别)

我们可以利用大模型的强大推理以及通用知识能力,让大模型根据用户实时的行为以及场景信息进行用户实时兴趣识别,提升推荐的精准度。下面给出了一个基本方案的流程图:
在这里插入图片描述
让我们给定一些场景信息测试下chatgpt对用户的实时场景兴趣的理解,我们的prompt构造如下:
Task Description:
基于如下用户的画像以及环境信息,针对给出的服务类型:[洗车,加油,代驾,保养,租车],推测出用户接下来在什么时间点做什么服务
Behavior Injection:
{“用户画像":[女,35岁,居住深圳],
“环境信息”:[晚上9点,在北京]
}
Format Indicator:
输出格式:{服务类型:理由:服务概率}

我们调用chatgpt api如下:

在这里插入图片描述
上面红色框的两个参数控制生成文本保守和确定性控制,值越低表示越保守。如下是chatgpt给出的结论:

{“服务类型”:“租车”,“理由”:“用户属性为女性,35岁,长住深圳,晚上9点位于北京,可能是因为需要在北京出差或旅行,所以最有可能需要租车服务。“服务概率”:0.8}

整体来说还是比较符合常规的,我们可以基于实时用户行为数据以及场景信息,借助大模型的强大推理以及通用知识能力进行用户实时意图的理解,让推荐算法更加智能,更好的理解用户的实时用兴趣和需求。

3 总结

本博文给出了大模型在搜索和推荐的一些基础应用,主要针对现有搜索和推荐存在的问题,借助大模型强大的推理能力以及通用知识能力进行一些优化。但大模型在搜索和推荐上的应用还有更多更好的方式,👏🏻欢迎有新兴趣的小伙伴能够一起交流和学习。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/150681.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

什么是硬分叉?硬分叉的原因是什么?硬分叉的影响是什么?

目录 什么是硬分叉? 硬分叉的原因是什么? 区块大小的改变 共识机制的修改

在vscode中使用Latex:TexLive2023

安装TexLive2023及配置vscode可参考https://zhuanlan.zhihu.com/p/166523064 然后编译模板 .tex文件时,出现以下几个错误: 1. ctexbook找不到字体集 d:/texlive/2023/texmf-dist/tex/latex/ctex/ctexbook.cls:1678: Class ctexbook Error: CTeX fo…

采用Nexus搭建Maven私服

采用Nexus搭建Maven私服 1.采用docker安装 1.创建数据目录挂载的目录: /usr/local/springcloud_1113/nexus3/nexus-data2.查询并拉取镜像docker search nexus3docker pull sonatype/nexus33.查看拉取的镜像docker images4.创建docker容器:可能出现启动…

OpenWrt环境下,由于wget不支持ssl/tls导致执行opkg update失败的解决方法

执行: opkg update 显示: wget: SSL support not available, please install one of the libustream-ssl-* libraries as well as the ca-bundle and ca-certificates packages. 提示opkg依赖的wget不支持ssl/tls。 此时需要下载支持ssl/tls的wget。但是…

为关键信息基础设施安全助力!持安科技加入关保联盟

近日,中关村华安关键信息基础设施安全保护联盟发布了其新一批的会员单位,零信任办公安全代表企业持安科技成功加入,与联盟企业共同为关键信息基础设施提供各类支撑和保障。 中关村华安关键信息基础设施安全保护联盟由北京市科学技术委员会、中…

软件测试面试时问你的项目经验,你知道该怎么说吗?

很简单,我来给你们一个公式 0 自我介绍,名字 学历 荣誉。 1 简述项目背景,你身处这个项目是做什么的。 不要太细,试着引导一下面试官让他提问。这样,请问您对此有什么疑问吗? 2 简述 你在项目中的角色&…

函数的极限和联系以及与数列收敛的联系

函数 极限定义:函数在 x 0 x_0 x0​处逼近 L L L,则给定任意正数 ϵ \epsilon ϵ,都有存在的 δ \delta δ使得 ∣ f ( x ) − L ∣ < ϵ , 0 < ∣ x − x 0 ∣ < δ |f(x)-L|<\epsilon, 0<|x-x_0|<\delta ∣f(x)−L∣<ϵ,0<∣x−x0​∣<δ 连续定…

2021年6月青少年软件编程(Python)等级考试试卷(一级)

青少年软件编程(Python)等级考试试卷(一级) 分数:100.00 题数:37一、单选题(共25题,每题2分,共50分)二、判断题(共10题,每题2分,共20分)三、编程题(共2题,共30分)分数:100.00 题数:37 一、单选题(共25题,每题2分,共50分) 下列程序运行的结果是?( ) …

Dubbo快速实践

文章目录 架构相关概念集群和分布式架构演进 Dubbo概述Dubbo快速入门前置准备配置服务接口配置Provider配置Consumer Dubbo基本使用总结 本文参考https://www.bilibili.com/video/BV1VE411q7dX 架构相关概念 集群和分布式 集群&#xff1a;很多“人”一起 &#xff0c;干一样…

Visual Studio Code 从英文界面切换中文

1、先安装中文的插件&#xff0c;直接安装。 2、点击右下角的 change language restart&#xff0c; 让软件重启即可以完成了。

Kafka学习笔记(二)

目录 第3章 Kafka架构深入3.3 Kafka消费者3.3.1 消费方式3.3.2 分区分配策略3.3.3 offset的维护 3.4 Kafka高效读写数据3.5 Zookeeper在Kafka中的作用3.6 Kafka事务3.6.1 Producer事务3.6.2 Consumer事务&#xff08;精准一次性消费&#xff09; 第4章 Kafka API4.1 Producer A…

异常控制流——(中断、陷阱、故障、终止、进程等操作系统干货)

异常 异常控制流 控制流&#xff1a; 假设从处理机上电运行一直到断电关机的这段时间内&#xff0c;程序计数器的值是下图序列&#xff0c;其中ak表示某一条指令Ik的地址。 **控制转移&#xff1a;**每一次从ak到ak1的过渡 **平滑&#xff1a;**Ik和Ik1在内存中是相邻的&am…

怎样备份电脑文件比较安全

域智盾软件是一款功能强大的电脑监控软件&#xff0c;它不仅具备实时屏幕监控、行为审计等功能&#xff0c;还能够对电脑文件进行备份和管理。下面将介绍域智盾软件如何备份电脑文件&#xff0c;以确保数据安全。 1、开启文档备份功能 部署后台&#xff0c;然后点击文档安全&a…

spring boot + feign + Hystrix 整合 (亲测有效)

spring boot feign Hystrix 整合&#xff0c;步骤如下&#xff1a; pom依赖 <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId><version>3.0.6</version> <…

李宏毅2023机器学习作业HW05解析和代码分享

ML2023Spring - HW5 相关信息&#xff1a; 课程主页 课程视频 Sample code HW05 视频 HW05 PDF 个人完整代码分享: GitHub | Gitee | GitCode 运行日志记录: wandb P.S. HW05/06 是在 Judgeboi 上提交的&#xff0c;完全遵循 hint 就可以达到预期效果。 因为无法在 Judgeboi 上…

单页面应用(SPA)与多页面应用(MPA)的区别及优缺点

单页面应用&#xff08;SPA&#xff09;和多页面应用&#xff08;MPA&#xff09;是两种常见的Web应用程序架构&#xff0c;它们在设计和使用上有一些显著的区别。 单页面应用&#xff08;SPA&#xff09; 定义&#xff1a;单页面应用是指整个应用只有一个完整的页面&#xf…

Vue3 源码解读系列(八)——生命周期

生命周期 正常的生命周期 // 注册钩子函数 const onBeforeMount createHook(bm/* BEFORE_MOUNT */) const onMounted createHook(m/* MOUNTED */) const onBeforeUpdate createHook(bu/* BEFORE_UPDATE */) const onUpdated createHook(u/* UPDATED */) const onBeforeUnm…

商城免费搭建之java商城 java电子商务Spring Cloud+Spring Boot+mybatis+MQ+VR全景+b2b2c

1. 涉及平台 平台管理、商家端&#xff08;PC端、手机端&#xff09;、买家平台&#xff08;H5/公众号、小程序、APP端&#xff08;IOS/Android&#xff09;、微服务平台&#xff08;业务服务&#xff09; 2. 核心架构 Spring Cloud、Spring Boot、Mybatis、Redis 3. 前端框架…

java桌面程序

目标之一是把打印导出的功能最终用java实现一套&#xff0c;首先选定javafx&#xff0c;因为idea默认创建工程就带的javafx&#xff0c;没找到swing。 创建工程&#xff0c;这里要选1.8&#xff0c;高版本jdk默认不带fx 实现主界面的代码 package sample;import javafx.app…