# DPR

## نظرة عامة

استرجاع المقاطع الكثيفة (Dense Passage Retrieval) هو مجموعة من الأدوات والنماذج لأبحاث أسئلة وأجوبة مفتوحة المجال من الطراز الأحدث. تم تقديمه في [استرجاع المقاطع الكثيفة لأسئلة وأجوبة مفتوحة المجال](https://huggingface.co/papers/2004.04906) من قِبل فلاديمير كاربوكين، بارلاس أوغوز، سيوون مين، باتريك لويس، ليدل وو، سيرغي إدونوف، دانكي تشين، ون-تاو يي.

المستخلص من الورقة البحثية هو كالتالي:

*يعتمد الإجابة على الأسئلة في المجال المفتوح على استرجاع فعّال للمقاطع النصية لاختيار السياقات المرشحة، حيث تُعدّ نماذج الفضاء المتجهي المتناثر التقليدية، مثل TF-IDF أو BM25، الطريقة المعتمدة عملياً. في هذا العمل، نُظهر أنه يمكن تنفيذ الاسترجاع عملياً باستخدام التمثيلات الكثيفة وحدها، حيث تُتعلّم التضمينات من عدد صغير من الأسئلة والمقاطع النصية عبر إطار مشفّر مزدوج بسيط. عند التقييم على مجموعة واسعة من مجموعات بيانات الإجابة على الأسئلة في المجال المفتوح، يتفوق مسترجعنا الكثيف على نظام Lucene-BM25 القوي بفارق كبير يتراوح بين 9% و19% مطلقاً من حيث دقة استرجاع المقاطع العشرين الأولى، ويساعد نظام الإجابة على الأسئلة الشامل لدينا على تحقيق مستويات أداء جديدة متقدمة على عدة معايير تقييم للإجابة على الأسئلة في المجال المفتوح.*

تمت مساهمة هذا النموذج من قِبل [lhoestq](https://huggingface.co/lhoestq). يمكن العثور على الكود الأصلي [هنا](https://github.com/facebookresearch/DPR).

## نصائح للاستخدام

- يتألف DPR من ثلاثة نماذج:

  * مُشفِّر الأسئلة: ترميز الأسئلة كمتجهات
  * مُشفِّر السياق: ترميز السياقات كمتجهات
  * القارئ: استخراج إجابات الأسئلة داخل السياقات المسترجعة، مع درجة صلة (عالية إذا كان المقطع المستنتج يجيب فعلياً على السؤال).

## DPRConfig[[transformers.DPRConfig]]

#### transformers.DPRConfig[[transformers.DPRConfig]]

```python
transformers.DPRConfig(transformers_version: str | None = None, architectures: list[str] | None = None, output_hidden_states: bool | None = False, return_dict: bool | None = True, dtype: str | torch.dtype | None = None, chunk_size_feed_forward: int = 0, is_encoder_decoder: bool = False, id2label: dict[int, str] | dict[str, str] | None = None, label2id: dict[str, int] | dict[str, str] | None = None, problem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = None, vocab_size: int = 30522, hidden_size: int = 768, num_hidden_layers: int = 12, num_attention_heads: int = 12, intermediate_size: int = 3072, hidden_act: str = 'gelu', hidden_dropout_prob: float | int = 0.1, attention_probs_dropout_prob: float | int = 0.1, max_position_embeddings: int = 512, type_vocab_size: int = 2, initializer_range: float = 0.02, layer_norm_eps: float = 1e-12, pad_token_id: int | None = 0, bos_token_id: int | None = None, eos_token_id: int | list[int] | None = None, projection_dim: int = 0, is_decoder: bool = False, add_cross_attention: bool = False)
```

[المصدر](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/models/dpr/configuration_dpr.py#L24)

**المعاملات:**

vocab_size (`int`، *اختياري*، القيمة الافتراضية `30522`) : حجم مفردات النموذج. يحدد عدد الرموز المختلفة التي يمكن تمثيلها بواسطة `input_ids`.

hidden_size (`int`، *اختياري*، القيمة الافتراضية `768`) : بُعد التمثيلات المخفية.

num_hidden_layers (`int`، *اختياري*، القيمة الافتراضية `12`) : عدد الطبقات المخفية في مُفكِّك Transformer.

num_attention_heads (`int`، *اختياري*، القيمة الافتراضية `12`) : عدد رؤوس الانتباه في كل طبقة انتباه داخل مُفكِّك Transformer.

intermediate_size (`int`، *اختياري*، القيمة الافتراضية `3072`) : بُعد تمثيلات MLP.

hidden_act (`str`، *اختياري*، القيمة الافتراضية `gelu`) : دالة التنشيط غير الخطية (دالة أو نص) في المُفكِّك. على سبيل المثال، `"gelu"`، `"relu"`، `"silu"`، وما إلى ذلك.

hidden_dropout_prob (`Union[float, int]`، *اختياري*، القيمة الافتراضية `0.1`) : احتمال الإسقاط (dropout) لجميع الطبقات المتصلة بالكامل في التضمينات (embeddings) والمُشفِّر (encoder) والمُجمِّع (pooler).

attention_probs_dropout_prob (`Union[float, int]`، *اختياري*، القيمة الافتراضية `0.1`) : نسبة الإسقاط (dropout) لاحتمالات الانتباه.

max_position_embeddings (`int`، *اختياري*، القيمة الافتراضية `512`) : أقصى طول تسلسل قد يُستخدم مع هذا النموذج.

type_vocab_size (`int`، *اختياري*، القيمة الافتراضية `2`) : حجم مفردات `token_type_ids`.

initializer_range (`float`، *اختياري*، القيمة الافتراضية `0.02`) : الانحراف المعياري لـ truncated_normal_initializer المستخدم في تهيئة جميع مصفوفات الأوزان.

layer_norm_eps (`float`، *اختياري*، القيمة الافتراضية `1e-12`) : قيمة الإيبسلون المستخدمة في طبقات تطبيع الطبقة.

pad_token_id (`int`، *اختياري*، القيمة الافتراضية `0`) : معرّف الرمز المستخدم للتعبئة في المفردات.

bos_token_id (`int`, *اختياري*) : معرّف الرمز المستخدم لبدء البث في المفردات.

eos_token_id (`Union[int, list[int]]`، *اختياري*) : معرّف الرمز المستخدم لنهاية البث في المفردات.

projection_dim (`int`، *اختياري*، القيمة الافتراضية `0`) : بُعد طبقات الإسقاط للنص والرؤية.

is_decoder (`bool`، *اختياري*، الافتراضي `False`) : ما إذا كان النموذج يُستخدم كمُفكِّك أم لا. إذا كان `False`، يُستخدم النموذج كمُشفِّر.

add_cross_attention (`bool`, *اختياري*, الافتراضي هو `False`) : ما إذا كان يجب إضافة طبقات الانتباه المتقاطع إلى النموذج.

هذه فئة الإعدادات المخزنة لإعدادات DPRQuestionEncoder. تُستخدم لاستحداث نموذج Dpr وفقاً للحجج المحددة، مع تعريف بنية النموذج. إن استحداث إعدادات باستخدام القيم الافتراضية سيؤدي إلى إعدادات مشابهة لتلك الخاصة بـ [facebook/dpr-ctx_encoder-single-nq-base](https://huggingface.co/facebook/dpr-ctx_encoder-single-nq-base)

ترث كائنات الإعداد من [PreTrainedConfig](/docs/transformers/v5.23.0/ar/main_classes/configuration#transformers.PreTrainedConfig) ويمكن استخدامها للتحكم في مخرجات النموذج. اقرأ التوثيق الخاص بـ [PreTrainedConfig](/docs/transformers/v5.23.0/ar/main_classes/configuration#transformers.PreTrainedConfig) لمزيد من المعلومات.

مثال:

```python
>>> from transformers import DPRConfig, DPRContextEncoder

>>> # Initializing a DPR facebook/dpr-ctx_encoder-single-nq-base style configuration
>>> configuration = DPRConfig()

>>> # Initializing a model (with random weights) from the facebook/dpr-ctx_encoder-single-nq-base style configuration
>>> model = DPRContextEncoder(configuration)

>>> # Accessing the model configuration
>>> configuration = model.config
```

## DPRContextEncoderTokenizer[[transformers.DPRContextEncoderTokenizer]]

#### transformers.DPRContextEncoderTokenizer[[transformers.DPRContextEncoderTokenizer]]

```python
transformers.DPRContextEncoderTokenizer(*args, do_lower_case = False, **kwargs)
```

[المصدر](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/models/dpr/tokenization_dpr.py#L28)

أنشئ مُرمِّزًا (tokenizer) لـ DPRContextEncoder.

[DPRContextEncoderTokenizer](/docs/transformers/v5.23.0/ar/model_doc/dpr#transformers.DPRContextEncoderTokenizer) مطابق تمامًا لـ [BertTokenizer](/docs/transformers/v5.23.0/ar/model_doc/lxmert#transformers.BertTokenizer) وينفّذ عملية الترميز من البداية إلى النهاية: تقسيم علامات الترقيم وتقسيم الكلمات.

راجع الفئة الأصلية [BertTokenizer](/docs/transformers/v5.23.0/ar/model_doc/lxmert#transformers.BertTokenizer) للحصول على أمثلة على الاستخدام والتوثيق المتعلق بالمعاملات.

## DPRContextEncoderTokenizerFast[[transformers.DPRContextEncoderTokenizerFast]]

#### transformers.DPRContextEncoderTokenizerFast[[transformers.DPRContextEncoderTokenizerFast]]

```python
transformers.DPRContextEncoderTokenizerFast(vocab: str | dict[str, int] | None = None, do_lower_case: bool = True, unk_token: str = '[UNK]', sep_token: str = '[SEP]', pad_token: str = '[PAD]', cls_token: str = '[CLS]', mask_token: str = '[MASK]', tokenize_chinese_chars: bool = True, strip_accents: bool | None = None, **kwargs)
```

[المصدر](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/models/dpr/tokenization_dpr_fast.py#L29)

أنشئ مُرمِّزًا (tokenizer) "سريعًا" لـ DPRContextEncoder (مدعومًا بمكتبة *tokenizers* من HuggingFace).

[DPRContextEncoderTokenizerFast](/docs/transformers/v5.23.0/ar/model_doc/dpr#transformers.DPRContextEncoderTokenizerFast) مطابق تمامًا لـ [BertTokenizer](/docs/transformers/v5.23.0/ar/model_doc/lxmert#transformers.BertTokenizer) وينفّذ عملية الترميز من البداية إلى النهاية: تقسيم علامات الترقيم وتقسيم الكلمات.

راجع الفئة الأصلية [BertTokenizer](/docs/transformers/v5.23.0/ar/model_doc/lxmert#transformers.BertTokenizer) للحصول على أمثلة على الاستخدام والتوثيق المتعلق بالمعاملات.

## DPRQuestionEncoderTokenizer[[transformers.DPRQuestionEncoderTokenizer]]

#### transformers.DPRQuestionEncoderTokenizer[[transformers.DPRQuestionEncoderTokenizer]]

```python
transformers.DPRQuestionEncoderTokenizer(*args, do_lower_case = False, **kwargs)
```

[المصدر](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/models/dpr/tokenization_dpr.py#L45)

ينشئ مُرمِّز DPRQuestionEncoder.

[DPRQuestionEncoderTokenizer](/docs/transformers/v5.23.0/ar/model_doc/dpr#transformers.DPRQuestionEncoderTokenizer) مطابق تمامًا لـ [BertTokenizer](/docs/transformers/v5.23.0/ar/model_doc/lxmert#transformers.BertTokenizer) وينفّذ عملية الترميز من البداية إلى النهاية: تقسيم علامات الترقيم وتقسيم الكلمات.

راجع الفئة الأصلية [BertTokenizer](/docs/transformers/v5.23.0/ar/model_doc/lxmert#transformers.BertTokenizer) للحصول على أمثلة على الاستخدام والتوثيق المتعلق بالمعاملات.

## DPRQuestionEncoderTokenizerFast[[transformers.DPRQuestionEncoderTokenizerFast]]

#### transformers.DPRQuestionEncoderTokenizerFast[[transformers.DPRQuestionEncoderTokenizerFast]]

```python
transformers.DPRQuestionEncoderTokenizerFast(vocab: str | dict[str, int] | None = None, do_lower_case: bool = True, unk_token: str = '[UNK]', sep_token: str = '[SEP]', pad_token: str = '[PAD]', cls_token: str = '[CLS]', mask_token: str = '[MASK]', tokenize_chinese_chars: bool = True, strip_accents: bool | None = None, **kwargs)
```

[المصدر](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/models/dpr/tokenization_dpr_fast.py#L43)

ينشئ مُرمِّز DPRQuestionEncoder "سريع" (مدعوم بمكتبة *tokenizers* من HuggingFace).

[DPRQuestionEncoderTokenizerFast](/docs/transformers/v5.23.0/ar/model_doc/dpr#transformers.DPRQuestionEncoderTokenizerFast) مطابق تمامًا لـ [BertTokenizer](/docs/transformers/v5.23.0/ar/model_doc/lxmert#transformers.BertTokenizer) وينفّذ عملية الترميز من البداية إلى النهاية: تقسيم علامات الترقيم وتقسيم الكلمات.

راجع الفئة الأصلية [BertTokenizer](/docs/transformers/v5.23.0/ar/model_doc/lxmert#transformers.BertTokenizer) للحصول على أمثلة على الاستخدام والتوثيق المتعلق بالمعاملات.

## DPRReaderTokenizer[[transformers.DPRReaderTokenizer]]

#### transformers.DPRReaderTokenizer[[transformers.DPRReaderTokenizer]]

```python
transformers.DPRReaderTokenizer(*args, do_lower_case = False, **kwargs)
```

[المصدر](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/models/dpr/tokenization_dpr.py#L311)

**المعاملات:**

questions (`str` أو `list[str]`) : الأسئلة المراد ترميزها. يمكنك تحديد سؤال واحد لعدد كبير من المقاطع. في هذه الحالة، سيتم تكرار السؤال على النحو التالي `[questions] * n_passages`. وإلا، يجب عليك تحديد عدد من الأسئلة يساوي عدد العناصر في `titles` أو `texts`.

titles (`str` أو `list[str]`) : عناوين المقاطع المراد ترميزها. يمكن أن يكون نصًا أو قائمة من النصوص إذا كان هناك عدة مقاطع.

texts (`str` أو `list[str]`) : نصوص المقاطع المراد ترميزها. يمكن أن يكون نصًا واحدًا أو قائمة من النصوص إذا كانت هناك عدة مقاطع.

padding (`bool` أو `str` أو [PaddingStrategy](/docs/transformers/v5.23.0/ar/internal/file_utils#transformers.utils.PaddingStrategy)، *اختياري*، القيمة الافتراضية `False`) : يُفعّل التحكم في الحشو. يقبل القيم التالية:  - `True` أو `'longest'`: الحشو حتى أطول تسلسل في الدفعة (أو بدون حشو إذا تم تقديم تسلسل واحد فقط). - `'max_length'`: الحشو حتى الحد الأقصى للطول المحدد بواسطة الحجة `max_length` أو حتى الحد الأقصى المقبول لطول الإدخال للنموذج إذا لم تُقدَّم تلك الحجة. - `False` أو `'do_not_pad'` (الافتراضي): بدون حشو (أي، يمكنه إخراج دفعة تحتوي على تسلسلات بطول مختلف).

truncation (`bool` أو `str` أو [TruncationStrategy](/docs/transformers/v5.23.0/ar/internal/tokenization_utils#transformers.tokenization_utils_base.TruncationStrategy)، *اختياري*، القيمة الافتراضية `False`) : يُفعّل التحكم في القص. يقبل القيم التالية:  - `True` أو `'longest_first'`: يُقصّ إلى الحد الأقصى للطول المحدد عبر الحجة `max_length` أو إلى الحد الأقصى لطول الإدخال المقبول للنموذج إذا لم تُقدَّم تلك الحجة. سيؤدي هذا إلى القص رمزًا تلو الآخر، مع إزالة رمز من أطول تسلسل في الزوج إذا قُدِّم زوج من التسلسلات (أو دفعة من الأزواج). - `'only_first'`: يُقصّ إلى الحد الأقصى للطول المحدد عبر الحجة `max_length` أو إلى الحد الأقصى لطول الإدخال المقبول للنموذج إذا لم تُقدَّم تلك الحجة. سيؤدي هذا إلى قصّ التسلسل الأول من الزوج فقط إذا قُدِّم زوج من التسلسلات (أو دفعة من الأزواج). - `'only_second'`: يُقصّ إلى الحد الأقصى للطول المحدد عبر الحجة `max_length` أو إلى الحد الأقصى لطول الإدخال المقبول للنموذج إذا لم تُقدَّم تلك الحجة. سيؤدي هذا إلى قصّ التسلسل الثاني من الزوج فقط إذا قُدِّم زوج من التسلسلات (أو دفعة من الأزواج). - `False` أو `'do_not_truncate'` (الافتراضي): لا يوجد قص (أي، يمكن إخراج دفعة بأطوال تسلسلات أكبر من الحد الأقصى المقبول لحجم الإدخال للنموذج).

max_length (`int`, *اختياري*) : يتحكم في الحد الأقصى للطول الذي سيستخدمه أحد معاملات القص/الحشو. إذا تُرك غير مضبوط أو ضُبط على `None`، فسيتم استخدام الحد الأقصى للطول المحدد مسبقًا للنموذج إذا كان أحد معاملات القص/الحشو يتطلب حدًا أقصى للطول. إذا لم يكن للنموذج حد أقصى محدد لطول الإدخال (مثل XLNet)، فسيتم تعطيل القص/الحشو إلى حد أقصى للطول.

return_tensors (`str` أو [TensorType](/docs/transformers/v5.23.0/ar/internal/file_utils#transformers.TensorType)، *اختياري*) : إذا تم تعيينه، فسيُرجع تينسورات بدلاً من قائمة من الأعداد الصحيحة بلغة بايثون. القيم المقبولة هي: - `'pt'`: يُرجع كائنات `torch.Tensor` من PyTorch. - `'np'`: يُرجع كائنات `np.ndarray` من Numpy.

return_attention_mask (`bool`، *اختياري*) : ما إذا كان يجب إرجاع قناع الانتباه أم لا. إذا لم يتم ضبطه، فسيتم إرجاع قناع الانتباه وفقًا للقيمة الافتراضية الخاصة بمُجزِّئ الرموز المحدد، كما هو معرّف بواسطة الخاصية `return_outputs`.  [ما هي أقنعة الانتباه؟](../glossary#attention-mask)

**يعيد:** `dict[str, list[list[int]]]`

قاموس بالمفاتيح التالية:

- `input_ids`: قائمة بمعرّفات الرموز المراد تغذيتها إلى النموذج.
- `attention_mask`: قائمة بالفهارس تحدد الرموز التي يجب أن يوليها النموذج انتباهه.

أنشئ مُرمِّز DPRReader.

[DPRReaderTokenizer](/docs/transformers/v5.23.0/ar/model_doc/dpr#transformers.DPRReaderTokenizer) مطابق تقريبًا لـ [BertTokenizer](/docs/transformers/v5.23.0/ar/model_doc/lxmert#transformers.BertTokenizer) وينفّذ عملية الترميز من البداية إلى النهاية: تقسيم علامات الترقيم وتقسيم الكلمات. والفرق أنه يحتوي على ثلاثة مدخلات نصية: السؤال، والعناوين، والنصوص، التي تُدمج معًا لتُغذّى إلى نموذج [DPRReader](/docs/transformers/v5.23.0/ar/model_doc/dpr#transformers.DPRReader).

راجع الفئة الأصلية [BertTokenizer](/docs/transformers/v5.23.0/ar/model_doc/lxmert#transformers.BertTokenizer) للحصول على أمثلة على الاستخدام والتوثيق المتعلق بالمعاملات.

تعيد قاموسًا يحتوي على معرّفات الرموز (token ids) للنصوص المدخلة ومعلومات أخرى تُمرَّر إلى `.decode_best_spans`. يقوم بتحويل نصوص سؤال ومقاطع مختلفة (العنوان والنص) إلى تسلسل من المعرّفات (أعداد صحيحة)، باستخدام مُجزِّئ الرموز (tokenizer) والقاموس. تكون النتيجة `input_ids` مصفوفة بحجم `(n_passages, sequence_length)`

بصيغة:

```
[CLS] <question token ids> [SEP] <titles ids> [SEP] <texts ids>
```

## DPRReaderTokenizerFast[[transformers.DPRReaderTokenizerFast]]

#### transformers.DPRReaderTokenizerFast[[transformers.DPRReaderTokenizerFast]]

```python
transformers.DPRReaderTokenizerFast(vocab: str | dict[str, int] | None = None, do_lower_case: bool = True, unk_token: str = '[UNK]', sep_token: str = '[SEP]', pad_token: str = '[PAD]', cls_token: str = '[CLS]', mask_token: str = '[MASK]', tokenize_chinese_chars: bool = True, strip_accents: bool | None = None, **kwargs)
```

[المصدر](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/models/dpr/tokenization_dpr_fast.py#L301)

**المعاملات:**

questions (`str` أو `list[str]`) : الأسئلة المراد ترميزها. يمكنك تحديد سؤال واحد لعدد كبير من المقاطع. في هذه الحالة، سيتم تكرار السؤال على النحو التالي `[questions] * n_passages`. وإلا، يجب عليك تحديد عدد من الأسئلة يساوي عدد العناصر في `titles` أو `texts`.

titles (`str` أو `list[str]`) : عناوين المقاطع المراد ترميزها. يمكن أن يكون نصًا أو قائمة من النصوص إذا كان هناك عدة مقاطع.

texts (`str` أو `list[str]`) : نصوص المقاطع المراد ترميزها. يمكن أن يكون نصًا واحدًا أو قائمة من النصوص إذا كانت هناك عدة مقاطع.

padding (`bool` أو `str` أو [PaddingStrategy](/docs/transformers/v5.23.0/ar/internal/file_utils#transformers.utils.PaddingStrategy)، *اختياري*، القيمة الافتراضية `False`) : يُفعّل التحكم في الحشو. يقبل القيم التالية:  - `True` أو `'longest'`: الحشو حتى أطول تسلسل في الدفعة (أو بدون حشو إذا تم تقديم تسلسل واحد فقط). - `'max_length'`: الحشو حتى الحد الأقصى للطول المحدد بواسطة الحجة `max_length` أو حتى الحد الأقصى المقبول لطول الإدخال للنموذج إذا لم تُقدَّم تلك الحجة. - `False` أو `'do_not_pad'` (الافتراضي): بدون حشو (أي، يمكنه إخراج دفعة تحتوي على تسلسلات بطول مختلف).

truncation (`bool` أو `str` أو [TruncationStrategy](/docs/transformers/v5.23.0/ar/internal/tokenization_utils#transformers.tokenization_utils_base.TruncationStrategy)، *اختياري*، القيمة الافتراضية `False`) : يُفعّل التحكم في القص. يقبل القيم التالية:  - `True` أو `'longest_first'`: يُقصّ إلى الحد الأقصى للطول المحدد عبر الحجة `max_length` أو إلى الحد الأقصى لطول الإدخال المقبول للنموذج إذا لم تُقدَّم تلك الحجة. سيؤدي هذا إلى القص رمزًا تلو الآخر، مع إزالة رمز من أطول تسلسل في الزوج إذا قُدِّم زوج من التسلسلات (أو دفعة من الأزواج). - `'only_first'`: يُقصّ إلى الحد الأقصى للطول المحدد عبر الحجة `max_length` أو إلى الحد الأقصى لطول الإدخال المقبول للنموذج إذا لم تُقدَّم تلك الحجة. سيؤدي هذا إلى قصّ التسلسل الأول من الزوج فقط إذا قُدِّم زوج من التسلسلات (أو دفعة من الأزواج). - `'only_second'`: يُقصّ إلى الحد الأقصى للطول المحدد عبر الحجة `max_length` أو إلى الحد الأقصى لطول الإدخال المقبول للنموذج إذا لم تُقدَّم تلك الحجة. سيؤدي هذا إلى قصّ التسلسل الثاني من الزوج فقط إذا قُدِّم زوج من التسلسلات (أو دفعة من الأزواج). - `False` أو `'do_not_truncate'` (الافتراضي): لا يوجد قص (أي، يمكن إخراج دفعة بأطوال تسلسلات أكبر من الحد الأقصى المقبول لحجم الإدخال للنموذج).

max_length (`int`, *اختياري*) : يتحكم في الحد الأقصى للطول الذي سيستخدمه أحد معاملات القص/الحشو. إذا تُرك غير مضبوط أو ضُبط على `None`، فسيتم استخدام الحد الأقصى للطول المحدد مسبقًا للنموذج إذا كان أحد معاملات القص/الحشو يتطلب حدًا أقصى للطول. إذا لم يكن للنموذج حد أقصى محدد لطول الإدخال (مثل XLNet)، فسيتم تعطيل القص/الحشو إلى حد أقصى للطول.

return_tensors (`str` أو [TensorType](/docs/transformers/v5.23.0/ar/internal/file_utils#transformers.TensorType)، *اختياري*) : إذا تم تعيينه، فسيُرجع تينسورات بدلاً من قائمة من الأعداد الصحيحة بلغة بايثون. القيم المقبولة هي: - `'pt'`: يُرجع كائنات `torch.Tensor` من PyTorch. - `'np'`: يُرجع كائنات `np.ndarray` من Numpy.

return_attention_mask (`bool`، *اختياري*) : ما إذا كان يجب إرجاع قناع الانتباه أم لا. إذا لم يتم ضبطه، فسيتم إرجاع قناع الانتباه وفقًا للقيمة الافتراضية الخاصة بمُجزِّئ الرموز المحدد، كما هو معرّف بواسطة الخاصية `return_outputs`.  [ما هي أقنعة الانتباه؟](../glossary#attention-mask)

**يعيد:** `dict[str, list[list[int]]]`

قاموس بالمفاتيح التالية:

- `input_ids`: قائمة بمعرّفات الرموز المراد تغذيتها إلى النموذج.
- `attention_mask`: قائمة بالفهارس تحدد الرموز التي يجب أن يوليها النموذج انتباهه.

ينشئ مُرمِّز DPRReader "سريع" (مدعوم بمكتبة *tokenizers* من HuggingFace).

[DPRReaderTokenizerFast](/docs/transformers/v5.23.0/ar/model_doc/dpr#transformers.DPRReaderTokenizerFast) مطابق تقريبًا لـ [BertTokenizer](/docs/transformers/v5.23.0/ar/model_doc/lxmert#transformers.BertTokenizer) وينفّذ عملية الترميز من البداية إلى النهاية: تقسيم علامات الترقيم وتقسيم الكلمات. والفرق أنه يحتوي على ثلاثة مدخلات نصية: السؤال، والعناوين، والنصوص، التي تُدمج معًا لتُغذّى إلى نموذج [DPRReader](/docs/transformers/v5.23.0/ar/model_doc/dpr#transformers.DPRReader).

راجع الفئة الأصلية [BertTokenizer](/docs/transformers/v5.23.0/ar/model_doc/lxmert#transformers.BertTokenizer) للحصول على أمثلة على الاستخدام والتوثيق المتعلق بالمعاملات.

تُعيد قاموسًا يحتوي على معرّفات الرموز (token ids) للنصوص المدخلة ومعلومات أخرى تُمرَّر إلى `.decode_best_spans`. يقوم بتحويل نصوص سؤال ومقاطع مختلفة (العنوان والنص) إلى تسلسل من المعرّفات (أعداد صحيحة)، باستخدام مُجزِّئ الرموز (tokenizer) والقاموس. تكون النتيجة `input_ids` مصفوفة بحجم `(n_passages, sequence_length)` بالصيغة التالية:

[CLS]  [SEP]  [SEP]

## المخرجات الخاصة بـ DPR[[transformers.models.dpr.modeling_dpr.DPRContextEncoderOutput]]

#### transformers.models.dpr.modeling_dpr.DPRContextEncoderOutput[[transformers.models.dpr.modeling_dpr.DPRContextEncoderOutput]]

```python
transformers.models.dpr.modeling_dpr.DPRContextEncoderOutput(pooler_output: Tensor, hidden_states: tuple[torch.Tensor, ...] | None = None, attentions: tuple[torch.Tensor, ...] | None = None)
```

[المصدر](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/models/dpr/modeling_dpr.py#L46)

**المعاملات:**

pooler_output (`torch.Tensor` من الشكل `(batch_size, embeddings_size)`) : تُخرج مُشفِّر DPR *pooler_output* الذي يتوافق مع تمثيل السياق. حالة المخفية للطبقة الأخيرة للرمز الأول من التسلسل (رمز التصنيف) بعد معالجتها بواسطة طبقة خطية. يُستخدم هذا المخرج لتضمين السياجات للاستعلام عن الجيران الأقرب باستخدام تضمينات الأسئلة.

hidden_states (`tuple[torch.Tensor, ...]`، *اختياري*، يُعاد عند تمرير `output_hidden_states=True` أو عند تعيين `config.output_hidden_states=True`) : مجموعة من `torch.Tensor` (واحدة لإخراج الطبقات المضمنة، إذا كان النموذج يحتوي على طبقة تضمين، + واحدة لإخراج كل طبقة) بأبعاد `(batch_size, sequence_length, hidden_size)`. حالات مخفية للنموذج عند إخراج كل طبقة بالإضافة إلى إخراجات التضمين الأولية الاختيارية.

attentions (`tuple[torch.Tensor, ...]`، *اختياري*، يُعاد عند تمرير `output_attentions=True` أو عند تعيين `config.output_attentions=True`) : مجموعة من `torch.Tensor` (واحدة لكل طبقة) بأبعاد `(batch_size, num_heads, sequence_length, sequence_length)`. أوزان الانتباه بعد تطبيق softmax على الانتباه، وتُستخدم لحساب المتوسط المرجح في رؤوس الانتباه الذاتي.

فئة لمخرجات [DPRQuestionEncoder](/docs/transformers/v5.23.0/ar/model_doc/dpr#transformers.DPRQuestionEncoder).

#### transformers.models.dpr.modeling_dpr.DPRQuestionEncoderOutput[[transformers.models.dpr.modeling_dpr.DPRQuestionEncoderOutput]]

```python
transformers.models.dpr.modeling_dpr.DPRQuestionEncoderOutput(pooler_output: Tensor, hidden_states: tuple[torch.Tensor, ...] | None = None, attentions: tuple[torch.Tensor, ...] | None = None)
```

[المصدر](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/models/dpr/modeling_dpr.py#L65)

**المعاملات:**

pooler_output (`torch.Tensor` من الشكل `(batch_size, embeddings_size)`) : تُخرج مُشفِّر DPR *pooler_output* الذي يتوافق مع تمثيل السؤال. حالة المخفية للطبقة الأخيرة للرمز الأول من التسلسل (رمز التصنيف) بعد معالجتها بواسطة طبقة خطية. يُستخدم هذا المخرج لتضمين الأسئلة للاستعلام عن الجيران الأقرب مع تضمينات السياق.

hidden_states (`tuple[torch.Tensor, ...]`، *اختياري*، يُعاد عند تمرير `output_hidden_states=True` أو عند تعيين `config.output_hidden_states=True`) : مجموعة من `torch.Tensor` (واحدة لإخراج الطبقات المضمنة، إذا كان النموذج يحتوي على طبقة تضمين، + واحدة لإخراج كل طبقة) بأبعاد `(batch_size, sequence_length, hidden_size)`. حالات مخفية للنموذج عند إخراج كل طبقة بالإضافة إلى إخراجات التضمين الأولية الاختيارية.

attentions (`tuple[torch.Tensor, ...]`، *اختياري*، يُعاد عند تمرير `output_attentions=True` أو عند تعيين `config.output_attentions=True`) : مجموعة من `torch.Tensor` (واحدة لكل طبقة) بأبعاد `(batch_size, num_heads, sequence_length, sequence_length)`. أوزان الانتباه بعد تطبيق softmax على الانتباه، وتُستخدم لحساب المتوسط المرجح في رؤوس الانتباه الذاتي.

فئة لمخرجات [DPRQuestionEncoder](/docs/transformers/v5.23.0/ar/model_doc/dpr#transformers.DPRQuestionEncoder).

#### transformers.DPRReaderOutput[[transformers.DPRReaderOutput]]

```python
transformers.DPRReaderOutput(start_logits: Tensor, end_logits: typing.Optional[torch.Tensor] = None, relevance_logits: typing.Optional[torch.Tensor] = None, hidden_states: tuple[torch.Tensor, ...] | None = None, attentions: tuple[torch.Tensor, ...] | None = None)
```

[المصدر](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/models/dpr/modeling_dpr.py#L84)

**المعاملات:**

start_logits (`torch.Tensor` من الشكل `(n_passages, sequence_length)`) : قيم اللوجيت (Logits) لمؤشر بداية المقطع (span) لكل مقطع.

end_logits (`torch.Tensor` من الشكل `(n_passages, sequence_length)`) : قيم اللوجيت (Logits) لمؤشر النهاية للجزء (span) الخاص بكل مقطع.

relevance_logits (`torch.Tensor` من الشكل `(n_passages, )`) : مخرجات مصنّف أسئلة الإجابة (QA classifier) الخاص بـ DPRReader، والتي تتوافق مع درجات كل مقطع للإجابة عن السؤال، مقارنةً بجميع المقاطع الأخرى.

hidden_states (`tuple[torch.Tensor, ...]`، *اختياري*، يُعاد عند تمرير `output_hidden_states=True` أو عند تعيين `config.output_hidden_states=True`) : مجموعة من `torch.Tensor` (واحدة لإخراج الطبقات المضمنة، إذا كان النموذج يحتوي على طبقة تضمين، + واحدة لإخراج كل طبقة) بأبعاد `(batch_size, sequence_length, hidden_size)`. حالات مخفية للنموذج عند إخراج كل طبقة بالإضافة إلى إخراجات التضمين الأولية الاختيارية.

attentions (`tuple[torch.Tensor, ...]`، *اختياري*، يُعاد عند تمرير `output_attentions=True` أو عند تعيين `config.output_attentions=True`) : مجموعة من `torch.Tensor` (واحدة لكل طبقة) بأبعاد `(batch_size, num_heads, sequence_length, sequence_length)`. أوزان الانتباه بعد تطبيق softmax على الانتباه، وتُستخدم لحساب المتوسط المرجح في رؤوس الانتباه الذاتي.

فئة لمخرجات [DPRQuestionEncoder](/docs/transformers/v5.23.0/ar/model_doc/dpr#transformers.DPRQuestionEncoder).

## DPRContextEncoder[[transformers.DPRContextEncoder]]

#### transformers.DPRContextEncoder[[transformers.DPRContextEncoder]]

```python
transformers.DPRContextEncoder(config: DPRConfig)
```

[المصدر](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/models/dpr/modeling_dpr.py#L265)

**المعاملات:**

config ([DPRConfig](/docs/transformers/v5.23.0/ar/model_doc/dpr#transformers.DPRConfig)) : فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. عند التهيئة باستخدام ملف إعدادات، لا يتم تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة [from_pretrained()](/docs/transformers/v5.23.0/ar/main_classes/model#transformers.PreTrainedModel.from_pretrained) لتحميل أوزان النموذج.

محوّل DPRContextEncoder العاري الذي يُخرج مخرجات المُجمِّع (pooler) كمُمثِّلات للسياق.

يرث هذا النموذج من [PreTrainedModel](/docs/transformers/v5.23.0/ar/main_classes/model#transformers.PreTrainedModel). راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع نماذجها (مثل التنزيل أو الحفظ، وتغيير حجم تضمينات الإدخال، وقص الرؤوس، وما إلى ذلك).

هذا النموذج هو أيضاً فئة فرعية من [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module) في PyTorch. استخدمه كوحدة PyTorch عادية، وارجع إلى توثيق PyTorch لكل ما يتعلق بالاستخدام العام والسلوك.

#### forward[[transformers.DPRContextEncoder.forward]]

```python
forward(input_ids: typing.Optional[torch.Tensor] = None, attention_mask: typing.Optional[torch.Tensor] = None, token_type_ids: typing.Optional[torch.Tensor] = None, inputs_embeds: typing.Optional[torch.Tensor] = None, output_attentions: bool | None = None, output_hidden_states: bool | None = None, return_dict: bool | None = None, **kwargs)
```

[المصدر](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/models/dpr/modeling_dpr.py#L273)

**المعاملات:**

input_ids (`torch.LongTensor` من الشكل `(batch_size, sequence_length)`) : فهارس رموز تسلسل الإدخال في قاموس الكلمات. لمطابقة ما قبل التدريب، يجب تنسيق تسلسل الإدخال الخاص بـ DPR باستخدام رموز [CLS] و [SEP] على النحو التالي: (أ) لأزواج التسلسلات (على سبيل المثال، زوج عنوان + نص):

attention_mask (`torch.Tensor` من الشكل `(batch_size, sequence_length)`، *اختياري*) : قناع لتجنب تنفيذ الانتباه على فهارس رموز الحشو. قيم القناع المختارة من `[0, 1]`: - 1 للرموز التي **ليست مقنّعة**، - 0 للرموز التي **مقنّعة**.  [ما هي أقنعة الانتباه؟](../glossary#attention-mask)

token_type_ids (`torch.Tensor` من الشكل `(batch_size, sequence_length)`، *اختياري*) : فهارس رموز المقاطع لتحديد الجزء الأول والثاني من المدخلات. يتم اختيار الفهارس من `[0, 1]`: - 0 يقابل رمز *الجملة أ*، - 1 يقابل رمز *الجملة ب*. [ما هي معرّفات أنواع الرموز؟](../glossary#token-type-ids)

inputs_embeds (`torch.Tensor` من الشكل `(batch_size, sequence_length, hidden_size)`، *اختياري*) : بدلاً من تمرير `input_ids`، يمكنك اختيار تمرير تمثيل مضمّن مباشرةً. هذا مفيد إذا كنت ترغب في الحصول على مزيد من التحكم في كيفية تحويل فهارس `input_ids` إلى المتجهات المرتبطة بها، مقارنةً بمصفوفة البحث المضمّنة الداخلية للنموذج.

output_attentions (`bool`، *اختياري*) : ما إذا كان سيتم إرجاع مصفوفات الانتباه لجميع طبقات الانتباه. راجع `attentions` ضمن المصفوفات المُرجعة لمزيد من التفاصيل.

output_hidden_states (`bool`, *اختياري*) : ما إذا كان سيتم إرجاع الحالات المخفية لجميع الطبقات. راجع `hidden_states` ضمن الموترات المُرجعة لمزيد من التفاصيل.

return_dict (`bool`، *اختياري*) : ما إذا كان سيتم إرجاع [ModelOutput](/docs/transformers/v5.23.0/ar/main_classes/output#transformers.utils.ModelOutput) بدلاً من tuple عادي.

**يعيد:** [DPRContextEncoderOutput](/docs/transformers/v5.23.0/ar/model_doc/dpr#transformers.models.dpr.modeling_dpr.DPRContextEncoderOutput) أو `tuple(torch.Tensor)`

[DPRContextEncoderOutput](/docs/transformers/v5.23.0/ar/model_doc/dpr#transformers.models.dpr.modeling_dpr.DPRContextEncoderOutput) أو مجموعة من `torch.Tensor` (إذا تم تمرير `return_dict=False` أو عندما يكون `config.return_dict=False`) تتكون من عناصر مختلفة اعتماداً على الإعداد ([DPRConfig](/docs/transformers/v5.23.0/ar/model_doc/dpr#transformers.DPRConfig)) والمدخلات.

تُعيد طريقة [DPRContextEncoder](/docs/transformers/v5.23.0/ar/model_doc/dpr#transformers.DPRContextEncoder) الخاصة بالتقديم (forward) تعريف الطريقة الخاصة `__call__`.

على الرغم من أنه يجب تعريف وصفة المرور الأمامي داخل هذه الدالة، إلا أنه ينبغي استدعاء كائن `Module` بدلاً من هذه الدالة، لأن الكائن يتولى تنفيذ خطوات المعالجة المسبقة والمعالجة اللاحقة، بينما تتجاهل الدالة هذه الخطوات بصمت.

- **pooler_output** (`torch.Tensor` من الشكل `(batch_size, embeddings_size)`) -- تُخرج شيفرة DPR *pooler_output* التي تتوافق مع تمثيل السياق. حالة المخفية للطبقة الأخيرة للرمز الأول من التسلسل (رمز التصنيف) بعد معالجتها بواسطة طبقة خطية. يُستخدم هذا المخرج لتضمين السياجات للاستعلام عن الجيران الأقرب باستخدام تضمينات الأسئلة.
- **hidden_states** (`tuple[torch.Tensor, ...]`, *اختياري*, يُعاد عند تمرير `output_hidden_states=True` أو عند `config.output_hidden_states=True`) -- مجموعة مرتبة من `torch.Tensor` (واحدة لمخرجات التضمينات، إذا كان النموذج يحتوي على طبقة تضمين، + واحدة لمخرجات كل طبقة) من الشكل `(batch_size, sequence_length, hidden_size)`.

  حالات النموذج المخفية عند مخرج كل طبقة بالإضافة إلى مخرجات التضمين الأولي الاختيارية.
- **attentions** (`tuple[torch.Tensor, ...]`, *اختياري*, يُعاد عند تمرير `output_attentions=True` أو عند `config.output_attentions=True`) -- مجموعة مرتبة من `torch.Tensor` (واحدة لكل طبقة) من الشكل `(batch_size, num_heads, sequence_length, sequence_length)`.

  أوزان الانتباه بعد تطبيق دالة softmax على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.

  ```
  tokens:         [CLS] is this jack ##son ##ville ? [SEP] no it is not . [SEP]
  token_type_ids:   0   0  0    0    0     0       0   0   1  1  1  1   1   1
  ```

  (ب) بالنسبة إلى تسلسلات مفردة (على سبيل المثال، لسؤال):

  ```
  tokens:         [CLS] the dog is hairy . [SEP]
  token_type_ids:   0   0   0   0  0     0   0
  ```

  نموذج DPR يستخدم تضمينات موضع مطلقة، لذا يُنصح عادةً بتعبئة المدخلات على اليمين بدلاً من اليسار.

  يمكن الحصول على الفهارس باستخدام [AutoTokenizer](/docs/transformers/v5.23.0/ar/model_doc/auto#transformers.AutoTokenizer). راجع [PreTrainedTokenizer.encode()](/docs/transformers/v5.23.0/ar/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.encode) و[PreTrainedTokenizer.__call__()](/docs/transformers/v5.23.0/ar/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.__call__) للحصول على التفاصيل.

  [ما هي معرّفات الإدخال؟](../glossary#input-ids)

أمثلة:

```python
>>> from transformers import DPRContextEncoder, DPRContextEncoderTokenizer

>>> tokenizer = DPRContextEncoderTokenizer.from_pretrained("facebook/dpr-ctx_encoder-single-nq-base")
>>> model = DPRContextEncoder.from_pretrained("facebook/dpr-ctx_encoder-single-nq-base")
>>> input_ids = tokenizer("Hello, is my dog cute ?", return_tensors="pt")["input_ids"]
>>> embeddings = model(input_ids).pooler_output
```

## DPRQuestionEncoder[[transformers.DPRQuestionEncoder]]

#### transformers.DPRQuestionEncoder[[transformers.DPRQuestionEncoder]]

```python
transformers.DPRQuestionEncoder(config: DPRConfig)
```

[المصدر](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/models/dpr/modeling_dpr.py#L371)

**المعاملات:**

config ([DPRConfig](/docs/transformers/v5.23.0/ar/model_doc/dpr#transformers.DPRConfig)) : فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. عند التهيئة باستخدام ملف إعدادات، لا يتم تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة [from_pretrained()](/docs/transformers/v5.23.0/ar/main_classes/model#transformers.PreTrainedModel.from_pretrained) لتحميل أوزان النموذج.

محوّل DPRQuestionEncoder العاري الذي يُخرج مخرجات المُجمِّع (pooler) كمُمثِّلات للأسئلة.

يرث هذا النموذج من [PreTrainedModel](/docs/transformers/v5.23.0/ar/main_classes/model#transformers.PreTrainedModel). راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع نماذجها (مثل التنزيل أو الحفظ، وتغيير حجم تضمينات الإدخال، وقص الرؤوس، وما إلى ذلك).

هذا النموذج هو أيضاً فئة فرعية من [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module) في PyTorch. استخدمه كوحدة PyTorch عادية، وارجع إلى توثيق PyTorch لكل ما يتعلق بالاستخدام العام والسلوك.

#### forward[[transformers.DPRQuestionEncoder.forward]]

```python
forward(input_ids: typing.Optional[torch.Tensor] = None, attention_mask: typing.Optional[torch.Tensor] = None, token_type_ids: typing.Optional[torch.Tensor] = None, inputs_embeds: typing.Optional[torch.Tensor] = None, output_attentions: bool | None = None, output_hidden_states: bool | None = None, return_dict: bool | None = None, **kwargs)
```

[المصدر](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/models/dpr/modeling_dpr.py#L379)

**المعاملات:**

input_ids (`torch.LongTensor` من الشكل `(batch_size, sequence_length)`) : فهارس رموز تسلسل الإدخال في قاموس الكلمات. لمطابقة ما قبل التدريب، يجب تنسيق تسلسل الإدخال الخاص بـ DPR باستخدام رموز [CLS] و [SEP] على النحو التالي: (أ) لأزواج التسلسلات (على سبيل المثال، زوج عنوان + نص):

attention_mask (`torch.Tensor` من الشكل `(batch_size, sequence_length)`، *اختياري*) : قناع لتجنب تنفيذ الانتباه على فهارس رموز الحشو. قيم القناع المختارة من `[0, 1]`: - 1 للرموز التي **ليست مقنّعة**، - 0 للرموز التي **مقنّعة**.  [ما هي أقنعة الانتباه؟](../glossary#attention-mask)

token_type_ids (`torch.Tensor` من الشكل `(batch_size, sequence_length)`، *اختياري*) : فهارس رموز المقاطع لتحديد الجزء الأول والثاني من المدخلات. يتم اختيار الفهارس من `[0, 1]`: - 0 يقابل رمز *الجملة أ*، - 1 يقابل رمز *الجملة ب*. [ما هي معرّفات أنواع الرموز؟](../glossary#token-type-ids)

inputs_embeds (`torch.Tensor` من الشكل `(batch_size, sequence_length, hidden_size)`، *اختياري*) : بدلاً من تمرير `input_ids`، يمكنك اختيار تمرير تمثيل مضمّن مباشرةً. هذا مفيد إذا كنت ترغب في الحصول على مزيد من التحكم في كيفية تحويل فهارس `input_ids` إلى المتجهات المرتبطة بها، مقارنةً بمصفوفة البحث المضمّنة الداخلية للنموذج.

output_attentions (`bool`، *اختياري*) : ما إذا كان سيتم إرجاع مصفوفات الانتباه لجميع طبقات الانتباه. راجع `attentions` ضمن المصفوفات المُرجعة لمزيد من التفاصيل.

output_hidden_states (`bool`, *اختياري*) : ما إذا كان سيتم إرجاع الحالات المخفية لجميع الطبقات. راجع `hidden_states` ضمن الموترات المُرجعة لمزيد من التفاصيل.

return_dict (`bool`، *اختياري*) : ما إذا كان سيتم إرجاع [ModelOutput](/docs/transformers/v5.23.0/ar/main_classes/output#transformers.utils.ModelOutput) بدلاً من tuple عادي.

**يعيد:** [DPRQuestionEncoderOutput](/docs/transformers/v5.23.0/ar/model_doc/dpr#transformers.models.dpr.modeling_dpr.DPRQuestionEncoderOutput) أو `tuple(torch.Tensor)`

[DPRQuestionEncoderOutput](/docs/transformers/v5.23.0/ar/model_doc/dpr#transformers.models.dpr.modeling_dpr.DPRQuestionEncoderOutput) أو مجموعة من `torch.Tensor` (إذا تم تمرير `return_dict=False` أو عندما يكون `config.return_dict=False`) وتتضمن عناصر مختلفة اعتماداً على الإعداد ([DPRConfig](/docs/transformers/v5.23.0/ar/model_doc/dpr#transformers.DPRConfig)) والمدخلات.

تُعيد طريقة [DPRQuestionEncoder](/docs/transformers/v5.23.0/ar/model_doc/dpr#transformers.DPRQuestionEncoder) الأمامية تعريف الطريقة الخاصة `__call__`.

على الرغم من أنه يجب تعريف وصفة المرور الأمامي داخل هذه الدالة، إلا أنه ينبغي استدعاء كائن `Module` بدلاً من هذه الدالة، لأن الكائن يتولى تنفيذ خطوات المعالجة المسبقة والمعالجة اللاحقة، بينما تتجاهل الدالة هذه الخطوات بصمت.

- **pooler_output** (`torch.Tensor` من الشكل `(batch_size, embeddings_size)`) -- يُخرج مُشفِّر DPR *pooler_output* الذي يتوافق مع تمثيل السؤال. حالة المخفية للطبقة الأخيرة للرمز الأول من التسلسل (رمز التصنيف) بعد معالجتها بواسطة طبقة خطية. يُستخدم هذا المخرج لتضمين الأسئلة للاستعلام عن الجيران الأقرب مع تضمينات السياق.
- **hidden_states** (`tuple[torch.Tensor, ...]`, *اختياري*, يُعاد عند تمرير `output_hidden_states=True` أو عند `config.output_hidden_states=True`) -- مجموعة مرتبة من `torch.Tensor` (واحدة لمخرجات التضمينات، إذا كان النموذج يحتوي على طبقة تضمين، + واحدة لمخرجات كل طبقة) من الشكل `(batch_size, sequence_length, hidden_size)`.

  حالات النموذج المخفية عند مخرج كل طبقة بالإضافة إلى مخرجات التضمين الأولي الاختيارية.
- **attentions** (`tuple[torch.Tensor, ...]`, *اختياري*, يُعاد عند تمرير `output_attentions=True` أو عند `config.output_attentions=True`) -- مجموعة مرتبة من `torch.Tensor` (واحدة لكل طبقة) من الشكل `(batch_size, num_heads, sequence_length, sequence_length)`.

  أوزان الانتباه بعد تطبيق دالة softmax على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.

  ```
  tokens:         [CLS] is this jack ##son ##ville ? [SEP] no it is not . [SEP]
  token_type_ids:   0   0  0    0    0     0       0   0   1  1  1  1   1   1
  ```

  (ب) بالنسبة إلى تسلسلات مفردة (على سبيل المثال، لسؤال):

  ```
  tokens:         [CLS] the dog is hairy . [SEP]
  token_type_ids:   0   0   0   0  0     0   0
  ```

  نموذج DPR يستخدم تضمينات موضع مطلقة، لذا يُنصح عادةً بتعبئة المدخلات على اليمين بدلاً من اليسار.

  يمكن الحصول على الفهارس باستخدام [AutoTokenizer](/docs/transformers/v5.23.0/ar/model_doc/auto#transformers.AutoTokenizer). راجع [PreTrainedTokenizer.encode()](/docs/transformers/v5.23.0/ar/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.encode) و[PreTrainedTokenizer.__call__()](/docs/transformers/v5.23.0/ar/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.__call__) للحصول على التفاصيل.

  [ما هي معرّفات الإدخال؟](../glossary#input-ids)

أمثلة:

```python
>>> from transformers import DPRQuestionEncoder, DPRQuestionEncoderTokenizer

>>> tokenizer = DPRQuestionEncoderTokenizer.from_pretrained("facebook/dpr-question_encoder-single-nq-base")
>>> model = DPRQuestionEncoder.from_pretrained("facebook/dpr-question_encoder-single-nq-base")
>>> input_ids = tokenizer("Hello, is my dog cute ?", return_tensors="pt")["input_ids"]
>>> embeddings = model(input_ids).pooler_output
```

## DPRReader[[transformers.DPRReader]]

#### transformers.DPRReader[[transformers.DPRReader]]

```python
transformers.DPRReader(config: DPRConfig)
```

[المصدر](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/models/dpr/modeling_dpr.py#L478)

**المعاملات:**

config ([DPRConfig](/docs/transformers/v5.23.0/ar/model_doc/dpr#transformers.DPRConfig)) : فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. عند التهيئة باستخدام ملف إعدادات، لا يتم تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة [from_pretrained()](/docs/transformers/v5.23.0/ar/main_classes/model#transformers.PreTrainedModel.from_pretrained) لتحميل أوزان النموذج.

محوّل DPRReader الأساسي الذي يُخرج تنبؤات المقاطع.

يرث هذا النموذج من [PreTrainedModel](/docs/transformers/v5.23.0/ar/main_classes/model#transformers.PreTrainedModel). راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع نماذجها (مثل التنزيل أو الحفظ، وتغيير حجم تضمينات الإدخال، وقص الرؤوس، وما إلى ذلك).

هذا النموذج هو أيضاً فئة فرعية من [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module) في PyTorch. استخدمه كوحدة PyTorch عادية، وارجع إلى توثيق PyTorch لكل ما يتعلق بالاستخدام العام والسلوك.

#### forward[[transformers.DPRReader.forward]]

```python
forward(input_ids: typing.Optional[torch.Tensor] = None, attention_mask: typing.Optional[torch.Tensor] = None, inputs_embeds: typing.Optional[torch.Tensor] = None, output_attentions: bool | None = None, output_hidden_states: bool | None = None, return_dict: bool | None = None, **kwargs)
```

[المصدر](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/models/dpr/modeling_dpr.py#L486)

**المعاملات:**

input_ids (`tuple[torch.LongTensor]` من الأشكال `(n_passages, sequence_length)`) : فهارس رموز تسلسل الإدخال في قاموس الكلمات. يجب أن يكون ثلاثي تسلسل يحتوي على 1) السؤال و 2) عناوين المقاطع و 3) نصوص المقاطع. لمطابقة ما قبل التدريب، يجب تنسيق تسلسل `input_ids` الخاص بـ DPR باستخدام [CLS] و [SEP] بالتنسيق التالي:  `[CLS] <question token ids> [SEP] <titles ids> [SEP] <texts ids>`  DPR هو نموذج مزود بتضمينات موضع مطلقة، لذا يُنصح عادةً بتعبئة المدخلات على اليمين بدلاً من اليسار.  يمكن الحصول على الفهارس باستخدام [DPRReaderTokenizer](/docs/transformers/v5.23.0/ar/model_doc/dpr#transformers.DPRReaderTokenizer). راجع توثيق هذه الفئة لمزيد من التفاصيل.  [ما هي معرّفات الإدخال؟](../glossary#input-ids)

attention_mask (`torch.Tensor` من الشكل `(batch_size, sequence_length)`، *اختياري*) : قناع لتجنب تنفيذ الانتباه على فهارس رموز الحشو. قيم القناع المختارة من `[0, 1]`: - 1 للرموز التي **ليست مقنّعة**، - 0 للرموز التي **مقنّعة**.  [ما هي أقنعة الانتباه؟](../glossary#attention-mask)

inputs_embeds (`torch.Tensor` من الشكل `(n_passages, sequence_length, hidden_size)`، *اختياري*) : بدلاً من تمرير `input_ids`، يمكنك اختيار تمرير تمثيل مضمّن مباشرةً. هذا مفيد إذا كنت ترغب في الحصول على مزيد من التحكم في كيفية تحويل فهارس `input_ids` إلى المتجهات المرتبطة بها، مقارنةً بمصفوفة البحث المضمّنة الداخلية للنموذج.

output_attentions (`bool`، *اختياري*) : ما إذا كان سيتم إرجاع مصفوفات الانتباه لجميع طبقات الانتباه. راجع `attentions` ضمن المصفوفات المُرجعة لمزيد من التفاصيل.

output_hidden_states (`bool`, *اختياري*) : ما إذا كان سيتم إرجاع الحالات المخفية لجميع الطبقات. راجع `hidden_states` ضمن الموترات المُرجعة لمزيد من التفاصيل.

return_dict (`bool`، *اختياري*) : ما إذا كان سيتم إرجاع [ModelOutput](/docs/transformers/v5.23.0/ar/main_classes/output#transformers.utils.ModelOutput) بدلاً من tuple عادي.

**يعيد:** [DPRReaderOutput](/docs/transformers/v5.23.0/ar/model_doc/dpr#transformers.DPRReaderOutput) أو `tuple(torch.Tensor)`

[DPRReaderOutput](/docs/transformers/v5.23.0/ar/model_doc/dpr#transformers.DPRReaderOutput) أو مجموعة (tuple) من `torch.Tensor` (إذا تم تمرير `return_dict=False` أو عندما يكون `config.return_dict=False`) وتتضمن عناصر مختلفة اعتماداً على الإعداد ([DPRConfig](/docs/transformers/v5.23.0/ar/model_doc/dpr#transformers.DPRConfig)) والمدخلات.

تُعيد طريقة [DPRReader](/docs/transformers/v5.23.0/ar/model_doc/dpr#transformers.DPRReader) الأمامية تعريف الطريقة الخاصة `__call__`.

على الرغم من أنه يجب تعريف وصفة المرور الأمامي داخل هذه الدالة، إلا أنه ينبغي استدعاء كائن `Module` بدلاً من هذه الدالة، لأن الكائن يتولى تنفيذ خطوات المعالجة المسبقة والمعالجة اللاحقة، بينما تتجاهل الدالة هذه الخطوات بصمت.

- **start_logits** (`torch.Tensor` من الشكل `(n_passages, sequence_length)`) -- قيم اللوجيت (Logits) لمؤشر بداية المقطع (span) لكل مقطع.
- **end_logits** (`torch.Tensor` من الشكل `(n_passages, sequence_length)`) -- قيم اللوجيت (Logits) لمؤشر النهاية للمقطع (span) الخاص بكل مقطع (passage).
- **relevance_logits** (`torch.Tensor` من الشكل `(n_passages, )`) -- مخرجات مصنّف الأسئلة والأجوبة الخاص بـ DPRReader، والتي تتوافق مع درجات كل مقطع للإجابة عن السؤال، مقارنةً بجميع المقاطع الأخرى.
- **hidden_states** (`tuple[torch.Tensor, ...]`, *اختياري*, يُعاد عند تمرير `output_hidden_states=True` أو عند `config.output_hidden_states=True`) -- مجموعة مرتبة من `torch.Tensor` (واحدة لمخرجات التضمينات، إذا كان النموذج يحتوي على طبقة تضمين، + واحدة لمخرجات كل طبقة) من الشكل `(batch_size, sequence_length, hidden_size)`.

  حالات النموذج المخفية عند مخرج كل طبقة بالإضافة إلى مخرجات التضمين الأولي الاختيارية.
- **attentions** (`tuple[torch.Tensor, ...]`, *اختياري*, يُعاد عند تمرير `output_attentions=True` أو عند `config.output_attentions=True`) -- مجموعة مرتبة من `torch.Tensor` (واحدة لكل طبقة) من الشكل `(batch_size, num_heads, sequence_length, sequence_length)`.

  أوزان الانتباه بعد تطبيق دالة softmax على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.

أمثلة:

```python
>>> from transformers import DPRReader, DPRReaderTokenizer

>>> tokenizer = DPRReaderTokenizer.from_pretrained("facebook/dpr-reader-single-nq-base")
>>> model = DPRReader.from_pretrained("facebook/dpr-reader-single-nq-base")
>>> encoded_inputs = tokenizer(
...     questions=["What is love ?"],
...     titles=["Haddaway"],
...     texts=["'What Is Love' is a song recorded by the artist Haddaway"],
...     return_tensors="pt",
... )
>>> outputs = model(**encoded_inputs)
>>> start_logits = outputs.start_logits
>>> end_logits = outputs.end_logits
>>> relevance_logits = outputs.relevance_logits
```

