跳到内容

Token Embedding 用法

摘要

  • 模型用法:Token 分类模型
  • Pooling 任务:token_embed
  • 离线 API
    • LLM.encode(..., pooling_task="token_embed")
  • 在线 API
    • 池化 API (/pooling)

(序列) 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 自动转换模型。

离线推理

池化参数

支持以下池化参数

    use_activation: bool | None = None
    dimensions: int | None = None

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 一致。更多信息,请参阅此页面