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

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

最近一个项目有个业务场景是相似商品推荐给一个商品描述(比如 '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
                使用类似如下promptChatGPT会格式化返回将它认为与给定描述最相似的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件商品要靠谱因此为这种情况加入一个分类模型缩减备选商品规模。

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: ChatGPT