嵌入模型#
SGLang 通过将高效的服务机制与其灵活的编程界面集成,为嵌入模型提供了强大的支持。这种集成使得嵌入任务的处理更加流畅,促进了更快、更准确的检索和语义搜索操作。SGLang 的架构能够更好地利用资源,减少嵌入模型部署时的延迟。
重要
嵌入模型使用 --is-embedding 标志执行,某些模型可能需要 --trust-remote-code 标志
快速开始#
启动服务器#
python3 -m sglang.launch_server \
--model-path Qwen/Qwen3-Embedding-4B \
--is-embedding \
--host 0.0.0.0 \
--port 30000
客户端请求#
import requests
url = "http://127.0.0.1:30000"
payload = {
"model": "Qwen/Qwen3-Embedding-4B",
"input": "法国的首都是什么?",
"encoding_format": "float"
}
response = requests.post(url + "/v1/embeddings", json=payload).json()
print("嵌入向量:", response["data"][0]["embedding"])
多模态嵌入示例#
对于同时支持文本和图像的多模态模型如 GME:
python3 -m sglang.launch_server \
--model-path Alibaba-NLP/gme-Qwen2-VL-2B-Instruct \
--is-embedding \
--chat-template gme-qwen2-vl \
--host 0.0.0.0 \
--port 30000
import requests
url = "http://127.0.0.1:30000"
text_input = "在嵌入空间中表示此图像。"
image_path = "https://huggingface.co/datasets/liuhaotian/llava-bench-in-the-wild/resolve/main/images/023.jpg"
payload = {
"model": "gme-qwen2-vl",
"input": [
{
"text": text_input
},
{
"image": image_path
}
],
}
response = requests.post(url + "/v1/embeddings", json=payload).json()
print("嵌入向量:", [x.get("embedding") for x in response.get("data", [])])
套娃嵌入示例#
套娃嵌入 或 套娃表示学习 (MRL) 是一种用于训练嵌入模型的技术。它允许用户在性能和成本之间进行权衡。
1. 启动支持套娃的模型#
如果模型配置已经包含了 matryoshka_dimensions 或 is_matryoshka,则不需要覆盖。否则,您可以按如下方式使用 --json-model-override-args:
python3 -m sglang.launch_server \
--model-path Qwen/Qwen3-Embedding-0.6B \
--is-embedding \
--host 0.0.0.0 \
--port 30000 \
--json-model-override-args '{"matryoshka_dimensions": [128, 256, 512, 1024, 1536]}'
设置
"is_matryoshka": true允许截断到任何维度。否则,服务器将验证请求中指定的维度是否是matryoshka_dimensions之一。在请求中省略
dimensions将返回完整的向量。
2. 使用不同的输出维度进行请求#
import requests
url = "http://127.0.0.1:30000"
# 通过指定支持的维度请求一个截断的(套娃)嵌入向量。
payload = {
"model": "Qwen/Qwen3-Embedding-0.6B",
"input": "简单解释一下扩散模型。",
"dimensions": 512 # 更改为 128 / 1024 / 省略以获得完整尺寸
}
response = requests.post(url + "/v1/embeddings", json=payload).json()
print("嵌入向量:", response["data"][0]["embedding"])
支持的模型#
模型家族 |
示例模型 |
聊天模板 |
描述 |
|---|---|---|---|
E5 (基于 Llama/Mistral) |
|
N/A |
基于 Mistral/Llama 架构的高质量文本嵌入模型 |
GTE-Qwen2 |
|
N/A |
阿里巴巴的多语言支持文本嵌入模型 |
Qwen3-Embedding |
|
N/A |
最新的基于 Qwen3 的文本嵌入模型,用于语义表示 |
BGE |
|
N/A |
BAAI 的文本嵌入模型(需要 |
GME (多模态) |
|
|
用于文本和图像跨模态任务的多模态嵌入 |
CLIP |
|
N/A |
OpenAI 的 CLIP,用于图像和文本嵌入 |