Embedding-V1
Embedding-V1是基于百度文心大模型技术的文本表示模型,将文本转化为用数值表示的向量形式,用于文本检索、信息推荐、知识挖掘等场景。本文介绍了相关API,本接口不限制商用。
功能介绍
根据输入内容生成对应的向量表示。
在线调试
百度智能云千帆提供了 API在线调试平台-示例代码 ,用于帮助开发者调试接口,平台集成快速检索、查看开发文档、查看在线调用的请求内容和返回结果、复制和下载示例代码等功能,简单易用,更多内容请查看API在线调试介绍。
SDK调用
请参考SDK调用向量Embeddings文档。
使用说明
- 以下SDK支持本文API调用:Python、Go、Java和Node.js SDK
- SDK调用说明,请查看SDK安装及使用流程。
请求示例
import os
import qianfan
# 使用安全认证AK/SK鉴权,通过环境变量方式初始化;替换下列示例中参数,安全认证Access Key替换your_iam_ak,Secret Key替换your_iam_sk
os.environ["QIANFAN_ACCESS_KEY"] = "your_iam_ak"
os.environ["QIANFAN_SECRET_KEY"] = "your_iam_sk"
emb = qianfan.Embedding()
resp = emb.do(model="Embedding-V1", texts=[
"推荐一些美食","给我讲个故事"
])
print(resp["body"])
package main
import (
"context"
"fmt"
"os"
"github.com/baidubce/bce-qianfan-sdk/go/qianfan"
)
func main() {
// 使用安全认证AK/SK鉴权,通过环境变量初始化;替换下列示例中参数,安全认证Access Key替换your_iam_ak,Secret Key替换your_iam_sk
os.Setenv("QIANFAN_ACCESS_KEY", "your_iam_ak")
os.Setenv("QIANFAN_SECRET_KEY", "your_iam_sk")
embed := qianfan.NewEmbedding(
qianfan.WithModel("Embedding-V1"),
)
resp, _ := embed.Do(
context.TODO(),
&qianfan.EmbeddingRequest{
Input: []string{"你好啊", "明天天气多云"},
},
)
for _, value := range resp.Data {
fmt.Println(value.Embedding)
}
}
import com.baidubce.qianfan.Qianfan;
import com.baidubce.qianfan.model.embedding.EmbeddingData;
import com.baidubce.qianfan.model.embedding.EmbeddingResponse;
import java.util.Arrays;
public class Demo {
public static void main(String[] args) {
// 使用安全认证AK/SK鉴权,替换下列示例中参数,安全认证Access Key替换your_iam_ak,Secret Key替换your_iam_sk
Qianfan qianfan = new Qianfan("your_iam_ak", "your_iam_sk");
EmbeddingResponse resp = qianfan.embedding()
.model("Embedding-V1")
.input(Arrays.asList("晚饭味道很不错", "晚餐真好吃"))
.execute();
for (EmbeddingData data : resp.getData()) {
System.out.println(data.getEmbedding());
}
}
}
import {Embedding} from "@baiducloud/qianfan";
// 使用安全认证AK/SK鉴权,替换下列示例中参数,安全认证Access Key替换your_iam_ak,Secret Key替换your_iam_sk
const client = new Embedding({ QIANFAN_ACCESS_KEY: 'your_iam_ak', QIANFAN_SECRET_KEY: 'your_iam_sk' });
async function main() {
const resp = await client.embedding({
input: ['介绍下你自己吧', '你有什么爱好吗?'],
}, 'Embedding-V1');
const rs = resp.data;
rs.forEach((data) => {
console.log(data.embedding);
})
}
main();
返回示例
{
'id': 'as-tnrbsnpabg',
'object': 'embedding_list',
'created': 1718767750,
'data': [
{
'object': 'embedding',
'embedding': [0.018314672634005547, 0.009424409829080105, -0.009610666893422604, ...],
'index': 0
},
{
'object': 'embedding',
'embedding': [0.12250778824090958, 0.07934671640396118, -0.027468973770737648, ...],
'index': 1
}
],
'usage': {
'prompt_tokens': 6,
'total_tokens': 6
}
}
[0.004519541282206774 -0.0725267082452774 0.0022614754270762205 0.13040794432163239 -0.08518342673778534 ...]
[0.020677050575613976 -0.041624199599027634 0.045507751405239105 ...]
[0.06842433661222458, 0.05259920656681061, -0.01780703105032444, ...]
[0.06406816840171814, 0.04901014640927315, -0.021046847105026245, ...]
[0.13463850319385529, -0.010635782964527607, 0.024348171427845955...]
[0.06406816840171814, 0.04901014640927315, -0.021046847105026245, ...]
请求参数
注意:以下为Python SDK参数说明,Go、Java、Node.js SDK参数相关说明请参考Go SDK-向量Embeddings参数相关说明、Java SDK参数相关说明、Node.js SDK参数相关说明。
名称 | 类型 | 必填 | 描述 |
---|---|---|---|
model | str | 否 | 模型名称,说明:调用本文API,该字段为固定值Embedding-V1 |
texts | List[str] | 是 | 填写文本,说明: (1)不能为空List,List的每个成员不能为空字符串 (2)文本数量不超过16 (3)每个文本token数不超过384且长度不超过1000个字符 |
retry_count | int | 否 | 重试次数,默认1次 |
request_timeout | float | 否 | 请求超时时间,默认60秒 |
backoff_factor | float | 否 | 请求重试参数,用于指定重试的策略,默认为0 |
user_id | str | 否 | 表示最终用户的唯一标识符 |
返回参数
名称 | 类型 | 描述 |
---|---|---|
id | str | 本轮对话的id |
object | str | 回包类型,固定值“embedding_list” |
created | int | 时间戳 |
data | List[EmbeddingData] | embedding信息,data成员数和文本数量保持一致 |
usage | Usage | token统计信息,token数 = 汉字数+单词数*1.3 (仅为估算逻辑) |
EmbeddingData说明
名称 | 类型 | 描述 |
---|---|---|
object | str | 固定值"embedding" |
embedding | List[float] | embedding 内容 |
index | int | 序号 |
Usage说明
名称 | 类型 | 描述 |
---|---|---|
prompt_tokens | int | 问题tokens数(包含历史QA) |
total_tokens | int | tokens总数 |
HTTP调用
鉴权说明
本文API,支持2种鉴权方式。不同鉴权方式,调用方式不同,使用Header、Query参数不同,详见本文请求说明。开发者可以选择以下任一种方式进行鉴权。
请求说明
- 基本信息
请求地址: https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/embeddings/embedding-v1
请求方式: POST
- Header参数
根据不同鉴权方式,查看对应Header参数。
访问凭证access_token鉴权
名称 | 类型 | 必填 | 描述 |
---|---|---|---|
Content-Type | string | 是 | 固定值application/json |
基于安全认证AK/SK进行签名计算鉴权
名称 | 类型 | 必填 | 描述 |
---|---|---|---|
Content-Type | string | 是 | 固定值application/json |
x-bce-date | string | 否 | 当前时间,遵循ISO8601规范,格式如2016-04-06T08:23:49Z |
Authorization | string | 是 | 用于验证请求合法性的认证信息,更多内容请参考鉴权认证机制,签名工具可参考IAM签名工具 |
- Query参数
只有访问凭证access_token鉴权方式,需使用Query参数。
访问凭证access_token鉴权
名称 | 类型 | 必填 | 描述 |
---|---|---|---|
access_token | string | 是 | 通过API Key和Secret Key获取的access_token,参考Access Token获取 |
- Body参数
名称 | 类型 | 必填 | 描述 |
---|---|---|---|
input | List(string) | 是 | 输入文本以获取embeddings。说明: (1)不能为空List,List的每个成员不能为空字符串 (2)文本数量不超过16 (3)每个文本token数不超过384且长度不超过1000个字符 |
user_id | string | 否 | 表示最终用户的唯一标识符 |
响应说明
名称 | 类型 | 描述 |
---|---|---|
id | string | 本轮对话的id |
object | string | 回包类型,固定值“embedding_list” |
created | int | 时间戳 |
data | List(embedding_data) | embedding信息,data成员数和文本数量保持一致 |
usage | usage | token统计信息,token数 = 汉字数+单词数*1.3 (仅为估算逻辑) |
embedding_data说明
名称 | 类型 | 描述 |
---|---|---|
object | string | 固定值"embedding" |
embedding | List(float64) | embedding 内容 |
index | int | 序号 |
usage说明
名称 | 类型 | 描述 |
---|---|---|
prompt_tokens | int | 问题tokens数(包含历史QA) |
total_tokens | int | tokens总数 |
请求示例
使用访问凭证access_token鉴权方式调用API示例如下。
# 步骤一,获取access_token,替换下列示例中的API Key与Secret Key
curl 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=[API Key]&client_secret=[Secret Key]'
# 步骤二,调用本文API,使用步骤一获取的access_token,替换下列示例中的”调用接口获取的access_token“
curl -X POST https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/embeddings/embedding-v1?access_token=[步骤一调用接口获取的access_token] -d '{
"input": ["推荐一些美食","给我讲个故事"]
}'
import requests
import json
def get_access_token():
"""
使用 API Key,Secret Key 获取access_token,替换下列示例中的应用API Key、应用Secret Key
"""
url = "https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=[应用API Key]&client_secret=[应用Secret Key]"
payload = json.dumps("")
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request("POST", url, headers=headers, data=payload)
return response.json().get("access_token")
def main():
url = "https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/embeddings/embedding-v1?access_token=" + get_access_token()
payload = json.dumps({
"input": ["推荐一些美食","给我讲个故事"]
})
headers = {
'Content-Type': 'application/json'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
if __name__ == '__main__':
main()
响应示例
HTTP/1.1 200 OK
Date: Thu, 23 Mar 2023 03:12:03 GMT
Content-Type: application/json;charset=utf-8
Statement: AI-generated
{
"id": "as-gjs275mj6s",
"object": "embedding_list",
"created": 1687155816,
"data": [
{
"object": "embedding",
"embedding": [
0.018314670771360397,
0.00942440889775753,
...(共384个float64)
-0.36294862627983093
],
"index": 0
},
{
"object": "embedding",
"embedding": [
0.12250778824090958,
0.07934671640396118,
...(共384个float64)
0
],
"index": 1
}
],
"usage": {
"prompt_tokens": 12,
"total_tokens": 12
}
}
错误码
如果请求错误,服务器返回的JSON文本包含以下参数。
名称 | 描述 |
---|---|
error_code | 错误码 |
error_msg | 错误描述信息,帮助理解和解决发生的错误 |
例如Access Token失效返回以下内容,需要重新获取新的Access Token再次请求。
{
"error_code": 110,
"error_msg": "Access token invalid or no longer valid"
}
千帆大模型平台相关错误码,请查看错误码说明。