Skip to content

vllm.model_executor.models.jina_embeddings_v4

PoolingMetadata module-attribute

VISION_END_TOKEN_ID module-attribute

VISION_END_TOKEN_ID = 151653

VISION_START_TOKEN_ID module-attribute

VISION_START_TOKEN_ID = 151652

logger module-attribute

logger = init_logger(__name__)

JinaVLForEmbedding

Bases: Qwen2VLForConditionalGeneration, SupportsCrossEncoding, SupportsMultiModal

Source code in vllm/model_executor/models/jina_embeddings_v4.py
@MULTIMODAL_REGISTRY.register_processor(Qwen2VLMultiModalProcessor,
                                        info=Qwen2VLProcessingInfo,
                                        dummy_inputs=Qwen2VLDummyInputsBuilder)
class JinaVLForEmbedding(Qwen2VLForConditionalGeneration,
                         SupportsCrossEncoding, SupportsMultiModal):

    is_pooling_model = True

    def __init__(self, *, vllm_config: VllmConfig, prefix: str = ""):
        super().__init__(vllm_config=vllm_config,
                         prefix=maybe_prefix(prefix, "qwen2_vl"))

        self.pooler = JinaVLPooler(vllm_config)

        logger.info("Initialized JinaVLForEmbedding with vision-aware pooling")

is_pooling_model class-attribute instance-attribute

is_pooling_model = True

pooler instance-attribute

pooler = JinaVLPooler(vllm_config)

__init__

__init__(*, vllm_config: VllmConfig, prefix: str = '')
Source code in vllm/model_executor/models/jina_embeddings_v4.py
def __init__(self, *, vllm_config: VllmConfig, prefix: str = ""):
    super().__init__(vllm_config=vllm_config,
                     prefix=maybe_prefix(prefix, "qwen2_vl"))

    self.pooler = JinaVLPooler(vllm_config)

    logger.info("Initialized JinaVLForEmbedding with vision-aware pooling")

JinaVLPooler

Bases: Pooler

Vision-aware pooler for Jina V4 with special vision token handling.

Source code in vllm/model_executor/models/jina_embeddings_v4.py
class JinaVLPooler(Pooler):
    """Vision-aware pooler for Jina V4 with special vision token handling."""

    def __init__(self, vllm_config: VllmConfig):
        super().__init__()
        self.vision_pooler = VisionPooler(vllm_config.model_config)

    def get_pooling_params(self, task: PoolingTask) -> Optional[PoolingParams]:
        return self.vision_pooler.get_pooling_params(task)

    def forward(
        self,
        hidden_states: Union[torch.Tensor, list[torch.Tensor]],
        pooling_metadata: PoolingMetadata,
    ) -> PoolerOutput:
        return self.vision_pooler.forward(hidden_states, pooling_metadata)

vision_pooler instance-attribute

vision_pooler = VisionPooler(model_config)

__init__

__init__(vllm_config: VllmConfig)
Source code in vllm/model_executor/models/jina_embeddings_v4.py
def __init__(self, vllm_config: VllmConfig):
    super().__init__()
    self.vision_pooler = VisionPooler(vllm_config.model_config)

forward

forward(
    hidden_states: Union[Tensor, list[Tensor]],
    pooling_metadata: PoolingMetadata,
) -> PoolerOutput
Source code in vllm/model_executor/models/jina_embeddings_v4.py
def forward(
    self,
    hidden_states: Union[torch.Tensor, list[torch.Tensor]],
    pooling_metadata: PoolingMetadata,
) -> PoolerOutput:
    return self.vision_pooler.forward(hidden_states, pooling_metadata)

get_pooling_params

get_pooling_params(
    task: PoolingTask,
) -> Optional[PoolingParams]
Source code in vllm/model_executor/models/jina_embeddings_v4.py
def get_pooling_params(self, task: PoolingTask) -> Optional[PoolingParams]:
    return self.vision_pooler.get_pooling_params(task)