Transformers documentation
ColModernVBert
نُشر هذا النموذج في أوراق HF في 2025-10-01 وسُهم به في Hugging Face Transformers في 2026-02-23.
ColModernVBert
نظرة عامة
ColModernVBert هو نموذج لاسترجاع المستندات المرئية بكفاءة. يستفيد من ModernVBert لبناء تمثيلات متعددة المتجهات مباشرةً من صور المستندات، متبعًا نهج ColPali.
تم تقديم النموذج في ModernVBERT: Towards Smaller Visual Document Retrievers.
import torch
from huggingface_hub import hf_hub_download
from PIL import Image
from transformers import ColModernVBertForRetrieval, ColModernVBertProcessor
processor = ColModernVBertProcessor.from_pretrained("ModernVBERT/colmodernvbert-hf")
model = ColModernVBertForRetrieval.from_pretrained("ModernVBERT/colmodernvbert-hf", device_map="auto")
# Load the test dataset
queries = [
"A paint on the wall",
"ColModernVBERT matches the performance of models nearly 10x larger on visual document benchmarks."
]
images = [
Image.open(hf_hub_download("HuggingFaceTB/SmolVLM", "example_images/rococo.jpg", repo_type="space")),
Image.open(hf_hub_download("ModernVBERT/colmodernvbert", "table.png", repo_type="model"))
]
# Preprocess the examples
batch_images = processor(images=images).to(model.device)
batch_queries = processor(text=queries).to(model.device)
# Run inference
with torch.inference_mode():
image_embeddings = model(**batch_images).embeddings
query_embeddings = model(**batch_queries).embeddings
# Compute retrieval scores
scores = processor.score_retrieval(
query_embeddings=query_embeddings,
passage_embeddings=image_embeddings,
)
scores = torch.softmax(scores, dim=-1)
print(scores) # [[0.9350, 0.0650], [0.0015, 0.9985]]ColModernVBertConfig
فئة transformers.ColModernVBertConfig
< source >( transformers_version: str | None = Nonearchitectures: list[str] | None = Noneoutput_hidden_states: bool | None = Falsereturn_dict: bool | None = Truedtype: str | torch.dtype | None = Nonechunk_size_feed_forward: int = 0is_encoder_decoder: bool = Falseid2label: dict[int, str] | dict[str, str] | None = Nonelabel2id: dict[str, int] | dict[str, str] | None = Noneproblem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = Nonevlm_config: dict | transformers.configuration_utils.PreTrainedConfig | None = Noneembedding_dim: int = 128initializer_range: float = 0.02 )
المعاملات
- vlm_config (
Union[dict, ~configuration_utils.PreTrainedConfig], اختياري) — كائن الإعداد أو قاموس العمود الفقري لنموذج الرؤية واللغة. - embedding_dim (
int، اختياري، القيمة الافتراضية128) — أبعاد التضمينات والحالات المخفية. - initializer_range (
float، اختياري، القيمة الافتراضية0.02) — الانحراف المعياري لـ truncated_normal_initializer المستخدم في تهيئة جميع مصفوفات الأوزان.
هذه فئة الإعدادات المخزنة لإعدادات نموذج ColmodernvbertModel. تُستخدم لتوليد نموذج Colmodernvbert وفقاً للحجج المحددة، مع تعريف بنية النموذج. إن إنشاء إعدادات باستخدام القيم الافتراضية سيؤدي إلى الحصول على إعدادات مشابهة لتلك الخاصة بـ ModernVBERT/colmodernvbert-merged
ترث كائنات التهيئة من PreTrainedConfig ويمكن استخدامها للتحكم في مخرجات النموذج. اقرأ التوثيق الخاص بـ PreTrainedConfig لمزيد من المعلومات.
ColModernVBertProcessor
فئة transformers.ColModernVBertProcessor
< source >( image_processortokenizer = Nonechat_template = Noneimage_seq_len: int = 64visual_prompt_prefix: str | None = Nonequery_prefix: str | None = None**kwargs )
المعاملات
- image_processor (
image_processor_class) — معالج الصور هو مدخل إلزامي. - tokenizer (
tokenizer_class) — مُجزِّئ النص (tokenizer) هو مدخل إلزامي. - chat_template (
str) — قالب Jinja لتحويل قوائم الرسائل في المحادثة إلى نص قابل للتجزئة. - image_seq_len (
int، اختياري، القيمة الافتراضية 64) — طول تسلسل الصورة، أي عددالرموز لكل صورة في المدخلات. - visual_prompt_prefix (
str, اختياري) — نص يُحوَّل إلى رموز ويُضاف قبل رموز الصورة. - query_prefix (
str، اختياري) — بادئة تُستخدم للاستعلام.
ينشئ ColModernVBertProcessor الذي يجمع معالج الصور ومعالج الرموز في معالج واحد.
يوفر ColModernVBertProcessor جميع وظائف image_processor_class وtokenizer_class. راجع ~image_processor_class و~tokenizer_class لمزيد من المعلومات.
process_images
< source >( images: typing.Union[ForwardRef('PIL.Image.Image'), numpy.ndarray, ForwardRef('torch.Tensor'), list['PIL.Image.Image'], list[numpy.ndarray], list['torch.Tensor'], NoneType] = None**kwargs: *<class 'transformers.models.colmodernvbert.processing_colmodernvbert.ColModernVBertProcessorKwargs'> ) → BatchFeature
المعاملات
- images (
PIL.Image.Image،np.ndarray،torch.Tensor،list[PIL.Image.Image]،list[np.ndarray]،list[torch.Tensor]) — الصورة أو مجموعة الصور التي سيتم تجهيزها. يمكن أن تكون كل صورة صورة PIL، أو مصفوفة NumPy، أو متجه PyTorch. في حالة استخدام مصفوفة NumPy أو متجه PyTorch، يجب أن تكون كل صورة على شكل (C, H, W)، حيث C هو عدد القنوات، وH وW هما ارتفاع الصورة وعرضها. - return_tensors (
strأو TensorType, اختياري) — إذا تم تعيينه، فسيُعاد تينسورات من إطار عمل محدد. القيم المقبولة هي:'pt': إرجاع كائناتtorch.Tensorمن PyTorch.'np': إرجاع كائناتnp.ndarrayمن NumPy.
يعيد
BatchFeature يحتوي على الحقول التالية:
- input_ids — قائمة معرّفات الرموز التي تُغذّى بها النموذج.
- attention_mask — قائمة بالفهارس تحدد الرموز التي يجب على النموذج الانتباه إليها (عندما يكون
return_attention_mask=Trueأو إذا كان “attention_mask” ضمنself.model_input_namesوإذا لم يكنtextNone). - pixel_values — قيم البكسلات التي تُمرَّر إلى النموذج. تُعاد عندما لا تكون
imagesبقيمةNone.
يُعدّ النموذج صورة واحدة أو عدة صور. يتعامل مع التحقق من صحة المدخلات، والتحويل إلى RGB، ويضيف visual_prompt_prefix إلى بداية كل صورة. كما يحسب التسميات اختيارياً من token_type_ids عند توفير suffix في text_kwargs.
process_queries
< source >( text: str | list[str]**kwargs: *<class 'transformers.models.colmodernvbert.processing_colmodernvbert.ColModernVBertProcessorKwargs'> ) → BatchFeature
المعاملات
- text (
str،list[str]،list[list[str]]) — التسلسل أو الدفعة من التسلسلات المراد ترميزها. يمكن أن يكون كل تسلسل نصًا أو قائمة من النصوص (نصوص مُقسّمة مسبقًا إلى رموز). إذا تم تقديم التسلسلات على شكل قائمة من النصوص (مقسّمة مسبقًا)، فيجب تعيينis_split_into_words=True(لرفع الغموض مع دفعة من التسلسلات). - return_tensors (
strأو TensorType, اختياري) — إذا تم تعيينه، فسيُعاد تينسورات من إطار عمل محدد. القيم المقبولة هي:'pt': إرجاع كائناتtorch.Tensorمن PyTorch.'np': إرجاع كائناتnp.ndarrayمن NumPy.
يعيد
BatchFeature يحتوي على الحقول التالية:
- input_ids — قائمة معرّفات الرموز التي تُغذّى بها النموذج.
- attention_mask — قائمة بالفهارس تحدد الرموز التي يجب على النموذج الانتباه إليها (عندما يكون
return_attention_mask=Trueأو إذا كان “attention_mask” ضمنself.model_input_namesوإذا لم يكنtextNone).
استعدّ لاستعلام نصّي واحد أو عدة استعلامات نصية للنموذج. يتعامل مع التحقق من صحة المدخلات، ويضيف بادئة query_prefix في البداية، ويضيف رموز تعزيز الاستعلام (تُستخدم لحشو تمثيلات الاستعلام لتحسين أداء الاسترجاع المتأخر التفاعلي).
score_retrieval
< source >( query_embeddings: typing.Union[ForwardRef('torch.Tensor'), list['torch.Tensor']]passage_embeddings: typing.Union[ForwardRef('torch.Tensor'), list['torch.Tensor']]batch_size: int = 128output_dtype: typing.Optional[ForwardRef('torch.dtype')] = Noneoutput_device: typing.Union[ForwardRef('torch.device'), str] = 'cpu' ) → torch.Tensor
المعاملات
- query_embeddings (
Union[torch.Tensor, list[torch.Tensor]) — تمثيلات الاستعلام. - passage_embeddings (
Union[torch.Tensor, list[torch.Tensor]) — تمثيلات المقاطع. - batch_size (
int، اختياري، القيمة الافتراضية 128) — حجم الدفعة لحساب الدرجات. - output_dtype (
torch.dtype، اختياري، القيمة الافتراضيةtorch.float32) — نوع البيانات (dtype) للمصفوفة الناتجة. إذا كانتNone، يتم استخدام نوع بيانات التضمينات المدخلة. - output_device (
torch.deviceأوstr، اختياري، القيمة الافتراضية هي “cpu”) — جهاز المصفوفة الناتجة.
يعيد
torch.Tensor
مصفوفة (Tensor) ذات الشكل (n_queries, n_passages) تحتوي على الدرجات. تُحفظ مصفوفة الدرجات على جهاز "cpu".
احسب درجة التفاعل المتأخر/MaxSim (على غرار ColBERT) لمتجهات الاستعلام متعددة المتجهات (qs) ومتجهات المقاطع (ps) المعطاة. في حالة ColQwen2، يكون المقطع هو صورة صفحة من المستند.
بما أن متجهات التضمين متعددة المتجهات، فقد تختلف أشكالها، لذا يجب إدخالها على النحو التالي: (1) قائمة من المتجهات، حيث يكون شكل المتجه رقم i هو (sequence_length_i, embedding_dim) (2) متجه واحد من الشكل (n_passages, max_sequence_length, embedding_dim) -> وهو ما يُحصل عليه عادةً عن طريق ملء قائمة المتجهات.
ColModernVBertForRetrieval
فئة transformers.ColModernVBertForRetrieval
< source >( config: ColModernVBertConfig )
المعاملات
- config (ColModernVBertConfig) — فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. لا يؤدي التهيئة باستخدام ملف الإعدادات إلى تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة from_pretrained() لتحميل أوزان النموذج.
باتباع نهج ColPali، يستفيد ColModernVBert من نماذج اللغة البصرية (VLMs) لبناء تمثيلات متعددة المتجهات (multi-vector embeddings) فعالة مباشرةً من صور المستندات ("لقطات الشاشة") لأغراض استرجاع المستندات. يتم تدريب النموذج على تعظيم التشابه بين تمثيلات المستندات هذه وتمثيلات الاستعلامات المقابلة، باستخدام طريقة التفاعل المتأخر (late interaction) المقدمة في ColBERT.
يُزيل استخدام ColModernVBert الحاجة إلى خطوط معالجة معقدة وهشة محتملاً للتعرف على التخطيط ومعالجة الحروف الضوئية، من خلال نموذج واحد قادر على مراعاة المحتوى النصي والبصري (التخطيط، الرسوم البيانية، ...) للمستند.
يُدرَّب ColModernVBert فوق ModernVBert، وقد قُدِّم في الورقة البحثية التالية: ModernVBERT: Towards Smaller Visual Document Retrievers.
يُعدّ ColModernVBert جزءًا من عائلة نماذج ColVision، التي تم تقديمها مع ColPali في الورقة البحثية التالية: ColPali: Efficient Document Retrieval with Vision Language Models.
يرث هذا النموذج من PreTrainedModel. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع نماذجها (مثل التحميل أو الحفظ، وتغيير حجم تضمينات الإدخال، وقص الرؤوس، وما إلى ذلك).
هذا النموذج هو أيضًا فئة فرعية من torch.nn.Module في PyTorch. استخدمه كوحدة PyTorch عادية، وارجع إلى توثيق PyTorch لكل ما يتعلق بالاستخدام العام والسلوك.
forward
< source >( input_ids: typing.Optional[torch.LongTensor] = Nonepixel_values: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → ColModernVBertForRetrievalOutput or tuple(torch.Tensor)
المعاملات
- input_ids (
torch.LongTensorبشكل(batch_size, sequence_length), اختياري) — مؤشرات رموز تسلسل الإدخال في قاموس الكلمات. سيتم تجاهل الحشو افتراضيًا.يمكن الحصول على الفهارس باستخدام AutoTokenizer. راجع PreTrainedTokenizer.encode() و PreTrainedTokenizer.call() للتفاصيل.
- pixel_values (
torch.Tensorمن الشكل(batch_size, num_channels, image_size, image_size)، اختياري) — المصفوفات المقابلة للصور المدخلة. يمكن الحصول على قيم البكسل باستخدامimage_processor_class. راجعimage_processor_class.__call__للتفاصيل (يستخدم ColModernVBertProcessorimage_processor_classلمعالجة الصور). - attention_mask (
torch.Tensorبشكل(batch_size, sequence_length), اختياري) — قناع لتجنب تنفيذ الانتباه على فهارس رموز الحشو. القيم المختارة للقناع هي[0, 1]:- 1 للرموز التي لم تُقنَّع،
- 0 للرموز التي تم إخفاؤها.
يعيد
ColModernVBertForRetrievalOutput أو tuple(torch.Tensor)
ColModernVBertForRetrievalOutput أو مجموعة مرتبة من
torch.Tensor (إذا تم تمرير return_dict=False أو عندما يكون config.return_dict=False) وتتضمن عناصر
مختلفة اعتمادًا على الإعداد (ColModernVBertConfig) والمدخلات.
تتجاوز طريقة ColModernVBertForRetrieval الخاصة بالتقديم (forward) الطريقة الخاصة __call__.
على الرغم من أنه يجب تعريف وصفة المرور الأمامي داخل هذه الدالة، إلا أنه ينبغي استدعاء كائن
Moduleبدلاً من هذه الدالة، لأن الكائن يتولى تنفيذ خطوات المعالجة المسبقة والمعالجة اللاحقة، بينما تتجاهل الدالة هذه الخطوات بصمت.
loss (
torch.Tensorof shape(1,), اختياري, يُعاد عند توفيرlabels) — خسارة نمذجة اللغة (لتوقع الرمز التالي).التمثيلات (
torch.Tensorمن الشكل(batch_size, sequence_length, hidden_size)) — التمثيلات الخاصة بالنموذج.hidden_states (
tuple[torch.Tensor]، اختياري، يُعاد عند تمريرoutput_hidden_states=Trueأو عند تعيينconfig.output_hidden_states=True) — مجموعة منtorch.Tensor(واحدة لإخراج الطبقات المضمنة، إذا كان النموذج يحتوي على طبقة تضمين، + واحدة لإخراج كل طبقة) من الشكل(batch_size, sequence_length, hidden_size).حالات النموذج المخفية عند مخرج كل طبقة بالإضافة إلى مخرجات التضمين الأولي الاختيارية.
image_hidden_states (
tuple(torch.Tensor)، اختياري، يُعاد عند تمريرoutput_hidden_states=Trueأو عند تعيينconfig.output_hidden_states=Trueوتوفيرpixel_values) — مجموعة منtorch.Tensor(واحدة لإخراج إسقاط نمط الصورة + واحدة لإخراج كل طبقة) بأبعاد(batch_size, num_channels, image_size, image_size). حالات الإخفاء (Hidden-states) لمشفّر الصورة عند إخراج كل طبقة بالإضافة إلى مخرجات إسقاط النمط الأولية.attentions (
tuple[torch.Tensor]، اختياري، يُعاد عند تمريرoutput_attentions=Trueأو عند تعيينconfig.output_attentions=True) — مجموعة منtorch.Tensor(واحدة لكل طبقة) بأبعاد(batch_size, num_heads, sequence_length, sequence_length).أوزان الانتباه بعد تطبيق دالة softmax على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.