Token Embedding 用法¶
摘要¶
- 模型用法:Token 分类模型
- Pooling 任务:
token_embed - 离线 API
LLM.encode(..., pooling_task="token_embed")
- 在线 API
- 池化 API (
/pooling)
- 池化 API (
(序列) Embedding 任务与 Token Embedding 任务的区别在于,(序列) Embedding 为每个序列输出一个 Embedding,而 Token Embedding 为每个 Token 输出一个 Embedding。
许多 Embedding 模型同时支持 (序列) Embedding 和 Token Embedding。关于 (序列) Embedding 的更多详细信息,请参考此页面。
注意
Pooling 多任务支持已被弃用,并将在 v0.20 版本中移除。当默认的 Pooling 任务 (embed) 不符合您的需求时,您需要通过离线方式 PoolerConfig(task="token_embed") 或在线方式 --pooler-config.task token_embed 手动指定它。
典型用例¶
多向量检索¶
实现示例请见:
离线: examples/pooling/token_embed/multi_vector_retrieval_offline.py
在线: examples/pooling/token_embed/multi_vector_retrieval_online.py
延迟交互¶
可以通过 Score API 使用两个输入提示词之间的延迟交互来计算相似度得分。更多信息,请参阅 Score API。
提取最后隐藏状态¶
任何架构的模型都可以使用 --convert embed 转换为 Embedding 模型。然后可以使用 Token Embedding 从这些模型中提取最后的隐藏状态。
支持的模型¶
纯文本模型¶
| 架构 | 模型 | 示例 HF 模型 | LoRA | PP |
|---|---|---|---|---|
ColBERTLfm2Model | LFM2 | LiquidAI/LFM2-ColBERT-350M | ||
ColBERTModernBertModel | ModernBERT | lightonai/GTE-ModernColBERT-v1 | ||
ColBERTJinaRobertaModel | Jina XLM-RoBERTa | jinaai/jina-colbert-v2 | ||
HF_ColBERT | BERT | answerdotai/answerai-colbert-small-v1, colbert-ir/colbertv2.0 | ||
*ModelC, *ForCausalLMC 等 | 生成式模型 | 不适用 | * | * |
多模态模型¶
注意
有关多模态模型输入的更多信息,请参阅此页面。
| 架构 | 模型 | 输入 | 示例 HF 模型 | LoRA | PP |
|---|---|---|---|---|---|
ColModernVBertForRetrieval | ColModernVBERT | T / I | ModernVBERT/colmodernvbert-merged | ||
ColPaliForRetrieval | ColPali | T / I | vidore/colpali-v1.3-hf | ||
ColQwen3 | Qwen3-VL | T / I | TomoroAI/tomoro-colqwen3-embed-4b, TomoroAI/tomoro-colqwen3-embed-8b | ||
ColQwen3_5 | ColQwen3.5 | T + I + V | athrael-soju/colqwen3.5-4.5B-v3 | ||
OpsColQwen3Model | Qwen3-VL | T / I | OpenSearch-AI/Ops-Colqwen3-4B, OpenSearch-AI/Ops-Colqwen3-8B | ||
Qwen3VLNemotronEmbedModel | Qwen3-VL | T / I | nvidia/nemotron-colembed-vl-4b-v2, nvidia/nemotron-colembed-vl-8b-v2 | ✅︎ | ✅︎ |
*ForConditionalGenerationC, *ForCausalLMC 等 | 生成式模型 | * | 不适用 | * | * |
C 通过 --convert embed 自动转换为嵌入模型。(详细信息)
* 功能支持与原始模型相同。
如果您的模型不在上述列表中,我们将尝试使用 as_embedding_model 自动转换模型。
离线推理¶
池化参数¶
支持以下池化参数。
LLM.encode¶
encode 方法适用于 vLLM 中的所有池化模型。
在使用 LLM.encode 进行 Token Embedding 模型处理时,请设置 pooling_task="token_embed"。
from vllm import LLM
llm = LLM(model="answerdotai/answerai-colbert-small-v1", runner="pooling")
(output,) = llm.encode("Hello, my name is", pooling_task="token_embed")
data = output.outputs.data
print(f"Data: {data!r}")
LLM.score¶
score 方法输出句子对之间的相似度得分。
所有支持 Token Embedding 任务的模型也都支持使用 Score API,通过计算两个输入提示词的延迟交互来计算相似度得分。
from vllm import LLM
llm = LLM(model="answerdotai/answerai-colbert-small-v1", runner="pooling")
(output,) = llm.score(
"What is the capital of France?",
"The capital of Brazil is Brasilia.",
)
score = output.outputs.score
print(f"Score: {score}")
在线服务¶
请参考 Pooling API 并使用 "task":"token_embed"。
更多示例¶
更多示例可在此处找到: examples/pooling/token_embed
支持的功能¶
Token Embedding 功能应与 (序列) Embedding 一致。更多信息,请参阅此页面。