本文为您介绍 Embedding 模型的接口,以及使用 Restful API 和 OpenAI SDK 调用 Embedding 模型的完整流程。
/v1/embeddings
接口用于请求 Embedding 服务,通过深度学习神经网络提取文本、图片等非结构化数据里的内容和语义,把文本、图片等变成特征向量。
/v1/embeddings
。Content-Type: application/json
。参数 | 类型 | 是否必选 | 说明 |
---|---|---|---|
model | string | 是 | |
input | string 或 string list | 是 | 输入需要获取向量结果的对象。
说明 可以同时输入多个需要获取向量的对象,使用英文逗号 |
以下示例中返回的 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 } }
本文以调用 Image Embedding 模型为例,Text Embedding 模型的调用方式也相同。
首先需要先部署一个 Embedding 模型服务。云搜索服务提供了一个 Image Embedding 模型示例文件(model),您可以自行下载并上传到 TOS Bucket,然后创建模型。
模型创建后,您可以在相同 VPC 环境的 ECS 中,通过调用 Embedding 模型的私网访问地址,获取目标对象的向量化结果。
连接 ECS 实例。连接方式请参见连接 ECS 实例。
在 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" }'
White T-shirt
,图片示例为 TOS 存放路径tos://doc-test/picture/image_temp/aaa.jpg
或 Base64 编码data:image/jpeg;base64,iVBORw0....
。模型创建后,您可以在相同 VPC 环境的 ECS 中,通过 OpenAI SDK 调用 Embedding 模型,获取目标内容的向量化结果。
连接 ECS 实例。连接方式请参见连接 ECS 实例。
在 ECS 命令行中,安装 openai
。
pip install openai
创建一个 Python 脚本,比如embedding.py
。
touch embedding.py
在新建的 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))
White T-shirt
,图片示例为 TOS 存放路径tos://doc-test/picture/image_temp/aaa.jpg
或 Base64 编码data:image/jpeg;base64,iVBORw0KGg....
。执行以下命令,运行 Python 脚本,获取向量结果。
python3 embedding.py