ChatGPT 嵌入开发

为了提高问答「准确率」,有两个优化方向

1、增加训练集数据

2、增加提问上下文语料,答案就在其中

OpenAI 是不允许用户来训练数据的,他的 model 是固定且通用的。所以增加训练集数据并不可行。

使用chatgpt 嵌入,让chatgpt根据语料内容回答。

实际应用,产品客服、产品介绍、某专业技能问答。

我们只能使用方法

2 :提供提问上下文(context)。

在 openai 提供的能力中,可以在 prompt 中增加上下文语料,来提高 回复 准确率。

但是我们如何从自己的语料库(由语料片段组成)中,找到和提问相关(答案需要在上下文语料中)的 context 呢?

openai 提供了 Embedding 的接口,可以用 input (输入一段文字)来计算一坨 embedding 向量值。

我们可以通过将(语料片段的向量)与(问题的向量)取(最相似的向量),来判断问题和语料片段的相似(similarity)度,

这样我们在 prompt 里,把最相似的语料片段作为 context 放进 prompt ,就可以得到最正确的 completion。

1、管理语料

2、语料生成向量

3、语料调用openai 接口生成向量代码 

import openai  # for generating embeddings
import pandas as pd  # for DataFrames to store article sections and embeddings


from openai_key import *

openai.api_key = openai_key

def vector(input):
    response = openai.Embedding.create(
        input=input,
        model="text-embedding-ada-002"
    )
    return response['data'][0]['embedding']



input = 'i9CPU 内核和基本频率'
print (vector(input))

 

 4、 余弦相似度计算

import numpy as np
from emb_diribo import *


# 计算计算余弦相似度
import numpy as np
from vector import *

# 计算计算余弦相似度
def cosine_similarity(vector1, vector2):
    dot_product = np.dot(vector1, vector2)
    norm1 = np.linalg.norm(vector1)
    norm2 = np.linalg.norm(vector2)
    return dot_product / (norm1 * norm2)


print (cosine_similarity(vector1, vector2))

完整流程

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wmq.world

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值