# 创建文本向量化
创建文本向量化API用于将文本数据转换为数值向量，以便于在机器学习和自然语言处理任务中使用。这些向量可以捕捉文本的语义信息，使得机器学习模型能够理解和处理文本数据。
#### 前提条件
- 预置服务：已在"模型推理 \> 在线推理 \> 预置服务"页签开通BGE-M3模型的预置服务。具体操作，请参见[MaaS开通预置服务](https://support.huaweicloud.com/model-call-maas/model-call-052.html)。
- 自定义接入点：已在"模型推理 \> 在线推理 \> 自定义接入点"页签为BGE-M3或Qwen3-Embedding-8B模型创建了自定义接入点。具体操作，请参见[使用自定义接入点](https://support.huaweicloud.com/model-call-maas/model-call-048.html#ZH-CN_TOPIC_0000002549717747)。
 
#### 约束限制
该功能仅支持"西南-贵阳一"区域。
#### 接口信息
表1接口信息 
| 名称     | 说明                    | 取值                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
|:---|:---|:---|
| API地址    | 调用文本向量化的API地址。       | https://api.modelarts-maas.com/v1/embeddings                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| model参数 | model参数调用名称。  | 您可以任选以下方式获取model参数值。 - 从[表2]的"**model** **参数值**"列获取。  - 预置服务：在"模型推理 \> 在线推理 \> 预置服务"页签的服务名称左侧，单击![](https://support.huaweicloud.com/model-call-maas/figure/zh-cn_image_0000002482401629.png "点击放大")图标，在"model参数"列查看取值。更多信息，请参见[MaaS开通预置服务](https://support.huaweicloud.com/model-call-maas/model-call-052.html)。  - 自定义接入点：在"模型推理 \> 在线推理 \> 自定义接入点"页签的"model参数"列查看取值。更多信息，请参见[使用自定义接入点](https://support.huaweicloud.com/model-call-maas/model-call-048.html#ZH-CN_TOPIC_0000002549717747)。   |
   
#### 支持模型列表
 表2支持模型列表 
| **模型** | 支持地域   | **model** **参数值** | 应用场景        |
|:---|:---|:---|:---|
| BGE-M3 | 西南-贵阳一 | bge-m3           | 文本向量化 |
   
#### 请求参数说明
表3请求body参数 
| 参数              | 是否必填 | 参数类型    | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
|:---|:---|:---|:---|
| model            | 是     | string | **参数解释：** 模型名称。 **约束限制：** 不涉及。 **取值范围**： bge-m3 **默认值：** 不涉及。                                                                                                                                                                                                                                                                                                                                                 |
| input          | 是     | string  | **参数解释：** 支持字符串或字符串列表。 **约束限制：** 最大长度不能超过8K。 **取值范围**： bge-m3 **默认值：** 不涉及。                                                                                                                                                                                                                                                                                                                            |
| encoding_format | 否     | string | **参数解释：** 指定文本向量化结果的输出格式。 **约束限制：** 最大长度不能超过8K。 **取值范围**： - float  - base64   **默认值：** float |
   
#### 响应参数说明
**状态码：200**
| 参数                            | 参数类型            | 说明                                                                                                                                                                                                                                                                              |
|:---|:---|:---|
| id                         | string        | **参数解释：** 请求ID。 **取值范围**： 不涉及。             |
| object                     | string        | **参数解释：** 对象类型。 **取值范围**： list            |
| created                     | integer        | **参数解释：** 模型响应时间。 **取值范围**： 不涉及。             |
| model                      | string        | **参数解释：** 模型名称。 **取值范围**： bge-m3        |
| data                      | object\[\]      | **参数解释：** 模型生成结果数据集。                                                                                                                                                                              |
| data.index                   | integer          | **参数解释：** 模型自动生成的序号。 **取值范围**： 不涉及。          |
| data.object                 | enum\<string\> | **参数解释：** 对象类型。 **取值范围**： embedding：向量类型 |
| data.embedding            | number\[\]      | **参数解释：** 模型生成的嵌入向量列表。 **取值范围**： 不涉及。         |
| usage                       | object          | **参数解释：** 模型所消耗的Token详情。                                                                                                                                                                           |
| usage.prompt_tokens        | integer         | **参数解释：** 提示词Token计数。 **取值范围**： 不涉及。      |
| usage.total_tokens         | integer         | **参数解释：** 请求使用的Token总数。 **取值范围**： 不涉及。       |
| usage.completion_tokens   | integer        | **参数解释：** 推理Token计数。 **取值范围**： 不涉及。        |
| usage.prompt_tokens_details | object        | **参数解释：** 输入Prompt使用情况详情。                                                                                                                                                                         |
   
#### 请求示例
此处以使用BGE-M3模型将文本字符串 \["这是一只小猫", "这是一只小狗"\]转换为数值向量为例，展示文本向量化的基础用法。
- 使用Python调用示例。
  ```
  import requests
  import json
  if __name__ == '__main__':
      url = "https://api.modelarts-maas.com/v1/embeddings"  # API地址
      api_key = "MAAS_API_KEY"  # 把MAAS_API_KEY替换成已获取的API Key
      # Send request.
      headers = {
          'Content-Type': 'application/json',
          'Authorization': f'Bearer {api_key}'
      }
      texts = ["这是一只小猫", "这是一只小狗"]
      data = {
          "model": "bge-m3",  # 模型名称
          "input": texts,  # input类型可为string or string[]
          "encoding_format": "float"  # 取值范围："float","base64"
      }
      response = requests.post(url, headers=headers, data=json.dumps(data), verify=False)
      # Print result.
      print(response.status_code)
      print(response.text)
  ```
  
- 使用Curl调用示例。
  ```
  curl -X POST "https://api.modelarts-maas.com/v1/embeddings" \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer $MAAS_API_KEY" \
    -d '{
      "model": "bge-m3",
      "input": [
        "这是一只小猫",
        "这是一只小狗"
      ],
      "encoding_format": "float"
    }'
  ```
  
- 使用OpenAI SDK调用示例。
  ```
  from openai import OpenAI
  base_url = "https://api.modelarts-maas.com/v1"  # API地址
  api_key = "MAAS_API_KEY"  # 把MAAS_API_KEY替换成已获取的API Key
  texts = ["这是一只小猫", "这是一只小狗"]
  client = OpenAI(api_key=api_key, base_url=base_url)
  response = client.embeddings.create(
      model="bge-m3",  # model参数
      input=texts,  # input类型可为string or string[]
      encoding_format="float"  # 取值范围："float","base64"
  )
  # Print result.
  print(response.data)
  ```
  
- 使用Java调用示例。 在pom.xml中添加依赖配置：
  ```
  <dependency>
        <groupId>com.openai</groupId>
        <artifactId>openai-java</artifactId>
        <version>4.8.0</version></dependency>
  ```
  ```
  package com.openai.example.embedding;
  import com.openai.client.OpenAIClient;
  import com.openai.client.okhttp.OpenAIOkHttpClient;
  import com.openai.models.embeddings.EmbeddingCreateParams;
  import javax.net.ssl.SSLContext;
  import javax.net.ssl.TrustManager;
  import javax.net.ssl.X509TrustManager;
  import java.security.KeyManagementException;
  import java.security.NoSuchAlgorithmException;
  import java.security.SecureRandom;
  import java.security.cert.CertificateException;
  import java.security.cert.X509Certificate;
  import java.util.List;
  public final class EmbeddingsExample {
      public static void main(String[] args) {
          // 把MAAS_API_KEY替换成已获取的API Key，${model_name}替换为model参数
          String apiKey = "MAAS_API_KEY";
          String url = "https://api.modelarts-maas.com/v1";
          String model = "${model_name}";
          initSSLParam();
          OpenAIClient client = OpenAIOkHttpClient.builder()
                  .apiKey(apiKey)
                  // 绕过SSL校验，无需绕过请注释或删除以下两行操作
                  .sslSocketFactory(SSL_CONTEXT.getSocketFactory())
                  .trustManager(TRUST_MANAGER)
                  .baseUrl(url)
                  .build();
          List<String> text = List.of("这是一只小猫", "这是一只小狗");
          EmbeddingCreateParams createParams = EmbeddingCreateParams.builder()
                  .inputOfArrayOfStrings(text)
                  .model(model)
                  .encodingFormat(EmbeddingCreateParams.EncodingFormat.FLOAT)
                  .build();
          System.out.println(client.embeddings().create(createParams));
      }
      private static X509TrustManager TRUST_MANAGER;
      private static SSLContext SSL_CONTEXT;
      /**
       * 初始化自定义SSL参数，绕过SSL证书校验
       */
      public static void initSSLParam() {
          try {
              // 创建信任所有证书的TrustManager
              TRUST_MANAGER = new X509TrustManager() {
                  @Override
                  public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {
                  }
                  @Override
                  public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {
                  }
                  @Override
                  public X509Certificate[] getAcceptedIssuers() {
                      return new X509Certificate[]{};
                  }
              };
              // 安装信任所有证书的 SSLContext
              SSL_CONTEXT = SSLContext.getInstance("SSL");
              SSL_CONTEXT.init(null, new TrustManager[]{TRUST_MANAGER}, new SecureRandom());
          } catch (NoSuchAlgorithmException | KeyManagementException e) {
              e.printStackTrace();
              throw new RuntimeException(e);
          }
      }
  }
  ```
  
 
#### 响应示例
```
{
 "id": "embd-d848df392a67d662f5a76eaa9e33974f",
 "object": "list",
 "created": 1758023320,
 "model": "bge-m3",
 "data": [{
  "index": 0,
  "object": "embedding",
  "embedding": [-0.021697998046875, 0.0322265625, ...]
 }],
 "usage": {
  "prompt_tokens": 7,
  "total_tokens": 7,
  "completion_tokens": 0,
  "prompt_tokens_details": null
 }
}
```
