向量Embeddings
更新时间:2024-07-08
注意: 为提升开发者使用体验,本文内容已合并至对应API文档,请查看API鉴权及调用-向量Embeddings-各模型调用文档;本文档已于2024年7月5日在千帆大模型平台文档中心下线,内容不再更新。
千帆 SDK 支持调用千帆大模型平台中的模型,将输入文本转化为用浮点数表示的向量形式。转化得到的语义向量可应用于文本检索、信息推荐、知识挖掘等场景。
注意事项
(1)本文内容适用千帆Python、Go、Java和Node.js SDK。SDK支持功能详情,请查看SDK功能列表。
(2)模型不同,调用SDK时,使用参数不同。请结合具体模型,查看参数使用说明进行调用。
- 默认使用模型,即Embedding-V1,调用时无需填写model参数,使用的模型,详情见参数说明。
- 指定支持预置服务的模型,使用model参数指定支持预置服务的模型,详情见参数说明。
支持模型列表
支持的模型列表,及各模型支持的调用方法说明如下,更多详情见请求参数说明。
模型 | 支持预置服务的模型 (使用model参数) |
---|---|
Embedding-V1 | ✓ |
bge-large-zh | ✓ |
bge-large-en | ✓ |
tao-8k | ✓ |
默认模型
默认模型,即 Embedding-V1,无需使用参数model,调用示例如下。
调用示例
# Embedding 基础功能
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(texts=[ # 省略 model 时则调用默认模型 Embedding-V1
"推荐一些美食","给我讲个故事"
])
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()
resp, _ := embed.Do( // Stream 启用流式返回,参数与 Do 相同
context.TODO(),
&qianfan.EmbeddingRequest{
Input: []string{"你好啊", "明天天气多云"},
},
)
fmt.Println(resp.Data[0].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()
.input(Arrays.asList("晚饭味道很不错", "晚餐真好吃"))
.execute();
for (EmbeddingData data : resp.getData()) {
System.out.println(data.getEmbedding());
}
}
}
import {Embedding} from "@baiducloud/qianfan";
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: ['介绍下你自己吧', '你有什么爱好吗?'],
});
const rs = resp.data;
rs.forEach((data) => {
console.log(data.embedding);
})
}
main();
返回示例
{
'id': 'as-ebmqfafh71',
'object': 'embedding_list',
'created': 1716897422,
'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.06842433661222458, 0.05259920656681061, -0.01780703105032444, ...]
[0.06406816840171814, 0.04901014640927315, -0.021046847105026245, ...]
[0.06814255565404892, 0.007878394797444344, 0.060368239879608154, ...]
[0.13463851809501648, -0.010635783895850182, 0.024348173290491104, ...]
指定支持预置服务的模型
使用model字段,指定千帆平台支持预置服务的模型,调用示例如下。
请求示例
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="bge-large-zh", texts=[ # 非默认模型,需填写 model参数
"推荐一些美食","给我讲个故事"
])
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("bge-large-zh"),
)
resp, _ := embed.Do( // Stream 启用流式返回,参数与 Do 相同
context.TODO(),
&qianfan.EmbeddingRequest{
Input: []string{"你好啊", "明天天气多云"},
},
)
fmt.Println(resp.Data[0].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";
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': 1716861892,
'data': [
{
'object': 'embedding',
'embedding': [0.022463463246822357, -0.02337547577917576, -0.005518416874110699, ...],
'index': 0
},
{
'object': 'embedding',
'embedding': [0.01029676478356123, -0.014536388218402863, -0.025878649204969406, ...],
'index': 1
}
],
'usage': {
'prompt_tokens': 6,
'total_tokens': 6
}
}
[0.004519541282206774 -0.0725267082452774 0.0022614754270762205 ...]
[0.06842433661222458, 0.05259920656681061, -0.01780703105032444, ...]
[0.06406816840171814, 0.04901014640927315, -0.021046847105026245, ...]
[0.06814255565404892, 0.007878394797444344, 0.060368239879608154, ...]
[0.13463851809501648, -0.010635783895850182, 0.024348173290491104, ...]
参数说明
注意:以下为Python SDK参数说明,Go、Java、Node.js SDK参数相关说明请参考Go SDK-向量Embeddings参数相关说明、Java SDK参数相关说明、Node.js SDK参数相关说明。
请求参数
名称 | 类型 | 必填 | 描述 |
---|---|---|---|
model | str | 否 | 模型名称。说明: (1)不填写此参数,默认模型为Embedding-V1 (2) 如果需指定支持预置服务的模型,此字段必填,支持模型如下: · Embedding-V1 · bge-large-en · bge-large-zh · tao-8k |
texts | List[str] | 是 | 填写文本。需注意以下: (1)此字段不能为空List,List的每个成员不能为空字符串 (2)各模型的文本长度限制为: · 当modle为Embedding-V1:文本数量不超过16,每个文本长度不超过384 tokens且不超过1000字符 · 当modle为bge-large-en或bge-large-zh:文本数量不超过16,每个文本长度不超过512 tokens且不超过2000字符 · 当modle为tao-8k:文本数量只能为1,文本token数不超过8192且长度不超过30000个字符 |
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总数 |