You need to enable JavaScript to run this app.
导航
调用 Embedding 模型
最近更新时间:2024.09.26 11:38:08首次发布时间:2024.09.03 17:40:26

本文为您介绍 Embedding 模型的接口,以及使用 Restful API 和 OpenAI SDK 调用 Embedding 模型的完整流程。

embedding 接口

/v1/embeddings 接口用于请求 Embedding 服务,通过深度学习神经网络提取文本、图片等非结构化数据里的内容和语义,把文本、图片等变成特征向量。

请求说明

  • URI:统一资源标识符,固定为/v1/embeddings
  • 请求头:请求消息类型,固定位Content-Type: application/json

请求参数

参数

类型

是否必选

说明

model

string

指定需要调用的模型名称。
模型需要提前创建和启用,具体操作请参见创建自定义模型创建推理服务启动推理服务

input

string 或 string list

输入需要获取向量结果的对象。

  • 需要获取文本的向量:直接输入文本信息,比如White T-shirt
  • 需要获取图片的向量:输入图片信息,可以输入图片的 TOS 存放路径tos://doc-test/picture/image_temp/aaa.jpg;也可以输入图片的 Base64 编码data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgA....

说明

可以同时输入多个需要获取向量的对象,使用英文逗号,分隔,比如["White T-shirt", "tos://doc-test/picture/aaa.jpg"]
调用模型后,将返回每个对象对应的向量结果。

响应示例

以下示例中返回的 embedding 参数,就是您输入的文本或图片返回的 embedding 结果。

{
    "object": "list",
    "model": "ImageSearch-Demo",
    "data": [
        {
            "index": 0,
            "object": "embedding",
            "embedding": [
                -0.40416327118873596,
                0.17097428441047668,
                ......省略若干
                0.1333296298980713,
                0.472359299659729,
                0.05078130215406418]
        }
    ],
    "usage": {
        "prompt_tokens": 0,
        "total_tokens": 0
    }
}

调用 Embedding 模型

本文以调用 Image Embedding 模型为例,Text Embedding 模型的调用方式也相同。

部署模型并获取调用地址

首先需要先部署一个 Embedding 模型服务。云搜索服务提供了一个 Image Embedding 模型示例文件(model),您可以自行下载并上传到 TOS Bucket,然后创建模型。

  1. 创建一个 Image Embedding 模型,然后创建并启动一个允许私网访问的推理任务。具体操作,请参见二、创建并启动模型
  2. 推理任务正常运行后,获取模型的私网访问地址
    图片

使用 Restful API 调用模型

模型创建后,您可以在相同 VPC 环境的 ECS 中,通过调用 Embedding 模型的私网访问地址,获取目标对象的向量化结果。

  1. 连接 ECS 实例。连接方式请参见连接 ECS 实例

  2. 在 ECS 实例命令行中,执行以下命令,获取目标对象的向量结果。

    curl --location 'http://r-008***-183406**-private.escloud.ivolces.com:8000/v1/embeddings' \
    --header 'Content-Type: application/json' \
    --data '{
      "input": ["tos://doc-test/picture/image_temp/0b11ced2ae68745b38e5fd252c11384f.jpg"],
      "model": "ImageSearch-Demo"
    }'
    
    • input:需要获取向量结果的对象,支持文字和图片。文字示例为White T-shirt,图片示例为 TOS 存放路径tos://doc-test/picture/image_temp/aaa.jpg或 Base64 编码data:image/jpeg;base64,iVBORw0....
    • model:Image Embedding 模型的名称。
      图片

使用 OpenAI SDK 调用模型

模型创建后,您可以在相同 VPC 环境的 ECS 中,通过 OpenAI SDK 调用 Embedding 模型,获取目标内容的向量化结果。

  1. 连接 ECS 实例。连接方式请参见连接 ECS 实例

  2. 在 ECS 命令行中,安装 openai

    pip install openai
    
  3. 创建一个 Python 脚本,比如embedding.py

    touch embedding.py
    
  4. 在新建的 Python 脚本中添加以下内容。

    import openai
    
    client = openai.OpenAI(
             api_key="test",
             base_url="http://r-00g0ki***-18294241573**-private.escloud.ivolces.com:8000/v1",  
    )
    
    response = client.embeddings.create(
               model= "ImageSearch-Demo",
               input=["White T-shirt"])
                
    print(response.model_dump_json(indent=2))
    
    • base_url:调用模型的私网访问地址。
    • model:Image Embedding 模型的名称。
    • input:需要获取向量结果的对象,支持文字和图片。文字示例为White T-shirt,图片示例为 TOS 存放路径tos://doc-test/picture/image_temp/aaa.jpg或 Base64 编码data:image/jpeg;base64,iVBORw0KGg....
  5. 执行以下命令,运行 Python 脚本,获取向量结果。

    python3 embedding.py
    

    图片

模型使用案列