基于ChatGPT+词向量/词嵌入实现相似商品推荐系统

最近一个项目有个业务场景是相似商品推荐,给一个商品描述(比如 'WIENER A/B 7IN 5/LB FZN' ),系统给出商品库中最相似的TOP 5种商品,这种单纯的推荐系统用词向量就可以实现,不过,这个项目特点是商品库巨大,有19万余商品,且商品相似度高(都是肉类制品),所以希望引入ChatGPT,利用大语言模型的推理能力进一步提高推荐准确率。
讨论了一下,决定用向量相似度计算初筛+ChatGPT优选。

处理思路:

1. 词向量相似度计算初筛

        a. embedding 如何获取?
                直接调用微软Azure Ada Embedding api,质量高,价格低,并且可以直接获取句子embedding。
        b. 19万商品embedding如何存储并检索?
                使用Redis存储,Redis可以做内存KNN,并有版本对向量计算做了优化(似乎叫STACK)。
        c.  商品描述中包含大量缩写,歧义问题严重,直接获取embedding质量很低,如何解决?
                使用ChatGPT扩展语义,类似以下prompt: 

                已知下面是关于一种百货产品的描述,描述中可能包含缩写,请推测是何种品类的商品,给出三种可能:WIENER A/B 7IN 5/LB FZN,并将答案按以下格式输出[答案1:xx,答案2:xx,答案3:xx]
                以上prompt喂给ChatGPT,可以得到以下输出:
                根据描述,这种百货产品可能是一种冷冻肉制品,下面是三种可能的商品:\n\n1. 热狗:根据描述中出现的\"WIENER\"这个词,可能是指热狗,这是一种由碎肉、淀粉、香料等原料制成的肉制品,通常是热狗面包的主要馅料之一。n2. 香肠:由于描述中出现了7IN和5/LB这两个词,可能是指长度为7英寸,每磅5个的香肠,这是一种由碎肉、淀粉、香料等原料制成的肉制品,通常是早餐的主食之一。\n3. 火腿肠:这是一种由肉类和淀粉等原料制成的肉制品,通常是热狗的替代品,由于描述中没有具体指明该产品的形状,因此这也是一种可能的商品。\n\n[答案1:热狗,答案2:香肠,答案3:火腿肠]
                可以看到回答中的语义比原有描述 'WIENER A/B 7IN 5/LB FZN' 清晰了很多,试验下来推荐准确率比直接用原有描述高了很多,但是回答中仍然包含很多“废话”——介词/连词/符号其实都没有什么语义在里面,最后比较下来,直接用三种可能的商品名(比如'[答案1:熏肠,答案2:烤肠,答案3:火腿]')生成embedding来计算相似度是效果最好的。

2.ChatGPT优选
         a. 为什么优选?
                词向量相似度这种方法,对某个起到决定性作用关键词的判断能力是不足的,比如下面两种商品
                'WIENER A/B 7IN 5/LB FZN CS'
                'WIENER A/B 7IN 5/LB FZN EA' 
                毫无疑问,这两个描述的向量相似度是极高的,但这实际不是同种商品,因为他们的销售规格不同,CS是按箱销售,EA是按件销售,如果用户输入的描述中带有CS,必然是希望模糊检索按箱销售的商品。如果让人来检索,肯定是能判断这点的,现在就让ChatGPT来替代人完成这步优选,让GPT从相似度得到的TOP N件商品中,选出5件最靠谱的商品。
                我们观察了正确商品在相似度排名结果中的分布情况,大部分在TOP5中,小部份在TOP6 - TOP20中,正确商品分布在TOP20之外的情况并不多,因此,我们将TOP N中的N设定为20。
        b.  优选prompt
                使用类似如下prompt,ChatGPT会格式化返回将它认为与给定描述最相似的5种商品的id。

                It is known that the description of product A is '%s'. Now there are %s products with serial numbers starting from 0. Their descriptions are:  '%s'. Abbreviations may be included in the above descriptions, please select %s product numbers that are most likely to be the same product as Product A, and strictly output the product serial numbers in the following template [xx, xx, xx, ...]

3. 其他
        可以看到流程图上,除了上述两个主要步骤,还有两步,分别是相似度阈值筛选和二分类模型。我们在实践中不是直接取相似度TOP20商品进入下一步,而是给定一个相似度阈值,比如0.8,将所有相似度高于0.8的商品选出来,这导致三种结果——进入下一步的商品很少/适中/很多,前两种情况没什么影响,直接填进prompt喂给GPT择优就行,但如果是第三种情况,那GPT的推理能力会大大下降——GPT从20件商品中选5件商品比从100件商品中选5件商品要靠谱,因此为这种情况加入一个分类模型缩减备选商品规模。

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

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

相关文章

Python爬虫(二十二)_selenium案例:模拟登陆豆瓣

本篇博客主要用于介绍如何使用seleniumphantomJS模拟登陆豆瓣,没有考虑验证码的问题,更多内容,请参考:Python学习指南 #-*- coding:utf-8 -*-from selenium import webdriver from selenium.webdriver.common.keys import Keysimp…

材质、纹理、贴图的区别和关联

1、材质、纹理、贴图的概念 材质(Material)、纹理(Texture)、贴图(Texture Map)是计算机图形学中的三个概念,它们之间存在关系但也有一些区别。 材质(Material)是描述物…

算法进阶——字符串的排列

题目 输入一个长度为 n 字符串&#xff0c;打印出该字符串中字符的所有排列&#xff0c;你可以以任意顺序返回这个字符串数组。 例如输入字符串ABC,则输出由字符A,B,C所能排列出来的所有字符串ABC,ACB,BAC,BCA,CBA和CAB。 数据范围&#xff1a;n<10 要求&#xff1a;空间复…

设计模式 - 中介者模式

目录 一. 前言 二. 实现 三. 优缺点 一. 前言 中介者模式又叫调停模式&#xff0c;定义一个中介角色来封装一系列对象之间的交互&#xff0c;使原有对象之间的耦合松散&#xff0c;且可以独立地改变它们之间的交互。 中介者模式可以使对象之间的关系数量急剧减少&#xff0…

nginx开启https配置之后网页无法访问问题处理

背景说明 最近新购服务器部署nginx之后按照之前的方式部署前端项目并配置https之后访问页面显示:无法访问.新的服务器ECS系统和之前相同,nginx安装方式也相同,nginx配置方式也是相同.但是访问还是显示无法访问.下面简单记录一下问题处理过程. 处理过程 1.https访问之后无法访问…

php+html+js+ajax实现文件上传

phphtmljsajax实现文件上传 目录 一、表单单文件上传 1、上传页面 2、接受文件上传php 二、表单多文件上传 1、上传页面 2、接受文件上传php 三、表单异步xhr文件上传 1、上传页面 2、接受文件上传php 四、表单异步ajax文件上传 1、上传页面 2、接受文件上传ph…

Day-08 基于 Docker安装 Nginx 镜像-负载均衡

1、反向代理后&#xff0c;自然而然就引出了负载均衡,下面简单实现负载均衡的效果; 2、实现该效果需要再添加一个 Nginx &#xff0c;所以要增加一个文件夹。 /home|---mutou|----nginx|----conf.d|----html|----conf.d2|----html3 1.创建 html3 文件夹&#xff0c; 新建 index…

CART 算法——决策树

目录 1.CART的生成&#xff1a; &#xff08;1&#xff09;回归树的生成 &#xff08;2&#xff09;分类树的生成 ①基尼指数 ②算法步骤 2.CART剪枝&#xff1a; &#xff08;1&#xff09;损失函数 &#xff08;2&#xff09;算法步骤&#xff1a; CART是英文“class…

新的“HTTP/2 Rapid Reset”0day攻击打破了DDoS记录

导语 最近&#xff0c;一种名为“HTTP/2 Rapid Reset”的DDoS&#xff08;分布式拒绝服务&#xff09;攻击技术成为了热门话题&#xff0c;该技术自8月份以来被积极利用作为零日漏洞&#xff0c;打破了以往的攻击记录。亚马逊网络服务&#xff08;Amazon Web Services&#xff…

短视频账号矩阵系统源码saas===独立部署

前言&#xff1a; 短视频账号矩阵是指在不同的短视频平台上&#xff0c;一个个人或企业所拥有的账号数量和分布情况。由于不同的短视频平台受众人群和内容类型等因素不同&#xff0c;因此拥有更多账号可以在更广泛的受众中传播内容&#xff0c;提高曝光度和流量。短视频账号矩阵…

uniapp获取公钥、MD5,‘keytool‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件。

获取MD5、SHA1、SHA256指纹信息 通过命令的形式获取 winr调出黑窗口cd到证书所在目录输入keytool -list -v -keystore test.keystore,其中 test.keystore为你的证书名称加文件后缀按照提示输入你的证书密码&#xff0c;就可以查看证书的信息 通过uniapp云端查看(证书是在DClou…

给 Linux0.11 添加网络通信功能 (Day3: 完成 MIT6.S081 最终实验 网卡驱动(1. 安装工具链和依赖))

url: https://pdos.csail.mit.edu/6.S081/2020/labs/net.html 首先看 tools章节&#xff1a;https://pdos.csail.mit.edu/6.S081/2020/tools.html 浏览了一下&#xff0c;就是要我们安装依赖 执行以下命令 sudo apt-get install git build-essential gdb-multiarch qemu-syst…

创建一个基本的win32窗口

1.建立一个窗口的基本步骤 &#xff08;1&#xff09;向系统注册一个窗体类 &#xff08;2&#xff09;根据窗体类创建窗口 &#xff08;3&#xff09;进入消息循环 2.程序结构 (1)主函数的输入参数 int WINAPI WinMain( HISTANCE hInstance,//当前窗口的句柄 HINSTANCE hPr…

腾讯云2核4G轻量服务器5M带宽支持多少人同时在线?

腾讯云轻量2核4G5M带宽服务器支持多少人在线访问&#xff1f;5M带宽下载速度峰值可达640KB/秒&#xff0c;阿腾云以搭建网站为例&#xff0c;假设优化后平均大小为60KB&#xff0c;则5M带宽可支撑10个用户同时在1秒内打开网站&#xff0c;从CPU内存的角度&#xff0c;网站程序效…

界面组件DevExpress WinForms v23.2新功能预览 - 增强MVVM相关功能

本文主要描述了DevExpress WinForms即将在几个月之后发布的v23.2中包含的新功能&#xff0c;持续关注我们获取更多最新资讯哦~ DevExpress WinForms有180组件和UI库&#xff0c;能为Windows Forms平台创建具有影响力的业务解决方案。同时能完美构建流畅、美观且易于使用的应用…

什么是Python虚拟环境?

视频教程地址&#xff1a;https://www.bilibili.com/video/BV1Zy4y1F7hC/ 大家好&#xff0c;这一集我们来介绍一下什么是Python虚假环境。虚拟环境是python基础知识中非常重要的一个知识点。 相信python新手都会遇到过这样的问题&#xff0c;在命令行中下载了某个三方库在py…

前端本地存储方案-localForage-vue3中使用

前言 前端有多种本地存储方案可供选择&#xff0c;常见的有&#xff1a; Cookie&#xff1a;小型的文本文件&#xff0c;存储少量数据Web Storage &#xff1a;包括&#xff1a;localStorage和sessionStorage&#xff0c;存储数据有上限&#xff08;5M&#xff09;左右Indexe…

系统架构师备考倒计时26天(每日知识点)

详细的项目范围说明书&#xff0c;是项目成功的关键。 范围定义的输入包括以下内容: ① 项目章程。如果项目章程或初始的范围说明书没有在项目执行组织中使用&#xff0c;同样的信息需要进一步收集和开发&#xff0c;以产生详细的项目范围说明书。 ② 项目范围管理计划。 ③ 组…

mac M2芯片在使用Android studio 编译问题bad cpu type in executable android

由于mac的intel芯片的一些指令集没有同步在M1 M2芯片上所以需要做兼容 打开控制台&#xff08;通过访达 - 应用程序 - 实用工具 - 终端 &#xff09; 输入 softwareupdate --install-rosetta 之后在输入 A 就可以了。 原产考地址&#xff1a;硬核&#xff01;在 M1 芯…

一个非常简单的变分量子分类器 (VQC)

一、说明 在之前的帖子&#xff08;这里和这里&#xff09;中&#xff0c;我已经开始谈论 QML&#xff0c;为什么以及如何学习&#xff0c;从现在开始&#xff0c;我将开始分享我的研究和发现&#xff0c;到目前为止&#xff0c;这些都是非常基本的。 二、实验概述 今天&#…