豆包向量化API – 字节跳动推出的语义向量化模型 | AI工具集


豆包向量化API是什么

豆包向量化API是由字节跳动研发的语义向量化模型,名为Doubao-embedding,主要面向向量检索的使用场景,支持中、英双语,能处理最长4K的上下文长度。目前提供两个版本,text-240715:最高维度向量 2560,支持 512、1024、2048 降维使用。中英文 Retrieval效果较 text-240515 版本有较大提升,推荐使用该版本。text-240515:最高维度向量 2048,支持 512、1024 降维使用。API的Host为maas-api.ml-platform-cn-beijing.volces.com,Region为cn-beijing

使用Doubao-embedding API之前,需要通过设置环境变量或在代码中直接修改,配置VOLC_ACCESSKEYVOLC_SECRETKEY。字节跳动提供了统一的SDK接入方式,包括Golang、Python和Java的SDK。
豆包向量化API - 字节跳动推出的语义向量化模型 | AI工具集

豆包向量化API的主要功能

  • 语义向量化:将文本内容转换为语义向量,这些向量能表达文本的语义信息。
  • 支持多种语言:支持中文和英文文本的向量化处理。
  • 长文本处理:能处理最长4K(即4096个字符)的上下文长度,适合长文本的向量化。
  • 高维向量输出:提供2048维的向量输出,同时支持512维和1024维的降维使用,适应不同的应用场景和计算资源。
  • 向量检索优化:生成的向量适用于文档相似度比较、信息检索等向量检索任务。
  • 易于集成:提供Golang、Python和Java的SDK,方便开发者在不同编程环境中集成和使用。
  • 灵活的输入输出:API的输入是一个包含文本内容的列表,输出则是包含每个文本向量化结果的列表,其中包含向量和对应的序号。
  • 检索效果优化:在检索场景中,建议为查询文本添加指令前缀,提高检索的效果和准确度。
  • 适用于多种应用:适用于搜索引擎、推荐系统、知识图谱、自然语言处理等多种应用场景。

豆包向量化API的项目地址

如何获取豆包向量化API的API key鉴权

API Key是用于API鉴权的密钥,确保在调用API时能验证身份。在使用API进行开发时,需要在HTTP请求的Header中添加Authorization字段,在实际调用API时,需要将VOLC_ACCESSKEY替换为实际API Key。

  • 注册账号:前往火山引擎官网并注册账号。
  • 登录控制台:使用账号登录火山引擎控制台。
  • 创建API Key:在控制台中,找到API访问秘钥部分,点击创建API Key。需要为API Key设置一个名称,便于识别和管理。创建后,系统会提供一串字符,即为API Key,务必妥善保管,避免泄露给他人。

豆包向量化API的不同语言SDK接入方式

  • Golang SDK接入方式
    • 安装SDK:首先需要通过go get命令安装Golang SDK。
      go get -u github.com/volcengine/volc-sdk-golang
    • 设置API Key:在代码中设置您的VOLC_ACCESSKEYVOLC_SECRETKEY
      package main
      
      import (
          "encoding/json"
          "errors"
          "fmt"
          "os"
          api "github.com/volcengine/volc-sdk-golang/service/maas/models/api/v2"
          client "github.com/volcengine/volc-sdk-golang/service/maas/v2"
      )
      
      func main() {
          r := client.NewInstance("maas-api.ml-platform-cn-beijing.volces.com", "cn-beijing")
          
          r.SetAccessKey(os.Getenv("VOLC_ACCESSKEY"))
          r.SetSecretKey(os.Getenv("VOLC_SECRETKEY"))
          req := &api.EmbeddingsReq{
              Input: []string{
                  "天很蓝",
                  "海很深",
              },
          }
          endpointId := "{YOUR_ENDPOINT_ID}"
          TestEmbeddings(r, endpointId, req)
      }
      
      func TestEmbeddings(r *client.MaaS, endpointId string, req *api.EmbeddingsReq) {
          if got, status, err := r.Embeddings(endpointId, req); err != nil {
              errVal := &api.Error{}
              if errors.As(err, &errVal) { 
                  fmt.Printf("meet maas error=%v, status=%d\n", errVal, status)
              }
              return
          } else {
              answer, _ := json.Marshal(got)
              fmt.Println("embeddings answer", string(answer))
          }
      }
  • Java SDK接入方式
    • 添加依赖:在您的pom.xml文件中添加Java SDK的依赖。
      <dependency>
          <groupId>com.volcenginegroupId>
          <artifactId>volc-sdk-javaartifactId>
          <version>LATESTversion>
      dependency>
    • 设置API Key:在代码中设置您的VOLC_ACCESSKEYVOLC_SECRETKEY
      package com.volcengine.example.maas.v2;
      
      import com.volcengine.model.maas.api.v2.*;
      import com.volcengine.service.maas.MaasException;
      import com.volcengine.service.maas.v2.MaasService;
      import com.volcengine.service.maas.v2.impl.MaasServiceImpl;
      import java.util.ArrayList;
      import java.util.Arrays;
      
      public class EmbeddingsV2Demo {
          public static void main(String[] args) {
              MaasService maasService = new MaasServiceImpl("maas-api.ml-platform-cn-beijing.volces.com", "cn-beijing");
              
              maasService.setAccessKey(System.getenv("VOLC_ACCESSKEY"));
              maasService.setSecretKey(System.getenv("VOLC_SECRETKEY"));
              EmbeddingsReq tReq = new EmbeddingsReq()
                  .withInput(new ArrayList<>(Arrays.asList(
                      "天很蓝",
                      "海很深"
                  )));
              String endpointId = "${YOUR_ENDPOINT_ID}";
              testEmbeddings(maasService, endpointId, tReq);
          }
      
          private static void testEmbeddings(MaasService maasService, String endpointId, EmbeddingsReq req) {
              try {
                  EmbeddingsResp resp = maasService.embeddings(endpointId, req);
                  System.out.println(resp.getObject());
                  System.out.println(resp.getData()); 
              } catch (MaasException e) {
                  System.out.println("req_id: " + e.getRequestId());
                  System.out.println("code: " + e.getCode());
                  System.out.println("code_n: " + e.getCodeN());
                  System.out.println("message: " + e.getMsg());
                  e.printStackTrace();
              }
          }
      }
  • Python SDK接入方式
    • 安装SDK: 您可以通过pip安装火山引擎的Python SDK。
      pip install volcengine-python-sdk
    • 配置环境变量: 在您的.env文件或系统环境变量中设置您的VOLC_ACCESSKEYVOLC_SECRETKEY
      VOLC_ACCESSKEY=您的AccessKey
      VOLC_SECRETKEY=您的SecretKey
      ENDPOINT_ID=您的EndpointId
    • 编写代码: 使用SDK进行API调用,一个简单的示例代码:
      import os
      from volcengine.maas.v2 import MaasService
      from volcengine.maas import MaasException, ChatRole
      
      def test_embeddings(maas, endpoint_id, req):
          try:
              resp = maas.embeddings(endpoint_id, req)
              print(resp)
              return resp
          except MaasException as e:
              print(e)
      
      if __name__ == '__main__':
          maas = MaasService('maas-api.ml-platform-cn-beijing.volces.com', 'cn-beijing')
          maas.set_ak(os.getenv("VOLC_ACCESSKEY"))
          maas.set_sk(os.getenv("VOLC_SECRETKEY"))
      
          
          query_instruction = '为这个句子生成表示以用于检索相关文章:'
          query = "天是什么颜色?"
          document = "天空呈现颜色主要与“瑞利散射”现象有关..."
      
          req = {
              "input": [
                  query_instruction + query,  
                  document,  
              ]
          }
          resp = test_embeddings(maas, endpoint_id="ep-xxx-xxx", req=req)  
          embeddings = [item["embedding"] for item in resp.data]

豆包向量化API的数据结构

豆包向量化API(Doubao-embedding API)的数据结构主要包括输入(Input)和输出(Output)两个部分。

  • 输入(Input):输入部分主要是一个包含需要向量化文本内容的列表(list),例如:json
{
  "input": [
    "天很蓝",
    "海很深"
  ]
}
  • 输出(Output):输出部分包括以下字段:
    • req_id:请求ID,标识这次API调用的唯一标识符。
    • data:包含每个查询的向量化结果的列表,其中每个结果包括:
      • embedding:一个浮点数列表,表示文本的向量。
      • index:向量的序号,与输入查询的顺序相对应。
      • object:通常为”embedding”,表示结果类型。

豆包向量化API的注意事项

  • API Host和Region:确保请求发送到正确的API主机和区域,例如maas-api.ml-platform-cn-beijing.volces.comcn-beijing
  • 鉴权:使用API Key进行鉴权时,确保选择一个不过期的API key以避免调用失败。可以通过火山引擎的控制台界面获取API Key,确保在调用API时使用它进行鉴权 。
  • 选择合适的模型:根据应用的具体需求和上下文窗口的大小,选择相应的模型。例如,如果需要处理较长的上下文,可以选择Doubao-pro-128k模型 。
  • 调用参数:根据需要选择合适的模型和调整API参数,如max_tokenstemperaturetop_p等,获得最佳效果 。
  • 流式调用与非流式调用:流式调用支持实时接收模型生成的响应,适合需要即时反馈的场景。非流式调用是等待模型完成所有生成后一次性返回结果。根据应用场景选择合适的调用方式 。
  • 错误处理:错误信息会包含错误代码和描述。首先,检查错误信息确定问题所在,然后根据错误信息进行相应的调整,如修正请求参数或检查鉴权配置 。
  • 数据格式:API返回的数据通常是JSON格式,包括id、choices、message、finish_reason、logprobs、created、model、object和usage等字段。具体字段的详细说明请参考API文档 。

豆包向量化API的应用场景

  • 信息检索:用于构建搜索引擎和推荐系统,提供相关文档或信息的检索服务。
  • 文档分类:对文档进行分类和标签化,便于管理和查找。
  • 语义搜索:提供基于语义理解的搜索服务,提高搜索结果的相关性和准确度。
  • 知识图谱构建:通过文本向量化,构建实体和概念之间的关联,形成知识图谱。
  • 内容推荐:在内容平台中,根据用户兴趣和内容相似度推荐相关内容。
  • 聊天机器人:作为聊天机器人的语义理解模块,提供更自然的人机交互体验。
© 版权声明

© 版权声明

相关文章

暂无评论

暂无评论...