Transformers documentation

RAG

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v5.22.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

نُشر هذا النموذج في أوراق HF في 22 مايو 2020، وأُضيف إلى مكتبة Hugging Face Transformers في 16 نوفمبر 2020.

RAG

FlashAttention

يجمع توليد المعزَّز بالاسترجاع (RAG) بين نموذج لغوي مُدرَّب مسبقًا (ذاكرة بارامترية) والوصول إلى مصدر بيانات خارجي (ذاكرة غير بارامترية) بواسطة مسترجع عصبي مُدرَّب مسبقًا. يسترجع RAG المقاطع ذات الصلة ويجعل توليده مشروطًا عليها أثناء الاستدلال. وغالبًا ما يجعل ذلك الإجابات أكثر واقعية، ويتيح لك تحديث المعرفة بتغيير الفهرس بدلًا من إعادة تدريب النموذج بأكمله.

يمكنك العثور على جميع نقاط التفتيش الأصلية لـ RAG تحت منظمة AI at Meta.

تمت مساهمة هذا النموذج من قِبل ola13.

انقر على نماذج RAG في الشريط الجانبي الأيمن لمزيد من الأمثلة حول كيفية تطبيق RAG على مهام لغوية مختلفة.

تُوضّح الأمثلة أدناه كيفية توليد النص باستخدام AutoModel.

AutoModel
from transformers import RagRetriever, RagSequenceForGeneration, RagTokenizer


tokenizer = RagTokenizer.from_pretrained("facebook/rag-sequence-nq")
retriever = RagRetriever.from_pretrained(
    "facebook/rag-sequence-nq", dataset="wiki_dpr", index_name="compressed"
)

model = RagSequenceForGeneration.from_pretrained(
    "facebook/rag-sequence-nq",
    retriever=retriever,
    attn_implementation="flash_attention_2",
    device_map="auto",
)
inputs = tokenizer("How many people live in Paris?", return_tensors="pt").to(model.device)
generated = model.generate(input_ids=inputs["input_ids"])
print(tokenizer.batch_decode(generated, skip_special_tokens=True)[0])

تقلل عملية التكميم من حجم الذاكرة من خلال تخزين الأوزان بدقة أدنى. راجع نظرة عامة على التكميم لمعرفة الخوادم المدعومة. يستخدم المثال أدناه bitsandbytes لتكميم الأوزان إلى 4 بتات.

import torch

from transformers import BitsAndBytesConfig, RagRetriever, RagSequenceForGeneration, RagTokenizer


bnb = BitsAndBytesConfig(load_in_4bit=True, bnb_4bit_compute_dtype=torch.bfloat16)

tokenizer = RagTokenizer.from_pretrained("facebook/rag-sequence-nq")
retriever = RagRetriever.from_pretrained(
    "facebook/rag-sequence-nq", dataset="wiki_dpr", index_name="compressed"
)

model = RagSequenceForGeneration.from_pretrained(
    "facebook/rag-sequence-nq",
    retriever=retriever,
    quantization_config=bnb,
    device_map="auto",
)
inputs = tokenizer("How many people live in Paris?", return_tensors="pt").to(model.device)
generated = model.generate(input_ids=inputs["input_ids"])
print(tokenizer.batch_decode(generated, skip_special_tokens=True)[0])

RagConfig

فئة transformers.RagConfig

< >

( 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 = 0id2label: 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 = Noneis_encoder_decoder: bool = Truequestion_encoder: transformers.configuration_utils.PreTrainedConfig | dict | None = Nonegenerator: transformers.configuration_utils.PreTrainedConfig | dict | None = Nonevocab_size: int | None = Noneprefix: str | None = Nonebos_token_id: int | None = Nonepad_token_id: int | None = Noneeos_token_id: int | list[int] | None = Nonedecoder_start_token_id: int | None = Nonetitle_sep: str = ' / 'doc_sep: str = ' // 'n_docs: int = 5max_combined_length: int = 300retrieval_vector_size: int = 768retrieval_batch_size: int = 8dataset: str = 'wiki_dpr'dataset_split: str = 'train'index_name: str = 'compressed'index_path: str | None = Nonepassages_path: str | None = Noneuse_dummy_dataset: bool = Falsereduce_loss: bool = Falselabel_smoothing: float = 0.0do_deduplication: bool = Trueexclude_bos_score: bool = Falsedo_marginalize: bool = Falseoutput_retrieved: bool = Falseuse_cache: bool = Truedataset_revision: str | None = None )

المعاملات

  • is_encoder_decoder (bool، اختياري، القيمة الافتراضية True) — ما إذا كان النموذج يُستخدم كمُشفِّر/مُفكِّك أم لا.
  • question_encoder (PreTrainedConfig | dict، اختياري) — كائن الإعداد أو قاموس العمود الفقري لمرسّل السؤال
  • generator (PreTrainedConfig | dict، اختياري) — كائن الإعدادات أو قاموس العمود الفقري لمولّد الإجابات
  • vocab_size (int، اختياري) — حجم مفردات النموذج. يحدد عدد الرموز المختلفة التي يمكن تمثيلها بواسطة input_ids.
  • prefix (str، اختياري) — بادئة نصية تُضاف إلى بداية كل مدخل قبل تمريره إلى نموذج المولّد.
  • bos_token_id (int, اختياري) — معرّف الرمز المستخدم لبدء البث في المفردات.
  • pad_token_id (int, اختياري) — معرّف الرمز المستخدم للتعبئة في المفردات.
  • eos_token_id (Union[int, list[int]], اختياري) — معرّف الرمز المستخدم لنهاية التدفق في المفردات.
  • decoder_start_token_id (int, اختياري) — إذا بدأ نموذج المُشفِّر-المُفكِّك (encoder-decoder) عملية فك التشفير برمز مختلف عن bos، فإن هذا هو المعرّف الخاص بذلك الرمز.
  • title_sep (str، اختياري، القيمة الافتراضية " / ") — الفاصل الذي يُدرج بين عنوان المستند المسترجع ونصه عند استدعاء RagRetriever.
  • doc_sep (str، اختياري، القيمة الافتراضية " // ") — الفاصل الذي يُدرج بين نص المستند المسترجع والمدخل الأصلي عند استدعاء RagRetriever.
  • n_docs (int، اختياري، القيمة الافتراضية 5) — عدد المستندات التي يجب استرجاعها.
  • max_combined_length (int، اختياري، القيمة الافتراضية 300) — الحد الأقصى لطول المدخلات السياقية التي تُعاد بواسطة __call__().
  • retrieval_vector_size (int، اختياري، القيمة الافتراضية 768) — أبعاد تمثيلات المستندات التي يديرها RagRetriever.
  • retrieval_batch_size (int، اختياري، القيمة الافتراضية 8) — حجم دفعة الاسترجاع، ويُعرَّف بأنه عدد الاستعلامات التي تُرسل بالتوازي إلى فهرس faiss المُغلَّف في RagRetriever.
  • dataset (str، اختياري، القيمة الافتراضية "wiki_dpr") — معرّف مجموعة البيانات المُفهرسة في HuggingFace Datasets (للعرض الكامل لجميع مجموعات البيانات المتاحة ومعرفاتها، استخدم datasets.list_datasets()).
  • dataset_split (str، اختياري، القيمة الافتراضية "train") — الجزء من dataset الذي سيتم تحميله.
  • index_name (str، اختياري، القيمة الافتراضية "compressed") — اسم فهرس الفهرس المرتبط بـdataset. يمكن الاختيار بين "legacy" و"exact" و "compressed".
  • index_path (str, اختياري) — المسار إلى فهرس faiss المُسلسَل على القرص.
  • passages_path (str، اختياري) — مسار إلى مقاطع نصية متوافقة مع فهرس faiss. مطلوب عند استخدام LegacyIndex
  • use_dummy_dataset (bool، اختياري، القيمة الافتراضية False) — ما إذا كان سيتم تحميل نسخة "محاكاة" من مجموعة البيانات المحددة بواسطة dataset.
  • reduce_loss (bool، اختياري، القيمة الافتراضية False) — ما إذا كان سيتم تقليل خسارة NLL باستخدام عملية torch.Tensor.sum أم لا.
  • label_smoothing (float، اختياري، القيمة الافتراضية 0.0) — لا ينطبق إلا إذا كانت قيمة return_loss هي True. يتحكم في قيمة معامل epsilon الخاصة بتنعيم التسميات في حساب الدالة الخاسرة. إذا كانت القيمة 0، فلا يتم تطبيق تنعيم التسميات.
  • do_deduplication (bool، اختياري، القيمة الافتراضية True) — ما إذا كان سيتم إزالة التكرار من المخرجات الناتجة عن مستندات سياقية مختلفة لإدخال معيّن. يجب تعيينه إلى False عند استخدامه أثناء التدريب مع واجهة موزّعة.
  • exclude_bos_score (bool، اختياري، القيمة الافتراضية False) — ما إذا كان سيتم تجاهل رمز BOS عند حساب الخسارة.
  • do_marginalize (bool، اختياري، القيمة الافتراضية False) — إذا كانت True، يتم تهميش قيم logits على جميع المستندات باستخدام torch.nn.functional.log_softmax.
  • output_retrieved (bool، اختياري، القيمة الافتراضية False) — إذا تم ضبطه على True، فسيتم إرجاع retrieved_doc_embeds وretrieved_doc_ids وcontext_input_ids و context_attention_mask. راجع الأوتاد المُرجعة لمزيد من التفاصيل.
  • use_cache (bool، اختياري، القيمة الافتراضية True) — ما إذا كان يجب على النموذج إرجاع قيم المفاتيح/القيم الأخيرة للانتباه (لا تستخدمها جميع النماذج). لا ينطبق إلا إذا كان config.is_decoder=True أو إذا كان النموذج نموذجًا توليديًا يعتمد على المُفكِّك فقط.
  • dataset_revision (str, اختياري,) — المراجعة (معرّف الالتزام، أو العلامة، أو الفرع) لمجموعة بيانات Hugging Face المستخدمة للاسترجاع.

هذه فئة الإعدادات المخزنة لإعدادات نموذج RagModel. تُستخدم لاستحداث نموذج Rag وفقاً للحجج المحددة، مع تعريف بنية النموذج. إن استحداث إعدادات باستخدام القيم الافتراضية سيؤدي إلى إعدادات مشابهة لتلك الخاصة بـ

ترث كائنات التهيئة من PreTrainedConfig ويمكن استخدامها للتحكم في مخرجات النموذج. اقرأ التوثيق الخاص بـ PreTrainedConfig لمزيد من المعلومات.

from_question_encoder_generator_configs

< >

( question_encoder_config: PreTrainedConfiggenerator_config: PreTrainedConfig**kwargs ) → EncoderDecoderConfig

مثال من كائن التهيئة

أنشئ كائنًا من EncoderDecoderConfig (أو فئة مشتقة) من إعدادات نموذج المُشفِّر المُدرَّب مسبقًا وإعدادات نموذج المُفكِّك.

RagTokenizer

فئة transformers.RagTokenizer

< >

( question_encodergenerator )

مخرجات محددة لـ Rag

فئة transformers.models.rag.modeling_rag.RetrievAugLMMarginOutput

< >

( loss: typing.Optional[torch.Tensor] = Nonelogits: typing.Optional[torch.Tensor] = Nonedoc_scores: typing.Optional[torch.Tensor] = Nonepast_key_values: transformers.cache_utils.Cache | None = Noneretrieved_doc_embeds: typing.Optional[torch.Tensor] = Noneretrieved_doc_ids: typing.Optional[torch.LongTensor] = Nonecontext_input_ids: typing.Optional[torch.LongTensor] = Nonecontext_attention_mask: typing.Optional[torch.LongTensor] = Nonequestion_encoder_last_hidden_state: typing.Optional[torch.Tensor] = Nonequestion_enc_hidden_states: tuple[torch.Tensor, ...] | None = Nonequestion_enc_attentions: tuple[torch.Tensor, ...] | None = Nonegenerator_enc_last_hidden_state: typing.Optional[torch.Tensor] = Nonegenerator_enc_hidden_states: tuple[torch.Tensor, ...] | None = Nonegenerator_enc_attentions: tuple[torch.Tensor, ...] | None = Nonegenerator_dec_hidden_states: tuple[torch.Tensor, ...] | None = Nonegenerator_dec_attentions: tuple[torch.Tensor, ...] | None = Nonegenerator_cross_attentions: tuple[torch.Tensor, ...] | None = None )

المعاملات

  • loss (torch.Tensor من الشكل (1,)، اختياري، يُعاد عند توفير labels) — خسارة نمذجة اللغة.
  • logits (torch.Tensor من الشكل (batch_size, sequence_length, config.vocab_size)) — درجات التنبؤ لرأس نمذجة اللغة. قد تكون الدرجة مُجمَّعة على جميع المستندات لكل رمز في المفردات.
  • doc_scores (torch.Tensor من الشكل (batch_size, config.n_docs)) — الدرجة بين كل ترميزات المستندات المسترجعة (انظر retrieved_doc_embeds) و question_encoder_last_hidden_state.
  • past_key_values (Cache, اختياري, يُعاد عند use_cache=True يُمرَّر أو عند config.use_cache=True) — إنه Cache مثال. لمزيد من التفاصيل، راجع دليل kv cache.

    تحتوي على حالات مخفية محسوبة مسبقاً (المفاتيح والقيم في كتل الانتباه) للمفكك، والتي يمكن استخدامها (انظر مدخل past_key_values) لتسريع فك الترميز التسلسلي.

  • retrieved_doc_embeds (torch.Tensor من الشكل (batch_size, config.n_docs, hidden_size)، اختياري، يُعاد عند output_retrieved=True) — المستندات المضمنة التي استرجعها المسترجع. يُستخدم مع question_encoder_last_hidden_state لحساب doc_scores.
  • retrieved_doc_ids (torch.LongTensor من الشكل (batch_size, config.n_docs)، اختياري، يُعاد عند output_retrieved=True) — فهارس المستندات المضمنة التي استرجعها المسترجع.
  • context_input_ids (torch.LongTensor من الشكل (batch_size * config.n_docs, config.max_combined_length)، اختياري، يُعاد عند output_retrieved=True) — معرفات الإدخال بعد المعالجة المستخرجة من المستندات المسترجعة ومدخلات مُشفِّر السؤال input_ids بواسطة المُسترجِع.
  • context_attention_mask (torch.LongTensor من الشكل (batch_size * config.n_docs, config.max_combined_length)، اختياري، يُعاد عند output_retrieved=True) — قناع الانتباه المعالج بعد الاستخراج من المستندات المسترجعة وinput_ids لمشفّر السؤال بواسطة المسترجع.
  • question_encoder_last_hidden_state (torch.Tensor من الشكل (batch_size, sequence_length, hidden_size)، اختياري) — تسلسل حالات مخفية عند مخرج الطبقة الأخيرة من مُشفِّر السؤال، وهي المخرجات المجمّعة للنموذج.
  • question_enc_hidden_states (tuple(torch.Tensor), اختياري, يُعاد عند output_hidden_states=True مرور config.output_hidden_states=True) — مجموعة من torch.Tensor (واحدة لمخرجات التضمينات وواحدة لمخرجات كل طبقة) من الشكل (batch_size, sequence_length, hidden_size).

    حالات المخفية لمشفّر السؤال عند مخرج كل طبقة بالإضافة إلى مخرجات التضمين الأولي.

  • question_enc_attentions (tuple(torch.Tensor), اختياري, يُعاد عند output_attentions=True تمرير config.output_attentions=True) — مجموعة من torch.Tensor (من الشكل (batch_size, num_heads, sequence_length, sequence_length).

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

  • generator_enc_last_hidden_state (torch.Tensor من الشكل (batch_size, sequence_length, hidden_size)، اختياري) — تسلسل حالات مخفية عند مخرج الطبقة الأخيرة من مُشفِّر المولّد في النموذج.
  • generator_enc_hidden_states (tuple(torch.Tensor), اختياري, يُعاد عند output_hidden_states=True تمرير config.output_hidden_states=True) — مجموعة من torch.Tensor (واحدة لإخراج التضمينات وواحدة لإخراج كل طبقة) من الشكل (batch_size, sequence_length, hidden_size).

    حالات المخفية لمُشفِّر المولّد عند مخرجات كل طبقة بالإضافة إلى مخرجات التضمين الأولي.

  • generator_enc_attentions (tuple(torch.Tensor), اختياري, يُعاد عند output_attentions=True تمرير config.output_attentions=True) — مجموعة من torch.Tensor (من الشكل (batch_size, num_heads, sequence_length, sequence_length).

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

  • generator_dec_hidden_states (tuple(torch.Tensor), اختياري, يُعاد عند output_hidden_states=True تمرير config.output_hidden_states=True) — مجموعة من torch.Tensor (للمخرجات الخاصة بالتضمينات وللمخرجات الخاصة بكل طبقة) من الشكل (batch_size, sequence_length, hidden_size).

    حالات المخفية لمفكك المولّد عند مخرج كل طبقة بالإضافة إلى مخرجات التضمين الأولي.

  • generator_dec_attentions (tuple(torch.Tensor), اختياري, يُعاد عند output_attentions=True تمرير config.output_attentions=True) — مجموعة من torch.Tensor (من الشكل (batch_size, num_heads, sequence_length, sequence_length).

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

  • generator_cross_attentions (tuple(torch.Tensor), اختياري, يُعاد عند output_attentions=True يُمرَّر أو عند config.output_attentions=True) — مجموعة من torch.Tensor (واحدة لكل طبقة) من الشكل (batch_size, num_heads, sequence_length, sequence_length).

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

الفئة الأساسية لمخرجات النماذج المُحسَّنة بالاسترجاع والمُهمَّشة.

فئة transformers.models.rag.modeling_rag.RetrievAugLMOutput

< >

( logits: typing.Optional[torch.Tensor] = Nonedoc_scores: typing.Optional[torch.Tensor] = Nonepast_key_values: transformers.cache_utils.Cache | None = Noneretrieved_doc_embeds: typing.Optional[torch.Tensor] = Noneretrieved_doc_ids: typing.Optional[torch.LongTensor] = Nonecontext_input_ids: typing.Optional[torch.LongTensor] = Nonecontext_attention_mask: typing.Optional[torch.LongTensor] = Nonequestion_encoder_last_hidden_state: typing.Optional[torch.Tensor] = Nonequestion_enc_hidden_states: tuple[torch.Tensor, ...] | None = Nonequestion_enc_attentions: tuple[torch.Tensor, ...] | None = Nonegenerator_enc_last_hidden_state: typing.Optional[torch.Tensor] = Nonegenerator_enc_hidden_states: tuple[torch.Tensor, ...] | None = Nonegenerator_enc_attentions: tuple[torch.Tensor, ...] | None = Nonegenerator_dec_hidden_states: tuple[torch.Tensor, ...] | None = Nonegenerator_dec_attentions: tuple[torch.Tensor, ...] | None = Nonegenerator_cross_attentions: tuple[torch.Tensor, ...] | None = None )

المعاملات

  • logits (torch.Tensor من الشكل (batch_size, sequence_length, config.vocab_size)) — درجات التنبؤ لرأس نمذجة اللغة. قد تكون الدرجة مُجمَّعة على جميع المستندات لكل رمز في المفردات.
  • doc_scores (torch.Tensor من الشكل (batch_size, config.n_docs)) — الدرجة بين كل ترميزات المستندات المسترجعة (انظر retrieved_doc_embeds) و question_encoder_last_hidden_state.
  • past_key_values (Cache, اختياري, يُعاد عند use_cache=True يُمرَّر أو عند config.use_cache=True) — إنه Cache مثال. لمزيد من التفاصيل، راجع دليل kv cache.

    تحتوي على حالات مخفية محسوبة مسبقاً (المفاتيح والقيم في كتل الانتباه) للمفكك، والتي يمكن استخدامها (انظر مدخل past_key_values) لتسريع فك الترميز التسلسلي.

  • retrieved_doc_embeds (torch.Tensor من الشكل (batch_size, config.n_docs, hidden_size)، اختياري، يُعاد عند output_retrieved=True) — المستندات المضمنة التي استرجعها المسترجع. يُستخدم مع question_encoder_last_hidden_state لحساب doc_scores.
  • retrieved_doc_ids (torch.LongTensor من الشكل (batch_size, config.n_docs)، اختياري، يُعاد عند output_retrieved=True) — فهارس المستندات المضمنة التي استرجعها المسترجع.
  • context_input_ids (torch.LongTensor من الشكل (batch_size * config.n_docs, config.max_combined_length)، اختياري، يُعاد عند output_retrieved=True) — معرفات الإدخال بعد المعالجة المستخرجة من المستندات المسترجعة ومدخلات مُشفِّر السؤال input_ids بواسطة المُسترجِع.
  • context_attention_mask (torch.LongTensor من الشكل (batch_size * config.n_docs, config.max_combined_length)، اختياري، يُعاد عند output_retrieved=True) — قناع الانتباه المعالج بعد الاستخراج من المستندات المسترجعة وinput_ids لمشفّر السؤال بواسطة المسترجع.
  • question_encoder_last_hidden_state (torch.Tensor من الشكل (batch_size, sequence_length, hidden_size)، اختياري) — تسلسل حالات مخفية عند مخرج الطبقة الأخيرة من مُشفِّر السؤال، وهي المخرجات المجمّعة للنموذج.
  • question_enc_hidden_states (tuple(torch.Tensor), اختياري, يُعاد عند output_hidden_states=True مرور config.output_hidden_states=True) — مجموعة من torch.Tensor (واحدة لمخرجات التضمينات وواحدة لمخرجات كل طبقة) من الشكل (batch_size, sequence_length, hidden_size).

    حالات المخفية لمشفّر السؤال عند مخرج كل طبقة بالإضافة إلى مخرجات التضمين الأولي.

  • question_enc_attentions (tuple(torch.Tensor), اختياري, يُعاد عند output_attentions=True تمرير config.output_attentions=True) — مجموعة من torch.Tensor (من الشكل (batch_size, num_heads, sequence_length, sequence_length).

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

  • generator_enc_last_hidden_state (torch.Tensor من الشكل (batch_size, sequence_length, hidden_size)، اختياري) — تسلسل حالات مخفية عند مخرج الطبقة الأخيرة من مُشفِّر المولّد في النموذج.
  • generator_enc_hidden_states (tuple(torch.Tensor), اختياري, يُعاد عند output_hidden_states=True تمرير config.output_hidden_states=True) — مجموعة من torch.Tensor (واحدة لإخراج التضمينات وواحدة لإخراج كل طبقة) من الشكل (batch_size, sequence_length, hidden_size).

    حالات المخفية لمُشفِّر المولّد عند مخرجات كل طبقة بالإضافة إلى مخرجات التضمين الأولي.

  • generator_enc_attentions (tuple(torch.Tensor), اختياري, يُعاد عند output_attentions=True تمرير config.output_attentions=True) — مجموعة من torch.Tensor (من الشكل (batch_size, num_heads, sequence_length, sequence_length).

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

  • generator_dec_hidden_states (tuple(torch.Tensor), اختياري, يُعاد عند output_hidden_states=True تمرير config.output_hidden_states=True) — مجموعة من torch.Tensor (واحدة لكل من مخرجات التضمينات ومخرجات كل طبقة) من الشكل (batch_size, sequence_length, hidden_size).

    حالات المخفية لمفكك المولّد عند مخرج كل طبقة بالإضافة إلى مخرجات التضمين الأولي.

  • generator_dec_attentions (tuple(torch.Tensor), اختياري, يُعاد عند output_attentions=True تمرير config.output_attentions=True) — مجموعة من torch.Tensor (من الشكل (batch_size, num_heads, sequence_length, sequence_length).

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

  • generator_cross_attentions (tuple(torch.Tensor), اختياري, يُعاد عند output_attentions=True يُمرَّر أو عند config.output_attentions=True) — مجموعة من torch.Tensor (لشكل (batch_size, num_heads, sequence_length, sequence_length).

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

RagRetriever

فئة transformers.RagRetriever

< >

( configquestion_encoder_tokenizergenerator_tokenizerindex = Noneinit_retrieval = True )

المعاملات

  • config (RagConfig) — إعدادات نموذج RAG الذي يُستخدم معه هذا المسترجع. يحتوي على معاملات تحدد أي Index يجب بناؤه. يمكنك تحميل مجموعة بيانات مخصصة خاصة بك باستخدام config.index_name="custom" أو استخدام مجموعة قياسية (افتراضية) من مكتبة datasets مثل config.index_name="wiki_dpr".
  • question_encoder_tokenizer (PreTrainedTokenizer) — المُرمِّز الذي استُخدم لتجزئة السؤال. يُستخدم لفك ترميز السؤال ثم استخدام generator_tokenizer.
  • generator_tokenizer (PreTrainedTokenizer) — المُرمِّز المستخدم في الجزء الخاص بالمولّد داخل RagModel.
  • index (Index، اختياري، القيمة الافتراضية هي تلك المعرّفة بواسطة الإعداد) — إذا تم تحديده، استخدم هذا الفهرس بدلاً من ذلك المُنشأ باستخدام الإعداد

المسترجع المستخدم للحصول على المستندات من استعلامات المتجهات. يسترجع المسترجع تمثيلات المستندات (embeddings) بالإضافة إلى محتويات المستندات، ويصيغها بحيث يمكن استخدامها مع نموذج RagModel.

أمثلة:

>>> # To load the default "wiki_dpr" dataset with 21M passages from wikipedia (index name is 'compressed' or 'exact')
>>> from transformers import RagRetriever

>>> retriever = RagRetriever.from_pretrained(
...     "facebook/rag-sequence-nq", dataset="wiki_dpr", index_name="compressed"
... )

>>> # To load your own indexed dataset built with the datasets library.
>>> from transformers import RagRetriever

>>> dataset = (
...     ...
... )  # dataset must be a datasets.Datasets object with columns "title", "text" and "embeddings", and it must have a supported index (e.g., Faiss or other index types depending on your setup)
>>> retriever = RagRetriever.from_pretrained("facebook/rag-sequence-nq", indexed_dataset=dataset)

>>> # To load your own indexed dataset built with the datasets library that was saved on disk.
>>> from transformers import RagRetriever

>>> dataset_path = "path/to/my/dataset"  # dataset saved via *dataset.save_to_disk(...)*
>>> index_path = "path/to/my/index"  # index saved via *dataset.get_index("embeddings").save(...)*
>>> retriever = RagRetriever.from_pretrained(
...     "facebook/rag-sequence-nq",
...     index_name="custom",
...     passages_path=dataset_path,
...     index_path=index_path,
... )

>>> # To load the legacy index built originally for Rag's paper
>>> from transformers import RagRetriever

>>> retriever = RagRetriever.from_pretrained("facebook/rag-sequence-nq", index_name="legacy")

init_retrieval

< >

( )

دالة تهيئة المسترجع. تقوم بتحميل الفهرس في الذاكرة.

postprocess_docs

< >

( docsinput_stringsprefixn_docsreturn_tensors = None ) → tuple(tensors)

المعاملات

  • docs (dict) — المستندات المسترجعة.
  • input_strings (str) — النصوص المدخلة التي فكّ ترميزها preprocess_query.
  • prefix (str) — بادئة تُضاف في بداية كل مدخل، وتُستخدم عادةً مع النماذج القائمة على T5.

يعيد

tuple(tensors)

مجموعة (tuple) تتكون من عنصرين: input_ids السياقية وattention_mask المتوافقة.

معالجة المستندات docs المسترجعة بعد الاسترجاع ودمجها مع input_strings.

استرجاع

< >

( question_hidden_states: ndarrayn_docs: int ) → tuple[np.ndarray, np.ndarray, list[dict]]

المعاملات

  • question_hidden_states (np.ndarray من الشكل (batch_size, vector_size)) — دفعة من متجهات الاستعلام التي تُستخدم في عملية الاسترجاع.
  • n_docs (int) — عدد المستندات المسترجعة لكل استعلام.

يعيد

tuple[np.ndarray, np.ndarray, list[dict]]

مجموعة (tuple) تحتوي على الكائنات التالية:

  • retrieved_doc_embeds (np.ndarray من الشكل (batch_size, n_docs, dim)) — تمثيلات الاسترجاع للمستندات المسترجعة لكل استعلام.
  • doc_ids (np.ndarray من الشكل (batch_size, n_docs)) — معرّفات المستندات في الفهرس
  • doc_dicts (list[dict]): أمثلة retrieved_doc_embeds لكل استعلام.

يسترجع المستندات الخاصة بـquestion_hidden_states المحددة.

RagModel

فئة transformers.RagModel

< >

( config: transformers.configuration_utils.PreTrainedConfig | None = Nonequestion_encoder: transformers.modeling_utils.PreTrainedModel | None = Nonegenerator: transformers.modeling_utils.PreTrainedModel | None = Noneretriever: transformers.models.rag.retrieval_rag.RagRetriever | None = None**kwargs )

المعاملات

  • config (PreTrainedConfig، اختياري) — فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. لا يؤدي التهيئة باستخدام ملف الإعدادات إلى تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة from_pretrained() لتحميل أوزان النموذج.
  • question_encoder (PreTrainedModel، اختياري) — النموذج المسؤول عن ترميز السؤال إلى حالات خفية للاسترجاع.
  • generator (PreTrainedModel، اختياري) — النموذج المسؤول عن توليد النص بناءً على المستندات المسترجعة.
  • retriever (RagRetriever، اختياري) — المكوّن المسؤول عن استرجاع المستندات من قاعدة المعرفة بناءً على السؤال المُرمَّز.

نموذج Rag العاري الذي يُخرج حالات مخفية خام دون أي رأس محدد في الأعلى.

يرث هذا النموذج من PreTrainedModel. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع نماذجها (مثل التحميل أو الحفظ، وتغيير حجم تضمينات الإدخال، وقص الرؤوس، وما إلى ذلك).

هذا النموذج هو أيضًا فئة فرعية من torch.nn.Module في PyTorch. استخدمه كوحدة PyTorch عادية، وارجع إلى توثيق PyTorch لكل ما يتعلق بالاستخدام العام والسلوك.

forward

< >

( input_ids: typing.Optional[torch.LongTensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Noneencoder_outputs: tuple[tuple[torch.Tensor]] | None = Nonedecoder_input_ids: typing.Optional[torch.LongTensor] = Nonedecoder_attention_mask: typing.Optional[torch.BoolTensor] = Nonepast_key_values: transformers.cache_utils.Cache | None = Nonedoc_scores: typing.Optional[torch.Tensor] = Nonecontext_input_ids: typing.Optional[torch.LongTensor] = Nonecontext_attention_mask: typing.Optional[torch.LongTensor] = Noneuse_cache: bool | None = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Noneoutput_retrieved: bool | None = Nonen_docs: int | None = None**kwargs ) → RetrievAugLMOutput or tuple(torch.Tensor)

المعاملات

  • input_ids (torch.LongTensor من الشكل (batch_size, sequence_length)) — مؤشرات رموز تسلسل الإدخال في قاموس الكلمات. RagConfig, تُستخدم لتهيئة النموذج، وتحدد المولّد الذي يجب استخدامه، كما تحدد مُجزِّئ (tokenizer) متوافق مع المولّد. استخدم فئة المُجزِّئ هذه للحصول على المؤشرات.

    ما هي معرّفات الإدخال؟

  • attention_mask (torch.Tensor بشكل (batch_size, sequence_length), اختياري) — قناع لتجنب تنفيذ الانتباه على فهارس رموز الحشو. القيم المختارة للقناع هي [0, 1]:
    • 1 للرموز التي لم تُقنَّع،
    • 0 للرموز التي تم إخفاؤها.

    ما هي أقنعة الانتباه؟

  • encoder_outputs (tuple(tuple(torch.Tensor), اختياري) — يتكون العنصر المُرجَع من (generator_enc_last_hidden_state, اختياري: generator_enc_hidden_states, اختياري: generator_enc_attentions). generator_enc_last_hidden_state بشكل (batch_size, n_docs * sequence_length, hidden_size) وهي سلسلة من حالات الإخفاء عند مخرج الطبقة الأخيرة من مُشفِّر المولّد.

    يُستخدم بواسطة نموذج (RagModel) أثناء فك الترميز.

  • decoder_input_ids (torch.LongTensor من الشكل (batch_size, target_sequence_length)، اختياري) — يُقدَّم لمهام التوليد. القيمة الافتراضية هي None، ويُبنى وفقاً للتعليمات الخاصة بنموذج المولّد الذي تستخدمه مع مثيل RAG الخاص بك.
  • decoder_input_ids (torch.LongTensor بشكل (batch_size, target_sequence_length), اختياري) — مؤشرات رموز تسلسل مدخلات المُفكِّك في قاموس الكلمات.

    يمكن الحصول على الفهارس باستخدام AutoTokenizer. راجع PreTrainedTokenizer.encode() و PreTrainedTokenizer.call() للتفاصيل.

    ما هي معرّفات مدخلات المُفكِّك؟

  • decoder_attention_mask (torch.BoolTensor of shape (batch_size, target_sequence_length), اختياري) — السلوك الافتراضي: توليد متجه يتجاهل رموز الحشو في decoder_input_ids. كما سيتم استخدام قناع سببي (Causal mask) افتراضيًا.
  • past_key_values (~cache_utils.Cache, اختياري) — حالات مخفية محسوبة مسبقًا (المفاتيح والقيم في كتل الانتباه الذاتي وكتل الانتباه المتقاطع) يمكن استخدامها لتسريع فك الترميز التسلسلي. يتكون هذا عادةً من past_key_values الذي يعيده النموذج في مرحلة سابقة من فك الترميز، عندما use_cache=True أو config.use_cache=True.

    يُسمح فقط بمرجع Cache كمدخل، راجع دليل ذاكرة kv لدينا. إذا لم يتم تمرير past_key_values، فسيتم تهيئة DynamicCache افتراضياً.

    سيُخرج النموذج نفس صيغة الكاش التي تُمرَّر كمدخل.

    عند استخدام past_key_values، يُتوقَّع من المستخدم إدخال input_ids غير المعالجة فقط (تلك التي لم تُقدَّم حالات مفاتيحها وقيمها السابقة إلى هذا النموذج) بأبعاد (batch_size, unprocessed_length) بدلاً من جميع input_ids بأبعاد (batch_size, sequence_length).

  • doc_scores (torch.Tensor من الشكل (batch_size, config.n_docs)) — الدرجة بين ترميزات كل مستند مسترجع (انظر retrieved_doc_embeds) و question_encoder_last_hidden_state. إذا لم يتم تهيئة النموذج مع retriever، فيجب توفير doc_scores لتمريرة الأمامية. يمكن حساب doc_scores عبر question_encoder_last_hidden_state وretrieved_doc_embeds، راجع الأمثلة لمزيد من المعلومات.
  • context_input_ids (torch.LongTensor of shape (batch_size * config.n_docs, config.max_combined_length), اختياري، يُعاد عند output_retrieved=True) — معرفات الإدخال بعد المعالجة المستخرجة من المستندات المسترجعة ومُشفِّر السؤال input_ids بواسطة المسترجع. إذا لم يتم تهيئة النموذج مع retriever `context_input_ids يجب توفيره لمرور التقديم الأمامي. تُعاد context_input_ids بواسطة __call__().
  • context_attention_mask (torch.LongTensor of shape (batch_size * config.n_docs, config.max_combined_length),اختياري، يُعاد عند output_retrieved=True) — قناع الانتباه المُعالَج بعد الاستخراج من المستندات المسترجعة وinput_ids لمُشفِّر السؤال بواسطة المُسترجِع. إذا لم يكن النموذج مُهيَّأً مع retriever، فيجب توفير context_attention_mask لتمريرة الأمامية. تُعاد context_attention_mask بواسطة __call__().
  • use_cache (bool، اختياري) — إذا تم تعيينه إلى True، تُعاد حالات المفاتيح والقيم past_key_values ويمكن استخدامها لتسريع فك الترميز (انظر past_key_values).
  • output_attentions (bool، اختياري) — ما إذا كان يجب إرجاع تensors الانتباه لجميع طبقات الانتباه أم لا. راجع attentions ضمن tensors المُرجعة لمزيد من التفاصيل.
  • output_hidden_states (bool، اختياري) — ما إذا كان يجب إرجاع حالات الطبقات المخفية لجميع الطبقات. راجع hidden_states ضمن الموترات المُرجعة للحصول على مزيد من التفاصيل.
  • output_retrieved (bool, اختياري) — ما إذا كان سيتم إرجاع retrieved_doc_embeds وretrieved_doc_ids وcontext_input_ids و context_attention_mask. راجع الأوتاد المُرجعة لمزيد من التفاصيل.
  • n_docs (int، اختياري) — عدد المستندات التي يجب استرجاعها.

يعيد

RetrievAugLMOutput أو tuple(torch.Tensor)

RetrievAugLMOutput أو مجموعة مرتبة من torch.Tensor (في حال تمرير return_dict=False أو عندما يكون config.return_dict=False) وتتضمن عناصر مختلفة اعتماداً على الإعداد (RagConfig) والمدخلات.

تتجاوز طريقة RagModel الخاصة بالتقديم (forward) الطريقة الخاصة __call__.

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

  • logits (torch.Tensor من الشكل (batch_size, sequence_length, config.vocab_size)) — درجات التنبؤ لرأس نمذجة اللغة. قد تكون الدرجة مُجمَّعة على جميع المستندات لكل رمز في المفردات.

  • doc_scores (torch.Tensor من الشكل (batch_size, config.n_docs)) — الدرجة بين كل ترميزات المستندات المسترجعة (انظر retrieved_doc_embeds) وquestion_encoder_last_hidden_state.

  • past_key_values (Cache، اختياري، يُعاد عند تمرير use_cache=True أو عند تعيين config.use_cache=True) — إنه كائن من نوع Cache. لمزيد من التفاصيل، راجع دليل ذاكرة kv.

    تحتوي على حالات مخفية محسوبة مسبقاً (المفاتيح والقيم في كتل الانتباه) للمفكك، والتي يمكن استخدامها (انظر مدخل past_key_values) لتسريع فك الترميز التسلسلي.

  • retrieved_doc_embeds (torch.Tensor of shape (batch_size, config.n_docs, hidden_size), اختياري, يُعاد عند output_retrieved=True) — المستندات المضمنة التي استرجعها المسترجع. يُستخدم مع question_encoder_last_hidden_state لحساب doc_scores.

  • retrieved_doc_ids (torch.LongTensor of shape (batch_size, config.n_docs), اختياري, يُعاد عند output_retrieved=True) — فهارس المستندات المضمنة التي استرجعها المسترجع.

  • context_input_ids (torch.LongTensor من الشكل (batch_size * config.n_docs, config.max_combined_length)، اختياري، يُعاد عند output_retrieved=True) — معرّفات الإدخال بعد المعالجة من المستندات المسترجعة ومعرّفات الإدخال لمشفّر السؤال بواسطة المسترجع.

  • context_attention_mask (torch.LongTensor من الشكل (batch_size * config.n_docs, config.max_combined_length)، اختياري، يُعاد عند output_retrieved=True) — قناع الانتباه بعد معالجته من المستندات المسترجعة وinput_ids لمشفّر السؤال بواسطة المسترجع.

  • question_encoder_last_hidden_state (torch.Tensor of shape (batch_size, sequence_length, hidden_size), اختياري) — تسلسل حالات مخفية عند مخرج الطبقة الأخيرة من مُشفِّر السؤال، وهو المخرج المجمَّع للنموذج.

  • question_enc_hidden_states (tuple(torch.Tensor)، اختياري، يُعاد عند تمرير output_hidden_states=True أو عند تعيين config.output_hidden_states=True) — مجموعة من torch.Tensor (واحدة لمخرجات التضمينات وواحدة لمخرجات كل طبقة) ذات الشكل (batch_size, sequence_length, hidden_size).

    حالات المخفية لمشفّر السؤال عند مخرج كل طبقة بالإضافة إلى مخرجات التضمين الأولي.

  • question_enc_attentions (tuple(torch.Tensor)، اختياري، يُعاد عند تمرير output_attentions=True أو عند تعيين config.output_attentions=True) — مجموعة من torch.Tensor (واحدة لكل طبقة) بأبعاد (batch_size, num_heads, sequence_length, sequence_length).

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

  • generator_enc_last_hidden_state (torch.Tensor من الشكل (batch_size, sequence_length, hidden_size)، اختياري) — تسلسل من حالات الإخفاء عند مخرج الطبقة الأخيرة من مُشفِّر المولّد في النموذج.

  • generator_enc_hidden_states (tuple(torch.Tensor)، اختياري، يُعاد عند تمرير output_hidden_states=True أو عند تعيين config.output_hidden_states=True) — مجموعة من torch.Tensor (واحدة لمخرجات التضمينات وواحدة لمخرجات كل طبقة) ذات الشكل (batch_size, sequence_length, hidden_size).

    حالات المخفية لمُشفِّر المولّد عند مخرجات كل طبقة بالإضافة إلى مخرجات التضمين الأولي.

  • generator_enc_attentions (tuple(torch.Tensor)، اختياري، يُعاد عند تمرير output_attentions=True أو عند تعيين config.output_attentions=True) — مجموعة من torch.Tensor (واحد لكل طبقة) بأبعاد (batch_size, num_heads, sequence_length, sequence_length).

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

  • generator_dec_hidden_states (tuple(torch.Tensor)، اختياري، يُعاد عند تمرير output_hidden_states=True أو عند تعيين config.output_hidden_states=True) — مجموعة من torch.Tensor (واحدة لمخرجات التضمينات وواحدة لمخرجات كل طبقة) ذات الشكل (batch_size, sequence_length, hidden_size).

    حالات المخفية لمفكك المولّد عند مخرج كل طبقة بالإضافة إلى مخرجات التضمين الأولي.

  • generator_dec_attentions (tuple(torch.Tensor)، اختياري، يُعاد عند تمرير output_attentions=True أو عند تعيين config.output_attentions=True) — مجموعة من torch.Tensor (واحد لكل طبقة) بأبعاد (batch_size, num_heads, sequence_length, sequence_length).

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

  • generator_cross_attentions (tuple(torch.Tensor)، اختياري، يُعاد عند تمرير output_attentions=True أو عند تعيين config.output_attentions=True) — مجموعة من torch.Tensor (واحد لكل طبقة) بأبعاد (batch_size, num_heads, sequence_length, sequence_length).

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

مثال:

>>> from transformers import AutoTokenizer, RagRetriever, RagModel
>>> import torch

>>> tokenizer = AutoTokenizer.from_pretrained("facebook/rag-token-base")
>>> retriever = RagRetriever.from_pretrained(
...     "facebook/rag-token-base", index_name="exact", use_dummy_dataset=True
... )
>>> # initialize with RagRetriever to do everything in one forward call
>>> model = RagModel.from_pretrained("facebook/rag-token-base", retriever=retriever)

>>> inputs = tokenizer("How many people live in Paris?", return_tensors="pt")
>>> outputs = model(input_ids=inputs["input_ids"])

RagSequenceForGeneration

فئة transformers.RagSequenceForGeneration

< >

( config: transformers.configuration_utils.PreTrainedConfig | None = Nonequestion_encoder: transformers.modeling_utils.PreTrainedModel | None = Nonegenerator: transformers.modeling_utils.PreTrainedModel | None = Noneretriever: transformers.models.rag.retrieval_rag.RagRetriever | None = None**kwargs )

المعاملات

  • config (PreTrainedConfig، اختياري) — فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. لا يؤدي التهيئة باستخدام ملف الإعدادات إلى تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة from_pretrained() لتحميل أوزان النموذج.
  • question_encoder (PreTrainedModel، اختياري) — النموذج المسؤول عن ترميز السؤال إلى حالات خفية للاسترجاع.
  • generator (PreTrainedModel، اختياري) — النموذج المسؤول عن توليد النص بناءً على المستندات المسترجعة.
  • retriever (RagRetriever، اختياري) — المكوّن المسؤول عن استرجاع المستندات من قاعدة المعرفة بناءً على السؤال المُرمَّز.

تنفيذ لنموذج RAG-sequence. يقوم بتنفيذ التهميش الخاص بـ RAG-sequence في مسار الأمامي.

يرث هذا النموذج من PreTrainedModel. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع نماذجها (مثل التحميل أو الحفظ، وتغيير حجم تضمينات الإدخال، وقص الرؤوس، وما إلى ذلك).

هذا النموذج هو أيضًا فئة فرعية من torch.nn.Module في PyTorch. استخدمه كوحدة PyTorch عادية، وارجع إلى توثيق PyTorch لكل ما يتعلق بالاستخدام العام والسلوك.

forward

< >

( input_ids: typing.Optional[torch.LongTensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Noneencoder_outputs: tuple[tuple[torch.Tensor]] | None = Nonedecoder_input_ids: typing.Optional[torch.LongTensor] = Nonedecoder_attention_mask: typing.Optional[torch.BoolTensor] = Nonepast_key_values: transformers.cache_utils.Cache | None = Nonecontext_input_ids: typing.Optional[torch.LongTensor] = Nonecontext_attention_mask: typing.Optional[torch.LongTensor] = Nonedoc_scores: typing.Optional[torch.Tensor] = Noneuse_cache: bool | None = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Noneoutput_retrieved: bool | None = Noneexclude_bos_score: bool | None = Nonereduce_loss: bool | None = Nonelabels: typing.Optional[torch.LongTensor] = Nonen_docs: int | None = None**kwargs ) → RetrievAugLMMarginOutput or tuple(torch.Tensor)

المعاملات

  • input_ids (torch.LongTensor من الشكل (batch_size, sequence_length)) — مؤشرات رموز تسلسل الإدخال في قاموس الكلمات. RagConfig, تُستخدم لتهيئة النموذج، وتحدد المولّد الذي يجب استخدامه، كما تحدد مُجزِّئ (tokenizer) متوافق مع المولّد. استخدم فئة المُجزِّئ هذه للحصول على المؤشرات.

    ما هي معرّفات الإدخال؟

  • attention_mask (torch.Tensor بشكل (batch_size, sequence_length), اختياري) — قناع لتجنب تنفيذ الانتباه على فهارس رموز الحشو. القيم المختارة للقناع هي [0, 1]:
    • 1 للرموز التي لم تُقنَّع،
    • 0 للرموز التي تم إخفاؤها.

    ما هي أقنعة الانتباه؟

  • encoder_outputs (tuple(tuple(torch.Tensor), اختياري) — يتكون العنصر المُرجَع من (generator_enc_last_hidden_state, اختياري: generator_enc_hidden_states, اختياري: generator_enc_attentions). generator_enc_last_hidden_state بشكل (batch_size, n_docs * sequence_length, hidden_size) وهي سلسلة من حالات الإخفاء عند مخرج الطبقة الأخيرة من مُشفِّر المولّد.

    يُستخدم بواسطة نموذج (RagModel) أثناء فك الترميز.

  • decoder_input_ids (torch.LongTensor من الشكل (batch_size, target_sequence_length)، اختياري) — يُقدَّم لمهام التوليد. القيمة الافتراضية هي None، ويُبنى وفقاً للتعليمات الخاصة بنموذج المولّد الذي تستخدمه مع مثيل RAG الخاص بك.
  • decoder_input_ids (torch.LongTensor بشكل (batch_size, target_sequence_length), اختياري) — مؤشرات رموز تسلسل مدخلات المُفكِّك في قاموس الكلمات.

    يمكن الحصول على الفهارس باستخدام AutoTokenizer. راجع PreTrainedTokenizer.encode() و PreTrainedTokenizer.call() للتفاصيل.

    ما هي معرّفات مدخلات المُفكِّك؟

  • decoder_attention_mask (torch.BoolTensor of shape (batch_size, target_sequence_length), اختياري) — السلوك الافتراضي: توليد متجه يتجاهل رموز الحشو في decoder_input_ids. كما سيتم استخدام قناع سببي (Causal mask) افتراضيًا.
  • past_key_values (~cache_utils.Cache, اختياري) — حالات مخفية محسوبة مسبقًا (المفاتيح والقيم في كتل الانتباه الذاتي وكتل الانتباه المتقاطع) يمكن استخدامها لتسريع فك الترميز التسلسلي. يتكون هذا عادةً من past_key_values الذي يعيده النموذج في مرحلة سابقة من فك الترميز، عندما use_cache=True أو config.use_cache=True.

    يُسمح فقط بمرجع Cache كمدخل، راجع دليل ذاكرة kv لدينا. إذا لم يتم تمرير past_key_values، فسيتم تهيئة DynamicCache افتراضياً.

    سيُخرج النموذج نفس صيغة الكاش التي تُمرَّر كمدخل.

    عند استخدام past_key_values، يُتوقَّع من المستخدم إدخال input_ids غير المعالجة فقط (تلك التي لم تُقدَّم حالات مفاتيحها وقيمها السابقة إلى هذا النموذج) بأبعاد (batch_size, unprocessed_length) بدلاً من جميع input_ids بأبعاد (batch_size, sequence_length).

  • context_input_ids (torch.LongTensor of shape (batch_size * config.n_docs, config.max_combined_length), اختياري، يُعاد عند output_retrieved=True) — معرفات الإدخال بعد المعالجة المستخرجة من المستندات المسترجعة ومُشفِّر السؤال input_ids بواسطة المسترجع. إذا لم يتم تهيئة النموذج مع retriever `context_input_ids يجب توفيره لمرور التقديم الأمامي. تُعاد context_input_ids بواسطة __call__().
  • context_attention_mask (torch.LongTensor of shape (batch_size * config.n_docs, config.max_combined_length),اختياري، يُعاد عند output_retrieved=True) — قناع الانتباه المُعالَج بعد الاستخراج من المستندات المسترجعة وinput_ids لمُشفِّر السؤال بواسطة المُسترجِع. إذا لم يكن النموذج مُهيَّأً مع retriever، فيجب توفير context_attention_mask لتمريرة الأمامية. تُعاد context_attention_mask بواسطة __call__().
  • doc_scores (torch.Tensor من الشكل (batch_size, config.n_docs)) — الدرجة بين ترميزات كل مستند مسترجع (انظر retrieved_doc_embeds) و question_encoder_last_hidden_state. إذا لم يتم تهيئة النموذج مع retriever، فيجب توفير doc_scores لتمريرة الأمامية. يمكن حساب doc_scores عبر question_encoder_last_hidden_state وretrieved_doc_embeds، راجع الأمثلة لمزيد من المعلومات.
  • use_cache (bool، اختياري) — إذا تم تعيينه إلى True، تُعاد حالات المفاتيح والقيم past_key_values ويمكن استخدامها لتسريع فك الترميز (انظر past_key_values).
  • output_attentions (bool، اختياري) — ما إذا كان يجب إرجاع تensors الانتباه لجميع طبقات الانتباه أم لا. راجع attentions ضمن tensors المُرجعة لمزيد من التفاصيل.
  • output_hidden_states (bool، اختياري) — ما إذا كان يجب إرجاع حالات الطبقات المخفية لجميع الطبقات. راجع hidden_states ضمن الموترات المُرجعة للحصول على مزيد من التفاصيل.
  • output_retrieved (bool, اختياري) — ما إذا كان سيتم إرجاع retrieved_doc_embeds وretrieved_doc_ids وcontext_input_ids و context_attention_mask. راجع الأوتاد المُرجعة لمزيد من التفاصيل.
  • exclude_bos_score (bool، اختياري) — لا ينطبق إلا إذا تم تمرير labels. إذا كان True، يتم تجاهل درجة رمز BOS عند حساب الخسارة.
  • reduce_loss (bool, اختياري) — لا ينطبق إلا إذا تم تمرير labels. إذا كانت القيمة True، يتم تقليل خسارة NLL باستخدام عملية torch.Tensor.sum.
  • labels (torch.LongTensor من الشكل (batch_size, sequence_length)، اختياري) — التسميات لحساب خسارة نمذجة اللغة المقنّعة. يجب أن تكون الفهارس ضمن [0, ..., config.vocab_size] أو -100 (انظر input_ids docstring). يتم تجاهل الرموز التي فهارسها مضبوطة على -100 (مقنّعة)، ولا تُحسب الخسارة إلا للرموز التي تسمياتها ضمن [0, ..., config.vocab_size].
  • n_docs (int، اختياري) — عدد المستندات التي يجب استرجاعها.

يعيد

RetrievAugLMMarginOutput أو tuple(torch.Tensor)

RetrievAugLMMarginOutput أو مجموعة مرتبة من torch.Tensor (في حال تم تمرير return_dict=False أو عندما يكون config.return_dict=False) وتتضمن عناصر مختلفة اعتماداً على الإعداد (RagConfig) والمدخلات.

تتجاوز طريقة RagSequenceForGeneration الخاصة بالتقديم (forward) الطريقة الخاصة __call__.

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

  • loss (torch.Tensor of shape (1,), اختياري, يُعاد عند توفير labels) — خسارة نمذجة اللغة.

  • logits (torch.Tensor من الشكل (batch_size, sequence_length, config.vocab_size)) — درجات التنبؤ لرأس نمذجة اللغة. قد تكون الدرجة مُجمَّعة على جميع المستندات لكل رمز في المفردات.

  • doc_scores (torch.Tensor من الشكل (batch_size, config.n_docs)) — الدرجة بين كل ترميزات المستندات المسترجعة (انظر retrieved_doc_embeds) وquestion_encoder_last_hidden_state.

  • past_key_values (Cache، اختياري، يُعاد عند تمرير use_cache=True أو عند تعيين config.use_cache=True) — إنه كائن من نوع Cache. لمزيد من التفاصيل، راجع دليل ذاكرة kv.

    تحتوي على حالات مخفية محسوبة مسبقاً (المفاتيح والقيم في كتل الانتباه) للمفكك، والتي يمكن استخدامها (انظر مدخل past_key_values) لتسريع فك الترميز التسلسلي.

  • retrieved_doc_embeds (torch.Tensor of shape (batch_size, config.n_docs, hidden_size), اختياري, يُعاد عند output_retrieved=True) — المستندات المضمنة التي استرجعها المسترجع. يُستخدم مع question_encoder_last_hidden_state لحساب doc_scores.

  • retrieved_doc_ids (torch.LongTensor of shape (batch_size, config.n_docs), اختياري, يُعاد عند output_retrieved=True) — فهارس المستندات المضمنة التي استرجعها المسترجع.

  • context_input_ids (torch.LongTensor من الشكل (batch_size * config.n_docs, config.max_combined_length)، اختياري، يُعاد عند output_retrieved=True) — معرّفات الإدخال بعد المعالجة من المستندات المسترجعة ومعرّفات الإدخال لمشفّر السؤال بواسطة المسترجع.

  • context_attention_mask (torch.LongTensor من الشكل (batch_size * config.n_docs, config.max_combined_length)، اختياري، يُعاد عند output_retrieved=True) — قناع الانتباه بعد معالجته من المستندات المسترجعة وinput_ids لمشفّر السؤال بواسطة المسترجع.

  • question_encoder_last_hidden_state (torch.Tensor of shape (batch_size, sequence_length, hidden_size), اختياري) — تسلسل حالات مخفية عند مخرج الطبقة الأخيرة من مُشفِّر السؤال، وهو المخرج المجمَّع للنموذج.

  • question_enc_hidden_states (tuple(torch.Tensor)، اختياري، يُعاد عند تمرير output_hidden_states=True أو عند تعيين config.output_hidden_states=True) — مجموعة من torch.Tensor (واحدة لمخرجات التضمينات وواحدة لمخرجات كل طبقة) ذات الشكل (batch_size, sequence_length, hidden_size).

    حالات المخفية لمشفّر السؤال عند مخرج كل طبقة بالإضافة إلى مخرجات التضمين الأولي.

  • question_enc_attentions (tuple(torch.Tensor)، اختياري، يُعاد عند تمرير output_attentions=True أو عند تعيين config.output_attentions=True) — مجموعة من torch.Tensor (واحدة لكل طبقة) بأبعاد (batch_size, num_heads, sequence_length, sequence_length).

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

  • generator_enc_last_hidden_state (torch.Tensor من الشكل (batch_size, sequence_length, hidden_size)، اختياري) — تسلسل من حالات الإخفاء عند مخرج الطبقة الأخيرة من مُشفِّر المولّد في النموذج.

  • generator_enc_hidden_states (tuple(torch.Tensor)، اختياري، يُعاد عند تمرير output_hidden_states=True أو عند تعيين config.output_hidden_states=True) — مجموعة من torch.Tensor (واحدة لمخرجات التضمينات وواحدة لمخرجات كل طبقة) ذات الشكل (batch_size, sequence_length, hidden_size).

    حالات المخفية لمُشفِّر المولّد عند مخرجات كل طبقة بالإضافة إلى مخرجات التضمين الأولي.

  • generator_enc_attentions (tuple(torch.Tensor)، اختياري، يُعاد عند تمرير output_attentions=True أو عند تعيين config.output_attentions=True) — مجموعة من torch.Tensor (واحد لكل طبقة) بأبعاد (batch_size, num_heads, sequence_length, sequence_length).

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

  • generator_dec_hidden_states (tuple(torch.Tensor)، اختياري، يُعاد عند تمرير output_hidden_states=True أو عند تعيين config.output_hidden_states=True) — مجموعة من torch.Tensor (واحدة لمخرجات التضمينات وواحدة لمخرجات كل طبقة) ذات الشكل (batch_size, sequence_length, hidden_size).

    حالات المخفية لمفكك المولّد عند مخرج كل طبقة بالإضافة إلى مخرجات التضمين الأولي.

  • generator_dec_attentions (tuple(torch.Tensor)، اختياري، يُعاد عند تمرير output_attentions=True أو عند تعيين config.output_attentions=True) — مجموعة من torch.Tensor (واحد لكل طبقة) بأبعاد (batch_size, num_heads, sequence_length, sequence_length).

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

  • generator_cross_attentions (tuple(torch.Tensor)، اختياري، يُعاد عند تمرير output_attentions=True أو عند تعيين config.output_attentions=True) — مجموعة من torch.Tensor (واحد لكل طبقة) بأبعاد (batch_size, num_heads, sequence_length, sequence_length).

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

مثال:

>>> from transformers import AutoTokenizer, RagRetriever, RagSequenceForGeneration
>>> import torch

>>> tokenizer = AutoTokenizer.from_pretrained("facebook/rag-sequence-nq")
>>> retriever = RagRetriever.from_pretrained(
...     "facebook/rag-sequence-nq", index_name="exact", use_dummy_dataset=True
... )
>>> # initialize with RagRetriever to do everything in one forward call
>>> model = RagSequenceForGeneration.from_pretrained("facebook/rag-token-nq", retriever=retriever)

>>> inputs = tokenizer("How many people live in Paris?", return_tensors="pt")
>>> targets = tokenizer(text_target="In Paris, there are 10 million people.", return_tensors="pt")
>>> input_ids = inputs["input_ids"]
>>> labels = targets["input_ids"]
>>> outputs = model(input_ids=input_ids, labels=labels)

>>> # or use retriever separately
>>> model = RagSequenceForGeneration.from_pretrained("facebook/rag-sequence-nq", use_dummy_dataset=True)
>>> # 1. Encode
>>> question_hidden_states = model.question_encoder(input_ids)[0]
>>> # 2. Retrieve
>>> docs_dict = retriever(input_ids.numpy(), question_hidden_states.detach().numpy(), return_tensors="pt")
>>> doc_scores = torch.bmm(
...     question_hidden_states.unsqueeze(1), docs_dict["retrieved_doc_embeds"].float().transpose(1, 2)
... ).squeeze(1)
>>> # 3. Forward to generator
>>> outputs = model(
...     context_input_ids=docs_dict["context_input_ids"],
...     context_attention_mask=docs_dict["context_attention_mask"],
...     doc_scores=doc_scores,
...     decoder_input_ids=labels,
... )

generate

< >

( input_ids: typing.Optional[torch.LongTensor] = Noneattention_mask: typing.Optional[torch.LongTensor] = Nonecontext_input_ids: typing.Optional[torch.LongTensor] = Nonecontext_attention_mask: typing.Optional[torch.LongTensor] = Nonedoc_scores: typing.Optional[torch.Tensor] = Nonedo_deduplication: bool | None = Nonenum_return_sequences: int | None = Nonenum_beams: int | None = Nonen_docs: int | None = None**model_kwargs ) → torch.LongTensor of shape (batch_size * num_return_sequences, sequence_length)

المعاملات

  • input_ids (torch.LongTensor من الشكل (batch_size, sequence_length)، اختياري) — التسلسل المستخدم كموجّه (prompt) للتوليد. إذا لم يُمرَّر input_ids، فيجب توفير context_input_ids.
  • attention_mask (torch.Tensor بشكل (batch_size, sequence_length), اختياري) — قناع لتجنب تنفيذ الانتباه على فهارس رموز الحشو. القيم المختارة للقناع هي [0, 1]:
    • 1 للرموز التي لم تُقنَّع،
    • 0 للرموز التي تم إخفاؤها.

    ما هي أقنعة الانتباه؟

  • context_input_ids (torch.LongTensor من الشكل (batch_size * config.n_docs, config.max_combined_length)، اختياري، يُعاد عند output_retrieved=True) — معرّفات الإدخال بعد المعالجة المستخرجة من المستندات المسترجعة ومعرّفات الإدخال لمشفّر السؤال بواسطة المسترجع.
  • context_attention_mask (torch.LongTensor بشكل (batch_size * config.n_docs, config.max_combined_length), اختياري, يُعاد عند output_retrieved=True) — قناع الانتباه بعد معالجته من المستندات المسترجعة ومشفّر السؤال input_ids بواسطة المسترجع.

    إذا لم يتم تهيئة النموذج مع retriever أو لم يتم تقديم input_ids، فيجب تقديم context_input_ids و context_attention_mask إلى مسار الأمام. يتم إرجاعها بواسطة __call__().

  • doc_scores (torch.Tensor بشكل (batch_size, config.n_docs)) — درجة بين كل تضمينات المستندات المسترجعة (انظر retrieved_doc_embeds) و question_encoder_last_hidden_state.

    إذا لم يتم تهيئة النموذج مع retriever أو لم يتم تقديم input_ids، فيجب تقديم doc_scores إلى مسار الأمام. تُعاد doc_scores بواسطة __call__().

  • do_deduplication (bool، اختياري) — ما إذا كان سيتم إزالة التكرار من المخرجات الناتجة عن مستندات سياقية مختلفة لإدخال معيّن. يجب تعيينه إلى False عند استخدامه أثناء التدريب مع واجهة موزّعة.
  • num_return_sequences(int, اختياري، القيمة الافتراضية 1) — عدد التسلسلات المستقلة المحسوبة والمُعاد إرجاعها لكل عنصر في الدفعة. لاحظ أن هذه ليست القيمة التي نمررها إلى دالة [generate()](/docs/transformers/main/en/main_classes/text_generation#transformers.GenerationMixin.generate) الخاصة بـgenerator، حيث نضبط num_return_sequences على num_beams.
  • num_beams (int، اختياري، القيمة الافتراضية 1) — عدد الحزم في بحث الحزم. القيمة 1 تعني عدم استخدام بحث الحزم.
  • n_docs (int، اختياري، القيمة الافتراضية config.n_docs) — عدد المستندات التي يجب استرجاعها و/أو عدد المستندات التي سيتم توليد إجابة لها.
  • kwargs (dict[str, Any]، اختياري) — سيتم تمرير kwargs الإضافية إلى generate().

يعيد

torch.LongTensor من الشكل (batch_size * num_return_sequences, sequence_length)

التسلسلات المولّدة. يكون البُعد الثاني (طول التسلسل) مساوياً لـmax_length أو أقصر منه إذا انتهت جميع الدفعات مبكراً بسبب eos_token_id.

يُنفّذ فكّ الترميز "الشامل" لتسلسل RAG. اقرأ توثيق generate()` لمزيد من المعلومات حول كيفية ضبط معاملات الإدخال الأخرى لـ generate.

RagTokenForGeneration

فئة transformers.RagTokenForGeneration

< >

( config: transformers.configuration_utils.PreTrainedConfig | None = Nonequestion_encoder: transformers.modeling_utils.PreTrainedModel | None = Nonegenerator: transformers.modeling_utils.PreTrainedModel | None = Noneretriever: transformers.models.rag.retrieval_rag.RagRetriever | None = None**kwargs )

المعاملات

  • config (PreTrainedConfig، اختياري) — فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. لا يؤدي التهيئة باستخدام ملف الإعدادات إلى تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة from_pretrained() لتحميل أوزان النموذج.
  • question_encoder (PreTrainedModel، اختياري) — النموذج المسؤول عن ترميز السؤال إلى حالات خفية للاسترجاع.
  • generator (PreTrainedModel، اختياري) — النموذج المسؤول عن توليد النص بناءً على المستندات المسترجعة.
  • retriever (RagRetriever، اختياري) — المكوّن المسؤول عن استرجاع المستندات من قاعدة المعرفة بناءً على السؤال المُرمَّز.

تنفيذ لنموذج RAG-token. يقوم بإجراء التهميش الخاص بـ RAG-token في مسار التقدّم الأمامي.

يرث هذا النموذج من PreTrainedModel. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع نماذجها (مثل التحميل أو الحفظ، وتغيير حجم تضمينات الإدخال، وقص الرؤوس، وما إلى ذلك).

هذا النموذج هو أيضًا فئة فرعية من torch.nn.Module في PyTorch. استخدمه كوحدة PyTorch عادية، وارجع إلى توثيق PyTorch لكل ما يتعلق بالاستخدام العام والسلوك.

forward

< >

( input_ids: typing.Optional[torch.LongTensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Noneencoder_outputs: tuple[tuple[torch.Tensor]] | None = Nonedecoder_input_ids: typing.Optional[torch.LongTensor] = Nonedecoder_attention_mask: typing.Optional[torch.BoolTensor] = Nonepast_key_values: transformers.cache_utils.Cache | None = Nonecontext_input_ids: typing.Optional[torch.LongTensor] = Nonecontext_attention_mask: typing.Optional[torch.LongTensor] = Nonedoc_scores: typing.Optional[torch.Tensor] = Noneuse_cache: bool | None = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Noneoutput_retrieved: bool | None = Nonedo_marginalize: bool | None = Nonereduce_loss: bool | None = Nonelabels: typing.Optional[torch.LongTensor] = Nonen_docs: int | None = None**kwargs ) → RetrievAugLMMarginOutput or tuple(torch.Tensor)

المعاملات

  • input_ids (torch.LongTensor من الشكل (batch_size, sequence_length)) — مؤشرات رموز تسلسل الإدخال في قاموس الكلمات. RagConfig, تُستخدم لتهيئة النموذج، وتحدد المولّد الذي يجب استخدامه، كما تحدد مُجزِّئ (tokenizer) متوافق مع المولّد. استخدم فئة المُجزِّئ هذه للحصول على المؤشرات.

    ما هي معرّفات الإدخال؟

  • attention_mask (torch.Tensor بشكل (batch_size, sequence_length), اختياري) — قناع لتجنب تنفيذ الانتباه على فهارس رموز الحشو. القيم المختارة للقناع هي [0, 1]:
    • 1 للرموز التي لم تُقنَّع،
    • 0 للرموز التي تم إخفاؤها.

    ما هي أقنعة الانتباه؟

  • encoder_outputs (tuple(tuple(torch.Tensor), اختياري) — يتكون العنصر المُرجَع من (generator_enc_last_hidden_state, اختياري: generator_enc_hidden_states, اختياري: generator_enc_attentions). generator_enc_last_hidden_state بشكل (batch_size, n_docs * sequence_length, hidden_size) وهي سلسلة من حالات الإخفاء عند مخرج الطبقة الأخيرة من مُشفِّر المولّد.

    يُستخدم بواسطة نموذج (RagModel) أثناء فك الترميز.

  • decoder_input_ids (torch.LongTensor من الشكل (batch_size, target_sequence_length)، اختياري) — يُقدَّم لمهام التوليد. القيمة الافتراضية هي None، ويُبنى وفقاً للتعليمات الخاصة بنموذج المولّد الذي تستخدمه مع مثيل RAG الخاص بك.
  • decoder_input_ids (torch.LongTensor بشكل (batch_size, target_sequence_length), اختياري) — مؤشرات رموز تسلسل مدخلات المُفكِّك في قاموس الكلمات.

    يمكن الحصول على الفهارس باستخدام AutoTokenizer. راجع PreTrainedTokenizer.encode() و PreTrainedTokenizer.call() للتفاصيل.

    ما هي معرّفات مدخلات المُفكِّك؟

  • decoder_attention_mask (torch.BoolTensor of shape (batch_size, target_sequence_length), اختياري) — السلوك الافتراضي: توليد متجه يتجاهل رموز الحشو في decoder_input_ids. كما سيتم استخدام قناع سببي (Causal mask) افتراضيًا.
  • past_key_values (~cache_utils.Cache, اختياري) — حالات مخفية محسوبة مسبقًا (المفاتيح والقيم في كتل الانتباه الذاتي وكتل الانتباه المتقاطع) يمكن استخدامها لتسريع فك الترميز التسلسلي. يتكون هذا عادةً من past_key_values الذي يعيده النموذج في مرحلة سابقة من فك الترميز، عندما use_cache=True أو config.use_cache=True.

    يُسمح فقط بمرجع Cache كمدخل، راجع دليل ذاكرة kv لدينا. إذا لم يتم تمرير past_key_values، فسيتم تهيئة DynamicCache افتراضياً.

    سيُخرج النموذج نفس صيغة الكاش التي تُمرَّر كمدخل.

    عند استخدام past_key_values، يُتوقَّع من المستخدم إدخال input_ids غير المعالجة فقط (تلك التي لم تُقدَّم حالات مفاتيحها وقيمها السابقة إلى هذا النموذج) بأبعاد (batch_size, unprocessed_length) بدلاً من جميع input_ids بأبعاد (batch_size, sequence_length).

  • context_input_ids (torch.LongTensor of shape (batch_size * config.n_docs, config.max_combined_length), اختياري، يُعاد عند output_retrieved=True) — معرفات الإدخال بعد المعالجة المستخرجة من المستندات المسترجعة ومُشفِّر السؤال input_ids بواسطة المسترجع. إذا لم يتم تهيئة النموذج مع retriever `context_input_ids يجب توفيره لمرور التقديم الأمامي. تُعاد context_input_ids بواسطة __call__().
  • context_attention_mask (torch.LongTensor of shape (batch_size * config.n_docs, config.max_combined_length),اختياري، يُعاد عند output_retrieved=True) — قناع الانتباه المُعالَج بعد الاستخراج من المستندات المسترجعة وinput_ids لمُشفِّر السؤال بواسطة المُسترجِع. إذا لم يكن النموذج مُهيَّأً مع retriever، فيجب توفير context_attention_mask لتمريرة الأمامية. تُعاد context_attention_mask بواسطة __call__().
  • doc_scores (torch.Tensor من الشكل (batch_size, config.n_docs)) — الدرجة بين ترميزات كل مستند مسترجع (انظر retrieved_doc_embeds) و question_encoder_last_hidden_state. إذا لم يتم تهيئة النموذج مع retriever، فيجب توفير doc_scores لتمريرة الأمامية. يمكن حساب doc_scores عبر question_encoder_last_hidden_state وretrieved_doc_embeds، راجع الأمثلة لمزيد من المعلومات.
  • use_cache (bool، اختياري) — إذا تم تعيينه إلى True، تُعاد حالات المفاتيح والقيم past_key_values ويمكن استخدامها لتسريع فك الترميز (انظر past_key_values).
  • output_attentions (bool، اختياري) — ما إذا كان يجب إرجاع تensors الانتباه لجميع طبقات الانتباه أم لا. راجع attentions ضمن tensors المُرجعة لمزيد من التفاصيل.
  • output_hidden_states (bool، اختياري) — ما إذا كان يجب إرجاع حالات الطبقات المخفية لجميع الطبقات. راجع hidden_states ضمن الموترات المُرجعة للحصول على مزيد من التفاصيل.
  • output_retrieved (bool, اختياري) — ما إذا كان سيتم إرجاع retrieved_doc_embeds وretrieved_doc_ids وcontext_input_ids و context_attention_mask. راجع الأوتاد المُرجعة لمزيد من التفاصيل.
  • do_marginalize (bool، اختياري) — إذا كانت True، يتم تهميش قيم logits عبر جميع المستندات باستخدام torch.nn.functional.log_softmax.
  • reduce_loss (bool, اختياري) — لا ينطبق إلا إذا تم تمرير labels. إذا كانت القيمة True، يتم تقليل خسارة NLL باستخدام عملية torch.Tensor.sum.
  • labels (torch.LongTensor من الشكل (batch_size, sequence_length)، اختياري) — التسميات لحساب خسارة نمذجة اللغة المقنّعة. يجب أن تكون الفهارس ضمن [0, ..., config.vocab_size] أو -100 (انظر input_ids docstring). يتم تجاهل الرموز التي فهارسها مضبوطة على -100 (مقنّعة)، ولا تُحسب الخسارة إلا للرموز التي تسمياتها ضمن [0, ..., config.vocab_size].
  • n_docs (int، اختياري) — عدد المستندات التي يجب استرجاعها.

يعيد

RetrievAugLMMarginOutput أو tuple(torch.Tensor)

RetrievAugLMMarginOutput أو مجموعة مرتبة من torch.Tensor (في حال تمرير return_dict=False أو عندما يكون config.return_dict=False) وتتضمن عناصر مختلفة اعتماداً على الإعداد (RagConfig) والمدخلات.

تُعيد طريقة RagTokenForGeneration الخاصة بالتقديم (forward) تعريف الطريقة الخاصة __call__.

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

  • loss (torch.Tensor of shape (1,), اختياري, يُعاد عند توفير labels) — خسارة نمذجة اللغة.

  • logits (torch.Tensor من الشكل (batch_size, sequence_length, config.vocab_size)) — درجات التنبؤ لرأس نمذجة اللغة. قد تكون الدرجة مُجمَّعة على جميع المستندات لكل رمز في المفردات.

  • doc_scores (torch.Tensor من الشكل (batch_size, config.n_docs)) — الدرجة بين كل ترميزات المستندات المسترجعة (انظر retrieved_doc_embeds) وquestion_encoder_last_hidden_state.

  • past_key_values (Cache، اختياري، يُعاد عند تمرير use_cache=True أو عند تعيين config.use_cache=True) — إنه كائن من نوع Cache. لمزيد من التفاصيل، راجع دليل ذاكرة kv.

    تحتوي على حالات مخفية محسوبة مسبقاً (المفاتيح والقيم في كتل الانتباه) للمفكك، والتي يمكن استخدامها (انظر مدخل past_key_values) لتسريع فك الترميز التسلسلي.

  • retrieved_doc_embeds (torch.Tensor of shape (batch_size, config.n_docs, hidden_size), اختياري, يُعاد عند output_retrieved=True) — المستندات المضمنة التي استرجعها المسترجع. يُستخدم مع question_encoder_last_hidden_state لحساب doc_scores.

  • retrieved_doc_ids (torch.LongTensor of shape (batch_size, config.n_docs), اختياري, يُعاد عند output_retrieved=True) — فهارس المستندات المضمنة التي استرجعها المسترجع.

  • context_input_ids (torch.LongTensor من الشكل (batch_size * config.n_docs, config.max_combined_length)، اختياري، يُعاد عند output_retrieved=True) — معرّفات الإدخال بعد المعالجة من المستندات المسترجعة ومعرّفات الإدخال لمشفّر السؤال بواسطة المسترجع.

  • context_attention_mask (torch.LongTensor من الشكل (batch_size * config.n_docs, config.max_combined_length)، اختياري، يُعاد عند output_retrieved=True) — قناع الانتباه بعد معالجته من المستندات المسترجعة وinput_ids لمشفّر السؤال بواسطة المسترجع.

  • question_encoder_last_hidden_state (torch.Tensor of shape (batch_size, sequence_length, hidden_size), اختياري) — تسلسل حالات مخفية عند مخرج الطبقة الأخيرة من مُشفِّر السؤال، وهو المخرج المجمَّع للنموذج.

  • question_enc_hidden_states (tuple(torch.Tensor)، اختياري، يُعاد عند تمرير output_hidden_states=True أو عند تعيين config.output_hidden_states=True) — مجموعة من torch.Tensor (واحدة لمخرجات التضمينات وواحدة لمخرجات كل طبقة) ذات الشكل (batch_size, sequence_length, hidden_size).

    حالات المخفية لمشفّر السؤال عند مخرج كل طبقة بالإضافة إلى مخرجات التضمين الأولي.

  • question_enc_attentions (tuple(torch.Tensor)، اختياري، يُعاد عند تمرير output_attentions=True أو عند تعيين config.output_attentions=True) — مجموعة من torch.Tensor (واحدة لكل طبقة) بأبعاد (batch_size, num_heads, sequence_length, sequence_length).

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

  • generator_enc_last_hidden_state (torch.Tensor من الشكل (batch_size, sequence_length, hidden_size)، اختياري) — تسلسل من حالات الإخفاء عند مخرج الطبقة الأخيرة من مُشفِّر المولّد في النموذج.

  • generator_enc_hidden_states (tuple(torch.Tensor)، اختياري، يُعاد عند تمرير output_hidden_states=True أو عند تعيين config.output_hidden_states=True) — مجموعة من torch.Tensor (واحدة لمخرجات التضمينات وواحدة لمخرجات كل طبقة) ذات الشكل (batch_size, sequence_length, hidden_size).

    حالات المخفية لمُشفِّر المولّد عند مخرجات كل طبقة بالإضافة إلى مخرجات التضمين الأولي.

  • generator_enc_attentions (tuple(torch.Tensor)، اختياري، يُعاد عند تمرير output_attentions=True أو عند تعيين config.output_attentions=True) — مجموعة من torch.Tensor (واحد لكل طبقة) بأبعاد (batch_size, num_heads, sequence_length, sequence_length).

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

  • generator_dec_hidden_states (tuple(torch.Tensor)، اختياري، يُعاد عند تمرير output_hidden_states=True أو عند تعيين config.output_hidden_states=True) — مجموعة من torch.Tensor (واحدة لمخرجات التضمينات وواحدة لمخرجات كل طبقة) ذات الشكل (batch_size, sequence_length, hidden_size).

    حالات المخفية لمفكك المولّد عند مخرج كل طبقة بالإضافة إلى مخرجات التضمين الأولي.

  • generator_dec_attentions (tuple(torch.Tensor)، اختياري، يُعاد عند تمرير output_attentions=True أو عند تعيين config.output_attentions=True) — مجموعة من torch.Tensor (واحد لكل طبقة) بأبعاد (batch_size, num_heads, sequence_length, sequence_length).

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

  • generator_cross_attentions (tuple(torch.Tensor)، اختياري، يُعاد عند تمرير output_attentions=True أو عند تعيين config.output_attentions=True) — مجموعة من torch.Tensor (واحد لكل طبقة) بأبعاد (batch_size, num_heads, sequence_length, sequence_length).

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

مثال:

>>> from transformers import AutoTokenizer, RagRetriever, RagTokenForGeneration
>>> import torch

>>> tokenizer = AutoTokenizer.from_pretrained("facebook/rag-token-nq")
>>> retriever = RagRetriever.from_pretrained(
...     "facebook/rag-token-nq", index_name="exact", use_dummy_dataset=True
... )
>>> # initialize with RagRetriever to do everything in one forward call
>>> model = RagTokenForGeneration.from_pretrained("facebook/rag-token-nq", retriever=retriever)

>>> inputs = tokenizer("How many people live in Paris?", return_tensors="pt")
>>> targets = tokenizer(text_target="In Paris, there are 10 million people.", return_tensors="pt")
>>> input_ids = inputs["input_ids"]
>>> labels = targets["input_ids"]
>>> outputs = model(input_ids=input_ids, labels=labels)

>>> # or use retriever separately
>>> model = RagTokenForGeneration.from_pretrained("facebook/rag-token-nq", use_dummy_dataset=True)
>>> # 1. Encode
>>> question_hidden_states = model.question_encoder(input_ids)[0]
>>> # 2. Retrieve
>>> docs_dict = retriever(input_ids.numpy(), question_hidden_states.detach().numpy(), return_tensors="pt")
>>> doc_scores = torch.bmm(
...     question_hidden_states.unsqueeze(1), docs_dict["retrieved_doc_embeds"].float().transpose(1, 2)
... ).squeeze(1)
>>> # 3. Forward to generator
>>> outputs = model(
...     context_input_ids=docs_dict["context_input_ids"],
...     context_attention_mask=docs_dict["context_attention_mask"],
...     doc_scores=doc_scores,
...     decoder_input_ids=labels,
... )

>>> # or directly generate
>>> generated = model.generate(
...     context_input_ids=docs_dict["context_input_ids"],
...     context_attention_mask=docs_dict["context_attention_mask"],
...     doc_scores=doc_scores,
... )
>>> generated_string = tokenizer.batch_decode(generated, skip_special_tokens=True)

generate

< >

( input_ids: typing.Optional[torch.LongTensor] = Noneattention_mask: typing.Optional[torch.LongTensor] = Nonecontext_input_ids: typing.Optional[torch.LongTensor] = Nonecontext_attention_mask: typing.Optional[torch.LongTensor] = Nonedoc_scores: typing.Optional[torch.Tensor] = Nonen_docs: int | None = Nonegeneration_config: transformers.generation.configuration_utils.GenerationConfig | None = Noneprefix_allowed_tokens_fn: collections.abc.Callable[[int, torch.Tensor], list[int]] | None = Nonelogits_processor: transformers.generation.logits_process.LogitsProcessorList | None = []stopping_criteria: transformers.generation.stopping_criteria.StoppingCriteriaList | None = []**kwargs ) → torch.LongTensor of shape (batch_size * num_return_sequences, sequence_length)

المعاملات

  • input_ids (torch.LongTensor من الشكل (batch_size, sequence_length)، اختياري) — التسلسل المستخدم كموجّه (prompt) للتوليد. إذا لم يُمرَّر input_ids، فيجب توفير context_input_ids.
  • attention_mask (torch.Tensor بشكل (batch_size, sequence_length), اختياري) — قناع لتجنب تنفيذ الانتباه على فهارس رموز الحشو. القيم المختارة للقناع هي [0, 1]:
    • 1 للرموز التي لم تُقنَّع،
    • 0 للرموز التي تم إخفاؤها.

    ما هي أقنعة الانتباه؟

  • context_input_ids (torch.LongTensor of shape (batch_size * config.n_docs, config.max_combined_length), optional, returned when output_retrieved=True) — Input IDs post-processed from the retrieved documents and the question encoder input_ids by the retriever.

    إذا لم يتم تهيئة النموذج مع retriever، فيجب توفير context_input_ids لمرور الأمام. تُعاد context_input_ids بواسطة __call__().

  • context_attention_mask (torch.LongTensor of shape (batch_size * config.n_docs, config.max_combined_length), optional, returned when output_retrieved=True) — Attention mask post-processed from the retrieved documents and the question encoder input_ids by the retriever.

    إذا لم يتم تهيئة النموذج مع retriever، فيجب توفير context_input_ids لتمريرة الأمام. تُعاد context_input_ids بواسطة __call__().

  • doc_scores (torch.Tensor بشكل (batch_size, config.n_docs)) — الدرجة بين كل ترميزات المستندات المسترجعة (انظر retrieved_doc_embeds) و question_encoder_last_hidden_state.

    إذا لم يتم تهيئة النموذج مع retriever، فيجب توفير context_input_ids لتمريرة الأمام. تُعاد context_input_ids بواسطة __call__().

  • n_docs (int، اختياري، القيمة الافتراضية config.n_docs) — عدد المستندات التي يجب استرجاعها و/أو عدد المستندات التي سيتم توليد إجابة لها.
  • generation_config (~generation.GenerationConfig، اختياري) — إعدادات التوليد التي تُستخدم كإعدادات أساسية لاستدعاء التوليد. أي معاملات **kwargs مرسلة إلى generate تطابق سمات generation_config ستُلغي قيمها. إذا لم يُقدَّم generation_config، فسيُستخدم الإعداد الافتراضي، الذي يتبع أولوية التحميل التالية: 1) من ملف generation_config.json الخاص بالنموذج، إن وُجد؛ 2) من إعدادات النموذج. يُرجى ملاحظة أن المعاملات غير المحددة ستورث القيم الافتراضية لـ GenerationConfig، والتي يجب الرجوع إلى توثيقها لضبط عملية التوليد.
  • prefix_allowed_tokens_fn (Callable[[int, torch.Tensor], list[int]]، اختياري) — إذا تم توفيره، فإن هذه الدالة تُقيّد بحث الحزمة (beam search) على الرموز المسموح بها فقط في كل خطوة. إذا لم يُقدَّم، فلا يُطبَّق أي قيد. تستقبل هذه الدالة حجتين: inputs_ids ومعرّف الدفعة batch_id. يجب أن تُرجع قائمة بالرموز المسموح بها لخطوة التوليد التالية، مشروطةً بالرموز المولَّدة سابقًا inputs_ids ومعرّف الدفعة batch_id. يُعدّ هذا الحُجّة مفيدًا للتوليد المقيد المشروط على البادئة، كما هو موصوف في استرجاع الكيانات التلقائي التكراري (Autoregressive Entity Retrieval).
  • logits_processor (LogitsProcessorList، اختياري) — معالجات logits مخصصة تكمل المعالجات الافتراضية المبنية من الحُجج وإعدادات النموذج. إذا تم تمرير معالج logits تم إنشاؤه مسبقًا باستخدام الحُجج أو إعدادات النموذج، فسيتم طرح خطأ.
  • stopping_criteria (StoppingCriteriaList، اختياري) — معايير إيقاف مخصصة تكمل معايير الإيقاف الافتراضية المبنية من الحجج وإعدادات النموذج. إذا تم تمرير معيار إيقاف تم إنشاؤه مسبقًا باستخدام الحجج أو إعدادات النموذج، فسيتم طرح خطأ.
  • kwargs (dict[str, Any], اختياري) — تحديد معاملات بشكل مؤقت لـ generate_config و/أو معاملات إضافية خاصة بالنموذج سيتم تمريرها إلى دالة forward الخاصة بالنموذج.

يعيد

torch.LongTensor من الشكل (batch_size * num_return_sequences, sequence_length)

التسلسلات المولّدة. يكون البُعد الثاني (sequence_length) مساوياً لـmax_length أو أقصر منه إذا انتهت جميع الدفعات مبكراً بسبب eos_token_id.

يُنفّذ فكّ ترميز رموز RAG.

Update on GitHub