当前位置: 首页 > news >正文

【AI大模型】使用Embedding API

在这里插入图片描述

一、使用OpenAI API

目前GPT embedding mode有三种,性能如下所示:

模型每美元页数MTEB得分MIRACL得分
text-embedding-3-large9,61554.964.6
text-embedding-3-small62,50062.344.0
text-embedding-ada-00212,50061.031.4
  • MTEB得分为embedding model分类、聚类、配对等八个任务的平均得分。
  • MIRACL得分为embedding model在检索任务上的平均得分。
    从以上三个embedding model我们可以看出text-embedding-3-large有最好的性能和最贵的价格,当我们搭建的应用需要更好的表现且成本充足的情况下可以使用;text-embedding-3-small有着较好的性能跟价格,当我们预算有限时可以选择该模型;而text-embedding-ada-002是OpenAI上一代的模型,无论在性能还是价格都不如及前两者,因此不推荐使用。
import os
from openai import OpenAI
from dotenv import load_dotenv, find_dotenv# 读取本地/项目的环境变量。
# find_dotenv()寻找并定位.env文件的路径
# load_dotenv()读取该.env文件,并将其中的环境变量加载到当前的运行环境中  
# 如果你设置的是全局的环境变量,这行代码则没有任何作用。
_ = load_dotenv(find_dotenv())# 如果你需要通过代理端口访问,你需要如下配置
os.environ['HTTPS_PROXY'] = 'http://127.0.0.1:7890'
os.environ["HTTP_PROXY"] = 'http://127.0.0.1:7890'def openai_embedding(text: str, model: str=None):# 获取环境变量 OPENAI_API_KEYapi_key=os.environ['OPENAI_API_KEY']client = OpenAI(api_key=api_key)# embedding model:'text-embedding-3-small', 'text-embedding-3-large', 'text-embedding-ada-002'if model == None:model="text-embedding-3-small"response = client.embeddings.create(input=text,model=model)return responseresponse = openai_embedding(text='要生成 embedding 的输入文本,字符串形式。')

API返回的数据为json格式,除object向量类型外还有存放数据的data、embedding model 型号model以及本次 token 使用情况usage等数据,具体如下所示:

{"object": "list","data": [{"object": "embedding","index": 0,"embedding": [-0.006929283495992422,... (省略)-4.547132266452536e-05,],}],"model": "text-embedding-3-small","usage": {"prompt_tokens": 5,"total_tokens": 5}
}

我们可以调用response的object来获取embedding的类型。
print(f’返回的embedding类型为:{response.object}')
返回的embedding类型为:list

二、使用文心千帆API

  • Embedding-V1是基于百度文心大模型技术的文本表示模型,Access token为调用接口的凭证,
  • 使用Embedding-V1时应先凭API Key、Secret Key获取Access token,再通过Access token调用接口来embedding text。同时千帆大模型平台还支持bge-large-zh等embedding model。
import requests
import jsondef wenxin_embedding(text: str):# 获取环境变量 wenxin_api_key、wenxin_secret_keyapi_key = os.environ['QIANFAN_AK']secret_key = os.environ['QIANFAN_SK']# 使用API Key、Secret Key向https://aip.baidubce.com/oauth/2.0/token 获取Access tokenurl = "https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id={0}&client_secret={1}".format(api_key, secret_key)payload = json.dumps("")headers = {'Content-Type': 'application/json','Accept': 'application/json'}response = requests.request("POST", url, headers=headers, data=payload)# 通过获取的Access token 来embedding texturl = "https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/embeddings/embedding-v1?access_token=" + str(response.json().get("access_token"))input = []input.append(text)payload = json.dumps({"input": input})headers = {'Content-Type': 'application/json'}response = requests.request("POST", url, headers=headers, data=payload)return json.loads(response.text)
# text应为List(string)
text = "要生成 embedding 的输入文本,字符串形式。"
response = wenxin_embedding(text=text)

同样的我们也可以从response中获取embedding的类型和embedding。

print('返回的embedding类型为:{}'.format(response['object']))
print('embedding长度为:{}'.format(len(response['data'][0]['embedding'])))
print('embedding(前10)为:{}'.format(response['data'][0]['embedding'][:10]))
返回的embedding类型为:embedding_list
embedding长度为:384
embedding(前10)为:[0.060567744076251984, 0.020958080887794495, 0.053234219551086426, 0.02243831567466259, -0.024505289271473885, -0.09820500761270523, 0.04375714063644409, -0.009092536754906178, -0.020122773945331573, 0.015808865427970886]

三、使用讯飞星火API

暂未开放

四、使用智谱API

智谱有封装好的SDK,我们调用即可。

from zhipuai import ZhipuAI
def zhipu_embedding(text: str):api_key = os.environ['ZHIPUAI_API_KEY']client = ZhipuAI(api_key=api_key)response = client.embeddings.create(model="embedding-2",input=text,)return responsetext = '要生成 embedding 的输入文本,字符串形式。'
response = zhipu_embedding(text=text)

response为zhipuai.types.embeddings.EmbeddingsResponded类型,我们可以调用object、data、model、usage来查看response的embedding类型、embedding、embedding model及使用情况。

print(f'response类型为:{type(response)}')
print(f'embedding类型为:{response.object}')
print(f'生成embedding的model为:{response.model}')
print(f'生成的embedding长度为:{len(response.data[0].embedding)}')
print(f'embedding(前10)为: {response.data[0].embedding[:10]}')
response类型为:<class 'zhipuai.types.embeddings.EmbeddingsResponded'>
embedding类型为:list
生成embedding的model为:embedding-2
生成的embedding长度为:1024
embedding(前10)为: [0.017892399802803993, 0.0644201710820198, -0.009342825971543789, 0.02707476168870926, 0.004067837726324797, -0.05597858875989914, -0.04223804175853729, -0.03003198653459549, -0.016357755288481712, 0.06777040660381317]
http://www.lryc.cn/news/453417.html

相关文章:

  • 面试速通宝典——11
  • python:reportlab 将多个图片合并成一个PDF文件
  • 决策树:机器学习中的强大工具
  • 平面电磁波(解麦克斯韦方程)电场相位是复数的积分常数,电场矢量每个分量都有一个相位。磁场相位和电场一样,这是因为无损介质中实数的波阻抗
  • 复习HTML(进阶)
  • Qt 每日面试题 -7
  • 《计算机原理与系统结构》学习系列——计算机的算数运算(下)
  • 二叉树进阶学习——从前序和中序遍历序列构造二叉树
  • 【数据分享】2000—2023年我国省市县三级逐年植被覆盖度(FVC)数据(Shp/Excel格式)
  • 【Python】Streamlit:为数据科学与机器学习打造的简易应用框架
  • OpenJudge | 置换选择排序
  • 如何提取b站的视频字幕,下载视频
  • Vue中使用ECharts实现热力图的详细教程
  • Arduino UNO R3自学笔记13 之 Arduino使用LM35如何测量温度?
  • 蓝桥杯【物联网】零基础到国奖之路:十六. 扩展模块之矩阵按键
  • Apollo9.0 Planning2.0决策规划算法代码详细解析 (4): PlanningComponent::Proc()
  • AAA Redis的过期删除策略+缓存雪崩+缓存一致性问题
  • 成都跃享未来教育咨询有限公司抖音小店:引领教育咨询新风尚
  • 【堆排】为何使用向下调整法建堆比向上调整法建堆更好呢?
  • 在Stable Diffusion WebUI中安装SadTalker插件时几种错误提示的处理方法
  • 使用ffmpeg合并视频和音频
  • 周末总结(2024/10/05)
  • 在Ubuntu中自动挂载SMB/CIFS共享
  • pWnOS2.0 靶机渗透( cms 渗透,php+mysql 网站渗透,密码碰撞)
  • 【AI】AIOT简介
  • picgo + typora + gitee图床
  • 【路径规划】多机器人路径规划
  • 深度学习Day-35:One-hot独热编码
  • Streamlit 实现登录注册验证
  • ASP.NET Zero 多租户介绍