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

Model ini dipublikasikan di HF papers pada 2020-05-22 dan disumbangkan ke Hugging Face Transformers pada 2020-11-16.

RAG

FlashAttention

Retrieval-Augmented Generation (RAG) menggabungkan model bahasa pretrained (memori parametrik) dengan akses ke sumber data eksternal (memori non-parametrik) melalui neural retriever pretrained. RAG mengambil cuplikan yang relevan dan mengondisikan proses generasinya berdasarkan cuplikan tersebut selama inferensi. Hal ini sering kali membuat jawaban lebih faktual dan memungkinkan Anda memperbarui pengetahuan dengan mengubah indeks, alih-alih melatih ulang seluruh model.

Anda dapat menemukan semua checkpoint RAG asli di bawah organisasi AI at Meta.

Model ini disumbangkan oleh ola13.

Klik pada model RAG di bilah sisi kanan untuk melihat lebih banyak contoh cara menerapkan RAG ke berbagai tugas bahasa.

Contoh di bawah ini menunjukkan cara menghasilkan teks dengan 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])

Quantization mengurangi memori dengan menyimpan bobot dalam presisi yang lebih rendah. Lihat ringkasan Quantization untuk backend yang didukung. Contoh di bawah ini menggunakan bitsandbytes untuk mengkuantisasi bobot menjadi 4-bit.

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

kelas 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 )

Parameter

  • is_encoder_decoder (bool, opsional, defaultnya True) — Apakah model digunakan sebagai encoder/decoder atau tidak.
  • question_encoder (PreTrainedConfig | dict, opsional) — Objek config atau dictionary dari backbone question encoder
  • generator (PreTrainedConfig | dict, opsional) — Objek config atau dictionary dari backbone generator jawaban
  • vocab_size (int, opsional) — Ukuran kosakata model. Menentukan jumlah token berbeda yang dapat direpresentasikan oleh input_ids.
  • prefix (str, opsional) — Prefiks string yang ditambahkan ke setiap input sebelum diteruskan ke model generator.
  • bos_token_id (int, opsional) — ID token yang digunakan untuk awal aliran (beginning-of-stream) dalam kosakata.
  • pad_token_id (int, opsional) — ID token yang digunakan untuk padding dalam kosakata.
  • eos_token_id (Union[int, list[int]], opsional) — ID token yang digunakan untuk akhir aliran dalam kosakata.
  • decoder_start_token_id (int, opsional) — Jika model encoder-decoder memulai decoding dengan token yang berbeda dari bos, id dari token tersebut.
  • title_sep (str, opsional, defaultnya " / ") — Pemisah yang disisipkan antara judul dan teks dokumen yang diambil saat memanggil RagRetriever.
  • doc_sep (str, opsional, default " // ") — Pemisah yang disisipkan antara teks dokumen yang diambil dan input asli saat memanggil RagRetriever.
  • n_docs (int, opsional, default 5) — Jumlah dokumen yang akan diambil.
  • max_combined_length (int, opsional, default 300) — Panjang maksimum input kontekstual yang dikembalikan oleh __call__().
  • retrieval_vector_size (int, opsional, default 768) — Dimensi dari embedding dokumen yang diindeks oleh RagRetriever.
  • retrieval_batch_size (int, opsional, default 8) — Ukuran batch retrieval, didefinisikan sebagai jumlah query yang dikirim secara bersamaan ke indeks faiss yang dikapsulasi oleh RagRetriever.
  • dataset (str, opsional, default "wiki_dpr") — Identifikasi dataset dari dataset terindeks di HuggingFace Datasets (daftar semua dataset dan id yang tersedia menggunakan datasets.list_datasets()).
  • dataset_split (str, opsional, default "train") — Split mana dari dataset yang akan dimuat.
  • index_name (str, opsional, default "compressed") — Nama indeks dari indeks yang terkait dengan dataset. Anda dapat memilih antara "legacy", "exact", dan "compressed".
  • index_path (str, opsional) — Path ke indeks faiss yang telah diserialisasi di disk.
  • passages_path (str, opsional) — Path ke teks passages yang kompatibel dengan indeks faiss. Wajib diisi jika menggunakan LegacyIndex
  • use_dummy_dataset (bool, opsional, default False) — Apakah akan memuat varian “dummy” dari dataset yang ditentukan oleh dataset.
  • reduce_loss (bool, opsional, default False) — Apakah akan mengurangi loss NLL menggunakan operasi torch.Tensor.sum.
  • label_smoothing (float, opsional, default 0.0) — Hanya relevan jika return_loss diatur ke True. Mengontrol nilai parameter epsilon untuk label smoothing dalam perhitungan loss. Jika diatur ke 0, label smoothing tidak dilakukan.
  • do_deduplication (bool, opsional, default True) — Apakah akan melakukan deduplikasi generasi dari dokumen konteks yang berbeda untuk suatu input. Harus disetel ke False jika digunakan saat pelatihan dengan backend terdistribusi.
  • exclude_bos_score (bool, opsional, default False) — Apakah token BOS akan diabaikan saat menghitung loss.
  • do_marginalize (bool, opsional, default False) — Jika True, logits akan dimarginalkan di atas semua dokumen dengan menggunakan torch.nn.functional.log_softmax.
  • output_retrieved (bool, opsional, default False) — Jika diatur ke True, retrieved_doc_embeds, retrieved_doc_ids, context_input_ids dan context_attention_mask akan dikembalikan. Lihat tensor yang dikembalikan untuk detail lebih lanjut.
  • use_cache (bool, opsional, defaultnya True) — Apakah model harus mengembalikan perhatian kunci/nilai terakhir (tidak digunakan oleh semua model). Hanya relevan jika config.is_decoder=True atau ketika model adalah model generatif yang hanya decoder.
  • dataset_revision (str, opsional,) — Revisi (commit hash, tag, atau branch) dari dataset Hugging Face yang digunakan untuk retrieval.

Ini adalah kelas konfigurasi untuk menyimpan konfigurasi dari RagModel. Kelas ini digunakan untuk membuat instans model Rag berdasarkan argumen yang ditentukan, yang mendefinisikan arsitektur model. Membuat instans konfigurasi dengan nilai bawaan akan menghasilkan konfigurasi yang serupa dengan konfigurasi

Objek konfigurasi mewarisi dari PreTrainedConfig dan dapat digunakan untuk mengontrol output model. Baca dokumentasi dari PreTrainedConfig untuk informasi lebih lanjut.

from_question_encoder_generator_configs

< >

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

Mengembalikan

EncoderDecoderConfig

Instans dari objek konfigurasi

Instansiasi EncoderDecoderConfig (atau kelas turunan) dari konfigurasi model encoder yang telah dilatih sebelumnya dan konfigurasi model decoder.

RagTokenizer

kelas transformers.RagTokenizer

< >

( question_encodergenerator )

Output khusus Rag

kelas transformers.models.rag.modeling_rag.RetrievAugLMMarginOutput

< >

( loss: typing.Optional[torch.FloatTensor] = Nonelogits: typing.Optional[torch.FloatTensor] = Nonedoc_scores: typing.Optional[torch.FloatTensor] = Nonepast_key_values: transformers.cache_utils.Cache | None = Noneretrieved_doc_embeds: typing.Optional[torch.FloatTensor] = 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.FloatTensor] = Nonequestion_enc_hidden_states: tuple[torch.FloatTensor, ...] | None = Nonequestion_enc_attentions: tuple[torch.FloatTensor, ...] | None = Nonegenerator_enc_last_hidden_state: typing.Optional[torch.FloatTensor] = Nonegenerator_enc_hidden_states: tuple[torch.FloatTensor, ...] | None = Nonegenerator_enc_attentions: tuple[torch.FloatTensor, ...] | None = Nonegenerator_dec_hidden_states: tuple[torch.FloatTensor, ...] | None = Nonegenerator_dec_attentions: tuple[torch.FloatTensor, ...] | None = Nonegenerator_cross_attentions: tuple[torch.FloatTensor, ...] | None = None )

Parameter

  • loss (torch.FloatTensor dengan bentuk (1,), opsional, dikembalikan saat labels disediakan) — Loss pemodelan bahasa.
  • logits (torch.FloatTensor dengan bentuk (batch_size, sequence_length, config.vocab_size)) — Skor prediksi dari kepala pemodelan bahasa. Skor tersebut mungkin telah dimarginalkan di atas semua dokumen untuk setiap token kosakata.
  • doc_scores (torch.FloatTensor dengan bentuk (batch_size, config.n_docs)) — Skor antara setiap embedding dokumen yang diambil (lihat retrieved_doc_embeds) dan question_encoder_last_hidden_state.
  • past_key_values (Cache, opsional, dikembalikan saat use_cache=True dilewatkan atau saat config.use_cache=True) — Ini adalah Cache instance. Untuk detail lebih lanjut, lihat panduan kv cache.

    Mengandung hidden-states (key dan values di blok attention) yang telah dihitung sebelumnya dari decoder, yang dapat digunakan (lihat input past_key_values) untuk mempercepat decoding berurutan.

  • retrieved_doc_embeds (torch.FloatTensor dengan bentuk (batch_size, config.n_docs, hidden_size), opsional, dikembalikan ketika output_retrieved=True) — Dokumen ter-embed yang diambil oleh retriever. Digunakan bersama question_encoder_last_hidden_state untuk menghitung doc_scores.
  • retrieved_doc_ids (torch.LongTensor dengan bentuk (batch_size, config.n_docs), opsional, dikembalikan ketika output_retrieved=True) — Indeks dari dokumen tertanam yang diambil oleh retriever.
  • context_input_ids (torch.LongTensor dengan bentuk (batch_size * config.n_docs, config.max_combined_length), opsional, dikembalikan ketika output_retrieved=True) — Input ids yang telah diproses ulang oleh retriever dari dokumen yang diambil dan input_ids encoder pertanyaan.
  • context_attention_mask (torch.LongTensor dengan bentuk (batch_size * config.n_docs, config.max_combined_length), opsional, dikembalikan ketika output_retrieved=True) — Attention mask yang diproses ulang dari dokumen yang diambil dan input_ids dari question encoder oleh retriever.
  • question_encoder_last_hidden_state (torch.FloatTensor dengan bentuk (batch_size, sequence_length, hidden_size), opsional) — Urutan hidden state pada keluaran lapisan terakhir dari question encoder, yaitu pooled output dari model.
  • question_enc_hidden_states (tuple(torch.FloatTensor), opsional, dikembalikan saat output_hidden_states=True dilewatkan atau saat config.output_hidden_states=True) — Tuple dari torch.FloatTensor ((satu untuk output embeddings dan satu untuk output setiap layer) dengan bentuk (batch_size, sequence_length, hidden_size).

    Hidden states dari question encoder pada output setiap layer ditambah output embedding awal.

  • question_enc_attentions (tuple(torch.FloatTensor), opsional, dikembalikan saat output_attentions=True dilewatkan atau saat config.output_attentions=True) — Tuple dari torch.FloatTensor ((satu untuk setiap layer) dengan bentuk (batch_size, num_heads, sequence_length, sequence_length).

    Bobot perhatian dari encoder pertanyaan, setelah softmax perhatian, yang digunakan untuk menghitung rata-rata berbobot di kepala self-attention.

  • generator_enc_last_hidden_state (torch.FloatTensor dengan bentuk (batch_size, sequence_length, hidden_size), opsional) — Urutan hidden-states pada keluaran lapisan terakhir dari generator encoder model.
  • generator_enc_hidden_states (tuple(torch.FloatTensor), opsional, dikembalikan saat output_hidden_states=True dilewatkan atau saat config.output_hidden_states=True) — Tuple dari torch.FloatTensor ((satu untuk output embeddings dan satu untuk output setiap layer) dengan bentuk (batch_size, sequence_length, hidden_size).

    Hidden states dari encoder generator pada output setiap layer ditambah output embedding awal.

  • generator_enc_attentions (tuple(torch.FloatTensor), opsional, dikembalikan ketika output_attentions=True dilewatkan atau ketika config.output_attentions=True) — Tuple dari torch.FloatTensor ((satu untuk setiap layer) dengan bentuk (batch_size, num_heads, sequence_length, sequence_length).

    Bobot perhatian dari encoder generator, setelah softmax perhatian, yang digunakan untuk menghitung rata-rata berbobot di kepala self-attention.

  • generator_dec_hidden_states (tuple(torch.FloatTensor), opsional, dikembalikan ketika output_hidden_states=True dilewatkan atau ketika config.output_hidden_states=True) — Tuple dari torch.FloatTensor (satu untuk output embeddings dan satu untuk output setiap layer) dengan bentuk (batch_size, sequence_length, hidden_size).

    Hidden states dari generator decoder pada output setiap layer ditambah output embedding awal.

  • generator_dec_attentions (tuple(torch.FloatTensor), opsional, dikembalikan saat output_attentions=True dilewatkan atau saat config.output_attentions=True) — Tuple dari torch.FloatTensor ((satu untuk setiap layer) dengan bentuk (batch_size, num_heads, sequence_length, sequence_length).

    Bobot perhatian dari decoder generator, setelah softmax perhatian, yang digunakan untuk menghitung rata-rata berbobot di kepala self-attention.

  • generator_cross_attentions (tuple(torch.FloatTensor), opsional, dikembalikan saat output_attentions=True dilewatkan atau saat config.output_attentions=True) — Tuple dari torch.FloatTensor ((satu untuk setiap layer) dengan bentuk (batch_size, num_heads, sequence_length, sequence_length).

    Bobot cross-attention dari decoder generator, setelah softmax attention, yang digunakan untuk menghitung rata-rata berbobot di kepala cross-attention.

Kelas dasar untuk keluaran model marginal yang diperkaya oleh retriever.

kelas transformers.models.rag.modeling_rag.RetrievAugLMOutput

< >

( logits: typing.Optional[torch.FloatTensor] = Nonedoc_scores: typing.Optional[torch.FloatTensor] = Nonepast_key_values: transformers.cache_utils.Cache | None = Noneretrieved_doc_embeds: typing.Optional[torch.FloatTensor] = 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.FloatTensor] = Nonequestion_enc_hidden_states: tuple[torch.FloatTensor, ...] | None = Nonequestion_enc_attentions: tuple[torch.FloatTensor, ...] | None = Nonegenerator_enc_last_hidden_state: typing.Optional[torch.FloatTensor] = Nonegenerator_enc_hidden_states: tuple[torch.FloatTensor, ...] | None = Nonegenerator_enc_attentions: tuple[torch.FloatTensor, ...] | None = Nonegenerator_dec_hidden_states: tuple[torch.FloatTensor, ...] | None = Nonegenerator_dec_attentions: tuple[torch.FloatTensor, ...] | None = Nonegenerator_cross_attentions: tuple[torch.FloatTensor, ...] | None = None )

Parameter

  • logits (torch.FloatTensor dengan bentuk (batch_size, sequence_length, config.vocab_size)) — Skor prediksi dari kepala pemodelan bahasa. Skor tersebut mungkin telah dimarginalkan di atas semua dokumen untuk setiap token kosakata.
  • doc_scores (torch.FloatTensor dengan bentuk (batch_size, config.n_docs)) — Skor antara setiap embedding dokumen yang diambil (lihat retrieved_doc_embeds) dan question_encoder_last_hidden_state.
  • past_key_values (Cache, opsional, dikembalikan saat use_cache=True dilewatkan atau saat config.use_cache=True) — Ini adalah Cache instance. Untuk detail lebih lanjut, lihat panduan kv cache.

    Mengandung hidden-states (key dan values di blok attention) yang telah dihitung sebelumnya dari decoder, yang dapat digunakan (lihat input past_key_values) untuk mempercepat decoding berurutan.

  • retrieved_doc_embeds (torch.FloatTensor dengan bentuk (batch_size, config.n_docs, hidden_size), opsional, dikembalikan ketika output_retrieved=True) — Dokumen ter-embed yang diambil oleh retriever. Digunakan bersama question_encoder_last_hidden_state untuk menghitung doc_scores.
  • retrieved_doc_ids (torch.LongTensor dengan bentuk (batch_size, config.n_docs), opsional, dikembalikan ketika output_retrieved=True) — Indeks dari dokumen tertanam yang diambil oleh retriever.
  • context_input_ids (torch.LongTensor dengan bentuk (batch_size * config.n_docs, config.max_combined_length), opsional, dikembalikan ketika output_retrieved=True) — Input ids yang telah diproses ulang oleh retriever dari dokumen yang diambil dan input_ids encoder pertanyaan.
  • context_attention_mask (torch.LongTensor dengan bentuk (batch_size * config.n_docs, config.max_combined_length), opsional, dikembalikan ketika output_retrieved=True) — Attention mask yang diproses ulang dari dokumen yang diambil dan input_ids dari question encoder oleh retriever.
  • question_encoder_last_hidden_state (torch.FloatTensor dengan bentuk (batch_size, sequence_length, hidden_size), opsional) — Urutan hidden state pada keluaran lapisan terakhir dari question encoder, yaitu pooled output dari model.
  • question_enc_hidden_states (tuple(torch.FloatTensor), opsional, dikembalikan saat output_hidden_states=True dilewatkan atau saat config.output_hidden_states=True) — Tuple dari torch.FloatTensor ((satu untuk output embeddings dan satu untuk output setiap layer) dengan bentuk (batch_size, sequence_length, hidden_size).

    Hidden states dari question encoder pada output setiap layer ditambah output embedding awal.

  • question_enc_attentions (tuple(torch.FloatTensor), opsional, dikembalikan saat output_attentions=True dilewatkan atau saat config.output_attentions=True) — Tuple dari torch.FloatTensor ((satu untuk setiap layer) dengan bentuk (batch_size, num_heads, sequence_length, sequence_length).

    Bobot perhatian dari encoder pertanyaan, setelah softmax perhatian, yang digunakan untuk menghitung rata-rata berbobot di kepala self-attention.

  • generator_enc_last_hidden_state (torch.FloatTensor dengan bentuk (batch_size, sequence_length, hidden_size), opsional) — Urutan hidden-states pada keluaran lapisan terakhir dari generator encoder model.
  • generator_enc_hidden_states (tuple(torch.FloatTensor), opsional, dikembalikan saat output_hidden_states=True dilewatkan atau saat config.output_hidden_states=True) — Tuple dari torch.FloatTensor ((satu untuk output embeddings dan satu untuk output setiap layer) dengan bentuk (batch_size, sequence_length, hidden_size).

    Hidden states dari encoder generator pada output setiap layer ditambah output embedding awal.

  • generator_enc_attentions (tuple(torch.FloatTensor), opsional, dikembalikan ketika output_attentions=True dilewatkan atau ketika config.output_attentions=True) — Tuple dari torch.FloatTensor ((satu untuk setiap layer) dengan bentuk (batch_size, num_heads, sequence_length, sequence_length).

    Bobot perhatian dari encoder generator, setelah softmax perhatian, yang digunakan untuk menghitung rata-rata berbobot di kepala self-attention.

  • generator_dec_hidden_states (tuple(torch.FloatTensor), opsional, dikembalikan ketika output_hidden_states=True dilewatkan atau ketika config.output_hidden_states=True) — Tuple dari torch.FloatTensor (satu untuk output embeddings dan satu untuk output setiap layer) dengan bentuk (batch_size, sequence_length, hidden_size).

    Hidden states dari generator decoder pada output setiap layer ditambah output embedding awal.

  • generator_dec_attentions (tuple(torch.FloatTensor), opsional, dikembalikan saat output_attentions=True dilewatkan atau saat config.output_attentions=True) — Tuple dari torch.FloatTensor ((satu untuk setiap layer) dengan bentuk (batch_size, num_heads, sequence_length, sequence_length).

    Bobot perhatian dari decoder generator, setelah softmax perhatian, yang digunakan untuk menghitung rata-rata berbobot di kepala self-attention.

  • generator_cross_attentions (tuple(torch.FloatTensor), opsional, dikembalikan saat output_attentions=True dilewatkan atau saat config.output_attentions=True) — Tuple dari torch.FloatTensor ((satu untuk setiap layer) dengan bentuk (batch_size, num_heads, sequence_length, sequence_length).

    Bobot cross-attention dari decoder generator, setelah softmax attention, yang digunakan untuk menghitung rata-rata berbobot di kepala cross-attention.

RagRetriever

kelas transformers.RagRetriever

< >

( configquestion_encoder_tokenizergenerator_tokenizerindex = Noneinit_retrieval = True )

Parameter

  • config (RagConfig) — Konfigurasi model RAG yang digunakan bersama Retriever ini. Berisi parameter yang menunjukkan Index mana yang akan dibangun. Anda dapat memuat dataset kustom Anda sendiri dengan config.index_name="custom" atau menggunakan dataset kanonik (default) dari pustaka datasets, misalnya dengan config.index_name="wiki_dpr".
  • question_encoder_tokenizer (PreTrainedTokenizer) — Tokenizer yang digunakan untuk melakukan tokenisasi pada pertanyaan. Tokenizer ini digunakan untuk mendekode pertanyaan dan kemudian menggunakan generator_tokenizer.
  • generator_tokenizer (PreTrainedTokenizer) — Tokenizer yang digunakan untuk bagian generator dari RagModel.
  • index (Index, opsional, defaultnya adalah yang didefinisikan oleh konfigurasi) — Jika ditentukan, gunakan indeks ini alih-alih yang dibangun menggunakan konfigurasi

Retriever yang digunakan untuk mengambil dokumen dari kueri vektor. Retriever ini mengambil embedding dokumen beserta isi dokumennya, lalu memformatnya agar dapat digunakan dengan RagModel.

Contoh:

>>> # 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

< >

( )

Fungsi inisialisasi Retriever. Memuat indeks ke dalam memori.

postprocess_docs

< >

( docsinput_stringsprefixn_docsreturn_tensors = None ) → tuple(tensors)

Parameter

  • docs (dict) — Dokumen yang diambil.
  • input_strings (str) — String input yang didekodekan oleh preprocess_query.
  • prefix (str) — Prefix yang ditambahkan di awal setiap input, biasanya digunakan dengan model berbasis T5.

Mengembalikan

tuple(tensors)

sebuah tuple yang terdiri dari dua elemen: input_ids yang terkontekstualisasi dan attention_mask yang kompatibel.

Memproses ulang docs yang diambil dan menggabungkannya dengan input_strings.

retrieve

< >

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

Parameter

  • question_hidden_states (np.ndarray dengan bentuk (batch_size, vector_size)) — Sebuah batch vektor kueri untuk digunakan dalam pengambilan.
  • n_docs (int) — Jumlah dokumen yang diambil per kueri.

Mengembalikan

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

Tuple dengan objek-objek berikut:

  • retrieved_doc_embeds (np.ndarray dengan bentuk (batch_size, n_docs, dim)) — Embedding retrieval dari dokumen yang diambil per query.
  • doc_ids (np.ndarray dengan bentuk (batch_size, n_docs)) — ID dari dokumen dalam indeks
  • doc_dicts (list[dict]): Contoh retrieved_doc_embeds per kueri.

Mengambil dokumen untuk question_hidden_states yang ditentukan.

RagModel

kelas 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 )

Parameter

  • config (PreTrainedConfig, opsional) — Kelas konfigurasi model dengan semua parameter model. Inisialisasi dengan file konfigurasi tidak memuat bobot yang terkait dengan model, hanya konfigurasinya. Lihat metode from_pretrained() untuk memuat bobot model.
  • question_encoder (PreTrainedModel, opsional) — Model yang bertanggung jawab untuk mengodekan pertanyaan menjadi hidden states untuk retrieval.
  • generator (PreTrainedModel, opsional) — Model yang bertanggung jawab untuk menghasilkan teks berdasarkan dokumen yang diambil.
  • retriever (RagRetriever, opsional) — Komponen yang bertanggung jawab untuk mengambil dokumen dari basis pengetahuan berdasarkan pertanyaan yang telah dienkod.

Model Rag polos yang menghasilkan hidden-states mentah tanpa head spesifik di atasnya.

Model ini mewarisi dari PreTrainedModel. Periksa dokumentasi kelas induk untuk metode generik yang diimplementasikan oleh pustaka untuk semua model (seperti mengunduh atau menyimpan, mengubah ukuran embedding input, memangkas kepala, dll.)

Model ini juga merupakan subclass dari torch.nn.Module PyTorch. Gunakan sebagai PyTorch Module biasa dan merujuk ke dokumentasi PyTorch untuk semua hal yang berkaitan dengan penggunaan dan perilaku umum.

forward

< >

( input_ids: typing.Optional[torch.LongTensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Noneencoder_outputs: tuple[tuple[torch.FloatTensor]] | 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.FloatTensor] = 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.FloatTensor)

Parameter

  • input_ids (torch.LongTensor dengan bentuk (batch_size, sequence_length)) — Indeks token urutan input dalam kosakata. RagConfig, yang digunakan untuk menginisialisasi model, menentukan generator mana yang akan digunakan, dan juga menentukan tokenizer generator yang kompatibel. Gunakan kelas tokenizer tersebut untuk memperoleh indeksnya.

    Apa itu input ID?

  • attention_mask (torch.Tensor dengan bentuk (batch_size, sequence_length), opsional) — Mask untuk menghindari eksekusi attention pada indeks token padding. Nilai mask dipilih dari [0, 1]:
    • 1 untuk token yang tidak dimasker,
    • 0 untuk token yang dimasker.

    Apa itu attention mask?

  • encoder_outputs (tuple(tuple(torch.FloatTensor), opsional) — Tuple terdiri dari (generator_enc_last_hidden_state, opsional: generator_enc_hidden_states, opsional: generator_enc_attentions). generator_enc_last_hidden_state dengan bentuk (batch_size, n_docs * sequence_length, hidden_size) adalah urutan hidden-state pada keluaran lapisan terakhir dari encoder generator.

    Digunakan oleh model (RagModel) selama proses decoding.

  • decoder_input_ids (torch.LongTensor dengan bentuk (batch_size, target_sequence_length), opsional) — Disediakan untuk tugas generasi. None secara default, bangun sesuai instruksi untuk model generator yang Anda gunakan dengan instance RAG Anda.
  • decoder_input_ids (torch.LongTensor dengan bentuk (batch_size, target_sequence_length), opsional) — Indeks token dari urutan input decoder dalam kosakata. Indeks dapat diperoleh menggunakan AutoTokenizer. Lihat PreTrainedTokenizer.encode() dan PreTrainedTokenizer.call() untuk detailnya. Apa itu decoder input IDs?

    Indeks dapat diperoleh menggunakan AutoTokenizer. Lihat PreTrainedTokenizer.encode() dan PreTrainedTokenizer.call() untuk detailnya.

    Apa itu ID input decoder?

  • decoder_attention_mask (torch.BoolTensor dengan bentuk (batch_size, target_sequence_length), opsional) — Perilaku default: menghasilkan tensor yang mengabaikan token pad di decoder_input_ids. Mask kausal juga akan digunakan secara default.
  • past_key_values (~cache_utils.Cache, opsional) — Hidden-states yang sudah dihitung sebelumnya (key dan values di blok self-attention dan di blok cross-attention) yang dapat digunakan untuk mempercepat decoding berurutan. Ini biasanya terdiri dari past_key_values yang dikembalikan oleh model pada tahap decoding sebelumnya, ketika use_cache=True atau config.use_cache=True.

    Hanya instance Cache yang diizinkan sebagai input, lihat panduan kv cache kami. Jika tidak ada past_key_values yang diteruskan, DynamicCache akan diinisialisasi secara default.

    Model akan menghasilkan format cache yang sama dengan yang diberikan sebagai input.

    Jika past_key_values digunakan, pengguna diharapkan hanya memasukkan input_ids yang belum diproses (yang tidak memiliki state past key value yang diberikan ke model ini) dengan bentuk (batch_size, unprocessed_length) alih-alih semua input_ids dengan bentuk (batch_size, sequence_length).

  • doc_scores (torch.FloatTensor dengan bentuk (batch_size, config.n_docs)) — Skor antara setiap embedding dokumen yang diambil (lihat retrieved_doc_embeds) dan question_encoder_last_hidden_state. Jika model tidak diinisialisasi dengan retriever, doc_scores harus disediakan untuk forward pass. doc_scores dapat dihitung melalui question_encoder_last_hidden_state dan retrieved_doc_embeds, lihat contoh untuk informasi lebih lanjut.
  • context_input_ids (torch.LongTensor dengan bentuk (batch_size * config.n_docs, config.max_combined_length), opsional, dikembalikan ketika output_retrieved=True) — ID input yang diproses pascapemrosesan dari dokumen yang diambil dan input_ids encoder pertanyaan oleh retriever. Jika model tidak diinisialisasi dengan retriever, `context_input_ids harus disediakan untuk forward pass. context_input_ids dikembalikan oleh __call__().
  • context_attention_mask (torch.LongTensor dengan bentuk (batch_size * config.n_docs, config.max_combined_length),opsional, dikembalikan saat output_retrieved=True) — Attention mask yang diproses ulang dari dokumen yang diambil dan input_ids encoder pertanyaan oleh retriever. Jika model tidak diinisialisasi dengan retriever, maka context_attention_mask harus disediakan untuk forward pass. context_attention_mask dikembalikan oleh __call__().
  • use_cache (bool, opsional) — Jika diset ke True, state kunci-nilai past_key_values akan dikembalikan dan dapat digunakan untuk mempercepat decoding (lihat past_key_values).
  • output_attentions (bool, opsional) — Apakah akan mengembalikan tensor attentions dari semua lapisan attention. Lihat attentions di bawah tensor yang dikembalikan untuk detail lebih lanjut.
  • output_hidden_states (bool, opsional) — Apakah akan mengembalikan hidden states dari semua lapisan. Lihat hidden_states di bawah tensor yang dikembalikan untuk detail lebih lanjut.
  • output_retrieved (bool, opsional) — Apakah akan mengembalikan retrieved_doc_embeds, retrieved_doc_ids, context_input_ids dan context_attention_mask. Lihat tensor yang dikembalikan untuk detail lebih lanjut.
  • n_docs (int, opsional) — Jumlah dokumen yang akan diambil.

Mengembalikan

RetrievAugLMOutput atau tuple(torch.FloatTensor)

A RetrievAugLMOutput atau tuple dari torch.FloatTensor (jika return_dict=False diteruskan atau ketika config.return_dict=False) yang terdiri dari berbagai elemen tergantung pada konfigurasi (RagConfig) dan input.

Metode forward dari RagModel menimpa metode khusus __call__.

Meskipun resep untuk forward pass perlu didefinisikan di dalam fungsi ini, sebaiknya panggil instance Module setelahnya alih-alih fungsi ini, karena yang pertama menangani langkah-langkah pra-pemrosesan dan pasca-pemrosesan, sedangkan yang kedua mengabaikannya secara diam-diam.

  • logits (torch.FloatTensor dengan bentuk (batch_size, sequence_length, config.vocab_size)) — Skor prediksi dari kepala pemodelan bahasa. Skor tersebut mungkin telah dimarginalkan di atas semua dokumen untuk setiap token kosakata.

  • doc_scores (torch.FloatTensor dengan bentuk (batch_size, config.n_docs)) — Skor antara setiap embedding dokumen yang diambil (lihat retrieved_doc_embeds) dan question_encoder_last_hidden_state.

  • past_key_values (Cache, opsional, dikembalikan saat use_cache=True dilewatkan atau saat config.use_cache=True) — Ini adalah instance Cache. Untuk detail lebih lanjut, lihat panduan kv cache kami.

    Mengandung hidden-states (key dan values di blok attention) yang telah dihitung sebelumnya dari decoder, yang dapat digunakan (lihat input past_key_values) untuk mempercepat decoding berurutan.

  • retrieved_doc_embeds (torch.FloatTensor dengan bentuk (batch_size, config.n_docs, hidden_size), opsional, dikembalikan saat output_retrieved=True) — Dokumen tertanam yang diambil oleh retriever. Digunakan bersama question_encoder_last_hidden_state untuk menghitung doc_scores.

  • retrieved_doc_ids (torch.LongTensor dengan bentuk (batch_size, config.n_docs), opsional, dikembalikan ketika output_retrieved=True) — Indeks dari dokumen tertanam yang diambil oleh retriever.

  • context_input_ids (torch.LongTensor dengan bentuk (batch_size * config.n_docs, config.max_combined_length), opsional, dikembalikan ketika output_retrieved=True) — Input ids yang telah diproses ulang oleh retriever dari dokumen yang diambil dan input_ids encoder pertanyaan.

  • context_attention_mask (torch.LongTensor dengan bentuk (batch_size * config.n_docs, config.max_combined_length), opsional, dikembalikan ketika output_retrieved=True) — Attention mask yang diproses ulang dari dokumen yang diambil dan input_ids encoder pertanyaan oleh retriever.

  • question_encoder_last_hidden_state (torch.FloatTensor dengan bentuk (batch_size, sequence_length, hidden_size), opsional) — Urutan hidden state pada keluaran lapisan terakhir dari question encoder, yaitu pooled output dari model.

  • question_enc_hidden_states (tuple(torch.FloatTensor), opsional, dikembalikan ketika output_hidden_states=True dilewatkan atau ketika config.output_hidden_states=True) — Tuple dari torch.FloatTensor (satu untuk output embeddings dan satu untuk output setiap layer) dengan bentuk (batch_size, sequence_length, hidden_size).

    Hidden states dari question encoder pada output setiap layer ditambah output embedding awal.

  • question_enc_attentions (tuple(torch.FloatTensor), opsional, dikembalikan ketika output_attentions=True dilewatkan atau ketika config.output_attentions=True) — Tuple dari torch.FloatTensor (satu untuk setiap lapisan) dengan bentuk (batch_size, num_heads, sequence_length, sequence_length).

    Bobot perhatian dari encoder pertanyaan, setelah softmax perhatian, yang digunakan untuk menghitung rata-rata berbobot di kepala self-attention.

  • generator_enc_last_hidden_state (torch.FloatTensor dengan bentuk (batch_size, sequence_length, hidden_size), opsional) — Urutan hidden-state pada keluaran lapisan terakhir dari encoder generator model.

  • generator_enc_hidden_states (tuple(torch.FloatTensor), opsional, dikembalikan ketika output_hidden_states=True dilewatkan atau ketika config.output_hidden_states=True) — Tuple dari torch.FloatTensor (satu untuk output embeddings dan satu untuk output setiap layer) dengan bentuk (batch_size, sequence_length, hidden_size).

    Hidden states dari encoder generator pada output setiap layer ditambah output embedding awal.

  • generator_enc_attentions (tuple(torch.FloatTensor), opsional, dikembalikan ketika output_attentions=True dilewatkan atau ketika config.output_attentions=True) — Tuple dari torch.FloatTensor (satu untuk setiap layer) dengan bentuk (batch_size, num_heads, sequence_length, sequence_length).

    Bobot perhatian dari encoder generator, setelah softmax perhatian, yang digunakan untuk menghitung rata-rata berbobot di kepala self-attention.

  • generator_dec_hidden_states (tuple(torch.FloatTensor), opsional, dikembalikan ketika output_hidden_states=True dilewatkan atau ketika config.output_hidden_states=True) — Tuple dari torch.FloatTensor (satu untuk output dari embeddings dan satu untuk output dari setiap layer) dengan bentuk (batch_size, sequence_length, hidden_size).

    Hidden states dari generator decoder pada output setiap layer ditambah output embedding awal.

  • generator_dec_attentions (tuple(torch.FloatTensor), opsional, dikembalikan ketika output_attentions=True dilewatkan atau ketika config.output_attentions=True) — Tuple dari torch.FloatTensor (satu untuk setiap layer) dengan bentuk (batch_size, num_heads, sequence_length, sequence_length).

    Bobot perhatian dari decoder generator, setelah softmax perhatian, yang digunakan untuk menghitung rata-rata berbobot di kepala self-attention.

  • generator_cross_attentions (tuple(torch.FloatTensor), opsional, dikembalikan ketika output_attentions=True dilewatkan atau ketika config.output_attentions=True) — Tuple dari torch.FloatTensor (satu untuk setiap layer) dengan bentuk (batch_size, num_heads, sequence_length, sequence_length).

    Bobot cross-attention dari decoder generator, setelah softmax attention, yang digunakan untuk menghitung rata-rata berbobot di kepala cross-attention.

Contoh:

>>> 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

kelas 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 )

Parameter

  • config (PreTrainedConfig, opsional) — Kelas konfigurasi model dengan semua parameter model. Inisialisasi dengan file konfigurasi tidak memuat bobot yang terkait dengan model, hanya konfigurasinya. Lihat metode from_pretrained() untuk memuat bobot model.
  • question_encoder (PreTrainedModel, opsional) — Model yang bertanggung jawab untuk mengodekan pertanyaan menjadi hidden states untuk retrieval.
  • generator (PreTrainedModel, opsional) — Model yang bertanggung jawab untuk menghasilkan teks berdasarkan dokumen yang diambil.
  • retriever (RagRetriever, opsional) — Komponen yang bertanggung jawab untuk mengambil dokumen dari basis pengetahuan berdasarkan pertanyaan yang telah dienkod.

Implementasi model RAG-sequence. Model ini melakukan marginalisasi spesifik RAG-sequence pada forward pass.

Model ini mewarisi dari PreTrainedModel. Periksa dokumentasi kelas induk untuk metode generik yang diimplementasikan oleh pustaka untuk semua model (seperti mengunduh atau menyimpan, mengubah ukuran embedding input, memangkas kepala, dll.)

Model ini juga merupakan subclass dari torch.nn.Module PyTorch. Gunakan sebagai PyTorch Module biasa dan merujuk ke dokumentasi PyTorch untuk semua hal yang berkaitan dengan penggunaan dan perilaku umum.

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.FloatTensor] = 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.FloatTensor)

Parameter

  • input_ids (torch.LongTensor dengan bentuk (batch_size, sequence_length)) — Indeks token urutan input dalam kosakata. RagConfig, yang digunakan untuk menginisialisasi model, menentukan generator mana yang akan digunakan, dan juga menentukan tokenizer generator yang kompatibel. Gunakan kelas tokenizer tersebut untuk memperoleh indeksnya.

    Apa itu input ID?

  • attention_mask (torch.Tensor dengan bentuk (batch_size, sequence_length), opsional) — Mask untuk menghindari eksekusi attention pada indeks token padding. Nilai mask dipilih dari [0, 1]:
    • 1 untuk token yang tidak dimasker,
    • 0 untuk token yang dimasker.

    Apa itu attention mask?

  • encoder_outputs (tuple(tuple(torch.FloatTensor), opsional) — Tuple terdiri dari (generator_enc_last_hidden_state, opsional: generator_enc_hidden_states, opsional: generator_enc_attentions). generator_enc_last_hidden_state dengan bentuk (batch_size, n_docs * sequence_length, hidden_size) adalah urutan hidden-state pada keluaran lapisan terakhir dari encoder generator.

    Digunakan oleh model (RagModel) selama proses decoding.

  • decoder_input_ids (torch.LongTensor dengan bentuk (batch_size, target_sequence_length), opsional) — Disediakan untuk tugas generasi. None secara default, bangun sesuai instruksi untuk model generator yang Anda gunakan dengan instance RAG Anda.
  • decoder_input_ids (torch.LongTensor dengan bentuk (batch_size, target_sequence_length), opsional) — Indeks token dari urutan input decoder dalam kosakata. Indeks dapat diperoleh menggunakan AutoTokenizer. Lihat PreTrainedTokenizer.encode() dan PreTrainedTokenizer.call() untuk detailnya. Apa itu decoder input IDs?

    Indeks dapat diperoleh menggunakan AutoTokenizer. Lihat PreTrainedTokenizer.encode() dan PreTrainedTokenizer.call() untuk detailnya.

    Apa itu ID input decoder?

  • decoder_attention_mask (torch.BoolTensor dengan bentuk (batch_size, target_sequence_length), opsional) — Perilaku default: menghasilkan tensor yang mengabaikan token pad di decoder_input_ids. Mask kausal juga akan digunakan secara default.
  • past_key_values (~cache_utils.Cache, opsional) — Hidden-states yang sudah dihitung sebelumnya (key dan values di blok self-attention dan di blok cross-attention) yang dapat digunakan untuk mempercepat decoding berurutan. Ini biasanya terdiri dari past_key_values yang dikembalikan oleh model pada tahap decoding sebelumnya, ketika use_cache=True atau config.use_cache=True.

    Hanya instance Cache yang diizinkan sebagai input, lihat panduan kv cache kami. Jika tidak ada past_key_values yang diteruskan, DynamicCache akan diinisialisasi secara default.

    Model akan menghasilkan format cache yang sama dengan yang diberikan sebagai input.

    Jika past_key_values digunakan, pengguna diharapkan hanya memasukkan input_ids yang belum diproses (yang tidak memiliki state past key value yang diberikan ke model ini) dengan bentuk (batch_size, unprocessed_length) alih-alih semua input_ids dengan bentuk (batch_size, sequence_length).

  • context_input_ids (torch.LongTensor dengan bentuk (batch_size * config.n_docs, config.max_combined_length), opsional, dikembalikan ketika output_retrieved=True) — ID input yang diproses pascapemrosesan dari dokumen yang diambil dan input_ids encoder pertanyaan oleh retriever. Jika model tidak diinisialisasi dengan retriever, `context_input_ids harus disediakan untuk forward pass. context_input_ids dikembalikan oleh __call__().
  • context_attention_mask (torch.LongTensor dengan bentuk (batch_size * config.n_docs, config.max_combined_length),opsional, dikembalikan saat output_retrieved=True) — Attention mask yang diproses ulang dari dokumen yang diambil dan input_ids encoder pertanyaan oleh retriever. Jika model tidak diinisialisasi dengan retriever, maka context_attention_mask harus disediakan untuk forward pass. context_attention_mask dikembalikan oleh __call__().
  • doc_scores (torch.FloatTensor dengan bentuk (batch_size, config.n_docs)) — Skor antara setiap embedding dokumen yang diambil (lihat retrieved_doc_embeds) dan question_encoder_last_hidden_state. Jika model tidak diinisialisasi dengan retriever, doc_scores harus disediakan untuk forward pass. doc_scores dapat dihitung melalui question_encoder_last_hidden_state dan retrieved_doc_embeds, lihat contoh untuk informasi lebih lanjut.
  • use_cache (bool, opsional) — Jika diset ke True, state kunci-nilai past_key_values akan dikembalikan dan dapat digunakan untuk mempercepat decoding (lihat past_key_values).
  • output_attentions (bool, opsional) — Apakah akan mengembalikan tensor attentions dari semua lapisan attention. Lihat attentions di bawah tensor yang dikembalikan untuk detail lebih lanjut.
  • output_hidden_states (bool, opsional) — Apakah akan mengembalikan hidden states dari semua lapisan. Lihat hidden_states di bawah tensor yang dikembalikan untuk detail lebih lanjut.
  • output_retrieved (bool, opsional) — Apakah akan mengembalikan retrieved_doc_embeds, retrieved_doc_ids, context_input_ids dan context_attention_mask. Lihat tensor yang dikembalikan untuk detail lebih lanjut.
  • exclude_bos_score (bool, opsional) — Hanya relevan jika labels diberikan. Jika True, skor token BOS diabaikan saat menghitung loss.
  • reduce_loss (bool, opsional) — Hanya relevan jika labels diberikan. Jika True, kerugian NLL direduksi menggunakan operasi torch.Tensor.sum.
  • labels (torch.LongTensor dengan bentuk (batch_size, sequence_length), opsional) — Label untuk menghitung kerugian pemodelan bahasa yang disamarkan (masked language modeling). Indeks harus berada dalam [0, ..., config.vocab_size] atau -100 (lihat docstring input_ids). Token dengan indeks yang disetel ke -100 diabaikan (disamarkan), kerugian hanya dihitung untuk token dengan label dalam [0, ..., config.vocab_size].
  • n_docs (int, opsional) — Jumlah dokumen yang akan diambil.

Mengembalikan

RetrievAugLMMarginOutput atau tuple(torch.FloatTensor)

A RetrievAugLMMarginOutput atau tuple dari torch.FloatTensor (jika return_dict=False diteruskan atau ketika config.return_dict=False) yang terdiri dari berbagai elemen tergantung pada konfigurasi (RagConfig) dan input.

Metode forward dari RagSequenceForGeneration menimpa metode khusus __call__.

Meskipun resep untuk forward pass perlu didefinisikan di dalam fungsi ini, sebaiknya panggil instance Module setelahnya alih-alih fungsi ini, karena yang pertama menangani langkah-langkah pra-pemrosesan dan pasca-pemrosesan, sedangkan yang kedua mengabaikannya secara diam-diam.

  • loss (torch.FloatTensor dengan bentuk (1,), opsional, dikembalikan saat labels disediakan) — Loss pemodelan bahasa.

  • logits (torch.FloatTensor dengan bentuk (batch_size, sequence_length, config.vocab_size)) — Skor prediksi dari kepala pemodelan bahasa. Skor tersebut mungkin telah dimarginalkan di atas semua dokumen untuk setiap token kosakata.

  • doc_scores (torch.FloatTensor dengan bentuk (batch_size, config.n_docs)) — Skor antara setiap embedding dokumen yang diambil (lihat retrieved_doc_embeds) dan question_encoder_last_hidden_state.

  • past_key_values (Cache, opsional, dikembalikan saat use_cache=True dilewatkan atau saat config.use_cache=True) — Ini adalah instance Cache. Untuk detail lebih lanjut, lihat panduan kv cache kami.

    Mengandung hidden-states (key dan values di blok attention) yang telah dihitung sebelumnya dari decoder, yang dapat digunakan (lihat input past_key_values) untuk mempercepat decoding berurutan.

  • retrieved_doc_embeds (torch.FloatTensor dengan bentuk (batch_size, config.n_docs, hidden_size), opsional, dikembalikan saat output_retrieved=True) — Dokumen tertanam yang diambil oleh retriever. Digunakan bersama question_encoder_last_hidden_state untuk menghitung doc_scores.

  • retrieved_doc_ids (torch.LongTensor dengan bentuk (batch_size, config.n_docs), opsional, dikembalikan ketika output_retrieved=True) — Indeks dari dokumen tertanam yang diambil oleh retriever.

  • context_input_ids (torch.LongTensor dengan bentuk (batch_size * config.n_docs, config.max_combined_length), opsional, dikembalikan ketika output_retrieved=True) — Input ids yang telah diproses ulang oleh retriever dari dokumen yang diambil dan input_ids encoder pertanyaan.

  • context_attention_mask (torch.LongTensor dengan bentuk (batch_size * config.n_docs, config.max_combined_length), opsional, dikembalikan ketika output_retrieved=True) — Attention mask yang diproses ulang dari dokumen yang diambil dan input_ids encoder pertanyaan oleh retriever.

  • question_encoder_last_hidden_state (torch.FloatTensor dengan bentuk (batch_size, sequence_length, hidden_size), opsional) — Urutan hidden state pada keluaran lapisan terakhir dari question encoder, yaitu pooled output dari model.

  • question_enc_hidden_states (tuple(torch.FloatTensor), opsional, dikembalikan ketika output_hidden_states=True dilewatkan atau ketika config.output_hidden_states=True) — Tuple dari torch.FloatTensor (satu untuk output embeddings dan satu untuk output setiap layer) dengan bentuk (batch_size, sequence_length, hidden_size).

    Hidden states dari question encoder pada output setiap layer ditambah output embedding awal.

  • question_enc_attentions (tuple(torch.FloatTensor), opsional, dikembalikan ketika output_attentions=True dilewatkan atau ketika config.output_attentions=True) — Tuple dari torch.FloatTensor (satu untuk setiap lapisan) dengan bentuk (batch_size, num_heads, sequence_length, sequence_length).

    Bobot perhatian dari encoder pertanyaan, setelah softmax perhatian, yang digunakan untuk menghitung rata-rata berbobot di kepala self-attention.

  • generator_enc_last_hidden_state (torch.FloatTensor dengan bentuk (batch_size, sequence_length, hidden_size), opsional) — Urutan hidden-state pada keluaran lapisan terakhir dari encoder generator model.

  • generator_enc_hidden_states (tuple(torch.FloatTensor), opsional, dikembalikan ketika output_hidden_states=True dilewatkan atau ketika config.output_hidden_states=True) — Tuple dari torch.FloatTensor (satu untuk output embeddings dan satu untuk output setiap layer) dengan bentuk (batch_size, sequence_length, hidden_size).

    Hidden states dari encoder generator pada output setiap layer ditambah output embedding awal.

  • generator_enc_attentions (tuple(torch.FloatTensor), opsional, dikembalikan ketika output_attentions=True dilewatkan atau ketika config.output_attentions=True) — Tuple dari torch.FloatTensor (satu untuk setiap layer) dengan bentuk (batch_size, num_heads, sequence_length, sequence_length).

    Bobot perhatian dari encoder generator, setelah softmax perhatian, yang digunakan untuk menghitung rata-rata berbobot di kepala self-attention.

  • generator_dec_hidden_states (tuple(torch.FloatTensor), opsional, dikembalikan ketika output_hidden_states=True dilewatkan atau ketika config.output_hidden_states=True) — Tuple dari torch.FloatTensor (satu untuk output dari embeddings dan satu untuk output dari setiap layer) dengan bentuk (batch_size, sequence_length, hidden_size).

    Hidden states dari generator decoder pada output setiap layer ditambah output embedding awal.

  • generator_dec_attentions (tuple(torch.FloatTensor), opsional, dikembalikan ketika output_attentions=True dilewatkan atau ketika config.output_attentions=True) — Tuple dari torch.FloatTensor (satu untuk setiap layer) dengan bentuk (batch_size, num_heads, sequence_length, sequence_length).

    Bobot perhatian dari decoder generator, setelah softmax perhatian, yang digunakan untuk menghitung rata-rata berbobot di kepala self-attention.

  • generator_cross_attentions (tuple(torch.FloatTensor), opsional, dikembalikan ketika output_attentions=True dilewatkan atau ketika config.output_attentions=True) — Tuple dari torch.FloatTensor (satu untuk setiap layer) dengan bentuk (batch_size, num_heads, sequence_length, sequence_length).

    Bobot cross-attention dari decoder generator, setelah softmax attention, yang digunakan untuk menghitung rata-rata berbobot di kepala cross-attention.

Contoh:

>>> 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.FloatTensor] = 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)

Parameter

  • input_ids (torch.LongTensor dengan bentuk (batch_size, sequence_length), opsional) — Urutan yang digunakan sebagai prompt untuk generasi. Jika input_ids tidak diberikan, maka context_input_ids harus disediakan.
  • attention_mask (torch.Tensor dengan bentuk (batch_size, sequence_length), opsional) — Mask untuk menghindari eksekusi attention pada indeks token padding. Nilai mask dipilih dari [0, 1]:
    • 1 untuk token yang tidak dimasker,
    • 0 untuk token yang dimasker.

    Apa itu attention mask?

  • context_input_ids (torch.LongTensor dengan bentuk (batch_size * config.n_docs, config.max_combined_length), opsional, dikembalikan ketika output_retrieved=True) — ID input yang telah diproses pascapemrosesan dari dokumen yang diambil dan input_ids encoder pertanyaan oleh retriever.
  • context_attention_mask (torch.LongTensor dengan bentuk (batch_size * config.n_docs, config.max_combined_length), opsional, dikembalikan saat output_retrieved=True) — Attention mask yang diproses ulang dari dokumen yang diambil dan encoder pertanyaan input_ids oleh retriever.

    Jika model tidak diinisialisasi dengan retriever atau input_ids tidak diberikan, context_input_ids dan context_attention_mask harus disediakan untuk forward pass. Keduanya dikembalikan oleh __call__().

  • doc_scores (torch.FloatTensor dengan bentuk (batch_size, config.n_docs)) — Skor antara setiap embedding dokumen yang diambil (lihat retrieved_doc_embeds) dan question_encoder_last_hidden_state.

    Jika model tidak diinisialisasi dengan retriever atau input_ids tidak diberikan, doc_scores harus disediakan untuk forward pass. doc_scores dikembalikan oleh __call__().

  • do_deduplication (bool, opsional) — Apakah akan melakukan deduplikasi generasi dari dokumen konteks yang berbeda untuk input tertentu. Harus disetel ke False jika digunakan saat pelatihan dengan backend terdistribusi.
  • num_return_sequences(int, opsional, default 1) — Jumlah urutan yang dikembalikan dan dihitung secara independen untuk setiap elemen dalam batch. Perhatikan bahwa ini bukan nilai yang kami teruskan ke fungsi [generate()](/docs/transformers/main/en/main_classes/text_generation#transformers.GenerationMixin.generate) dari generator, di mana kami mengatur num_return_sequences menjadi num_beams.
  • num_beams (int, opsional, default 1) — Jumlah beam untuk beam search. Nilai 1 berarti tidak menggunakan beam search.
  • n_docs (int, opsional, default config.n_docs) — Jumlah dokumen yang akan diambil dan/atau jumlah dokumen yang akan dibuatkan jawaban.
  • kwargs (dict[str, Any], opsional) — kwargs tambahan akan diteruskan ke generate().

Mengembalikan

torch.LongTensor dengan bentuk (batch_size * num_return_sequences, sequence_length)

Urutan yang dihasilkan. Dimensi kedua (panjang urutan) sama dengan max_length atau lebih pendek jika semua batch selesai lebih awal karena eos_token_id.

Menerapkan decoding sekuens RAG “thorough”. Baca dokumentasi generate()` untuk informasi lebih lanjut tentang cara mengatur parameter input generate lainnya.

RagTokenForGeneration

kelas 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 )

Parameter

  • config (PreTrainedConfig, opsional) — Kelas konfigurasi model dengan semua parameter model. Inisialisasi dengan file konfigurasi tidak memuat bobot yang terkait dengan model, hanya konfigurasinya. Lihat metode from_pretrained() untuk memuat bobot model.
  • question_encoder (PreTrainedModel, opsional) — Model yang bertanggung jawab untuk mengodekan pertanyaan menjadi hidden states untuk retrieval.
  • generator (PreTrainedModel, opsional) — Model yang bertanggung jawab untuk menghasilkan teks berdasarkan dokumen yang diambil.
  • retriever (RagRetriever, opsional) — Komponen yang bertanggung jawab untuk mengambil dokumen dari basis pengetahuan berdasarkan pertanyaan yang telah dienkod.

Implementasi model RAG-token. Model ini melakukan marginalisasi spesifik RAG-token pada jalur maju (forward pass).

Model ini mewarisi dari PreTrainedModel. Periksa dokumentasi kelas induk untuk metode generik yang diimplementasikan oleh pustaka untuk semua model (seperti mengunduh atau menyimpan, mengubah ukuran embedding input, memangkas kepala, dll.)

Model ini juga merupakan subclass dari torch.nn.Module PyTorch. Gunakan sebagai PyTorch Module biasa dan merujuk ke dokumentasi PyTorch untuk semua hal yang berkaitan dengan penggunaan dan perilaku umum.

forward

< >

( input_ids: typing.Optional[torch.LongTensor] = Noneattention_mask: typing.Optional[torch.FloatTensor] = 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.FloatTensor] = 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.FloatTensor)

Parameter

  • input_ids (torch.LongTensor dengan bentuk (batch_size, sequence_length)) — Indeks token urutan input dalam kosakata. RagConfig, yang digunakan untuk menginisialisasi model, menentukan generator mana yang akan digunakan, dan juga menentukan tokenizer generator yang kompatibel. Gunakan kelas tokenizer tersebut untuk memperoleh indeksnya.

    Apa itu input ID?

  • attention_mask (torch.FloatTensor dengan bentuk (batch_size, sequence_length), opsional) — Mask untuk menghindari eksekusi attention pada indeks token padding. Nilai mask dipilih dari [0, 1]:
    • 1 untuk token yang tidak dimasker,
    • 0 untuk token yang dimasker.

    Apa itu attention mask?

  • encoder_outputs (tuple(tuple(torch.FloatTensor), opsional) — Tuple terdiri dari (generator_enc_last_hidden_state, opsional: generator_enc_hidden_states, opsional: generator_enc_attentions). generator_enc_last_hidden_state dengan bentuk (batch_size, n_docs * sequence_length, hidden_size) adalah urutan hidden-state pada keluaran lapisan terakhir dari encoder generator.

    Digunakan oleh model (RagModel) selama proses decoding.

  • decoder_input_ids (torch.LongTensor dengan bentuk (batch_size, target_sequence_length), opsional) — Disediakan untuk tugas generasi. None secara default, bangun sesuai instruksi untuk model generator yang Anda gunakan dengan instance RAG Anda.
  • decoder_input_ids (torch.LongTensor dengan bentuk (batch_size, target_sequence_length), opsional) — Indeks token dari urutan input decoder dalam kosakata. Indeks dapat diperoleh menggunakan AutoTokenizer. Lihat PreTrainedTokenizer.encode() dan PreTrainedTokenizer.call() untuk detailnya. Apa itu decoder input IDs?

    Indeks dapat diperoleh menggunakan AutoTokenizer. Lihat PreTrainedTokenizer.encode() dan PreTrainedTokenizer.call() untuk detailnya.

    Apa itu ID input decoder?

  • decoder_attention_mask (torch.BoolTensor dengan bentuk (batch_size, target_sequence_length), opsional) — Perilaku default: menghasilkan tensor yang mengabaikan token pad di decoder_input_ids. Mask kausal juga akan digunakan secara default.
  • past_key_values (~cache_utils.Cache, opsional) — Hidden-states yang sudah dihitung sebelumnya (key dan values di blok self-attention dan di blok cross-attention) yang dapat digunakan untuk mempercepat decoding berurutan. Ini biasanya terdiri dari past_key_values yang dikembalikan oleh model pada tahap decoding sebelumnya, ketika use_cache=True atau config.use_cache=True.

    Hanya instance Cache yang diizinkan sebagai input, lihat panduan kv cache kami. Jika tidak ada past_key_values yang diteruskan, DynamicCache akan diinisialisasi secara default.

    Model akan menghasilkan format cache yang sama dengan yang diberikan sebagai input.

    Jika past_key_values digunakan, pengguna diharapkan hanya memasukkan input_ids yang belum diproses (yang tidak memiliki state past key value yang diberikan ke model ini) dengan bentuk (batch_size, unprocessed_length) alih-alih semua input_ids dengan bentuk (batch_size, sequence_length).

  • context_input_ids (torch.LongTensor dengan bentuk (batch_size * config.n_docs, config.max_combined_length), opsional, dikembalikan ketika output_retrieved=True) — ID input yang diproses pascapemrosesan dari dokumen yang diambil dan input_ids encoder pertanyaan oleh retriever. Jika model tidak diinisialisasi dengan retriever, `context_input_ids harus disediakan untuk forward pass. context_input_ids dikembalikan oleh __call__().
  • context_attention_mask (torch.LongTensor dengan bentuk (batch_size * config.n_docs, config.max_combined_length),opsional, dikembalikan saat output_retrieved=True) — Attention mask yang diproses ulang dari dokumen yang diambil dan input_ids encoder pertanyaan oleh retriever. Jika model tidak diinisialisasi dengan retriever, maka context_attention_mask harus disediakan untuk forward pass. context_attention_mask dikembalikan oleh __call__().
  • doc_scores (torch.FloatTensor dengan bentuk (batch_size, config.n_docs)) — Skor antara setiap embedding dokumen yang diambil (lihat retrieved_doc_embeds) dan question_encoder_last_hidden_state. Jika model tidak diinisialisasi dengan retriever, doc_scores harus disediakan untuk forward pass. doc_scores dapat dihitung melalui question_encoder_last_hidden_state dan retrieved_doc_embeds, lihat contoh untuk informasi lebih lanjut.
  • use_cache (bool, opsional) — Jika diset ke True, state kunci-nilai past_key_values akan dikembalikan dan dapat digunakan untuk mempercepat decoding (lihat past_key_values).
  • output_attentions (bool, opsional) — Apakah akan mengembalikan tensor attentions dari semua lapisan attention. Lihat attentions di bawah tensor yang dikembalikan untuk detail lebih lanjut.
  • output_hidden_states (bool, opsional) — Apakah akan mengembalikan hidden states dari semua lapisan. Lihat hidden_states di bawah tensor yang dikembalikan untuk detail lebih lanjut.
  • output_retrieved (bool, opsional) — Apakah akan mengembalikan retrieved_doc_embeds, retrieved_doc_ids, context_input_ids dan context_attention_mask. Lihat tensor yang dikembalikan untuk detail lebih lanjut.
  • do_marginalize (bool, opsional) — Jika True, logits dimarginalisasi di semua dokumen dengan menggunakan torch.nn.functional.log_softmax.
  • reduce_loss (bool, opsional) — Hanya relevan jika labels diberikan. Jika True, kerugian NLL direduksi menggunakan operasi torch.Tensor.sum.
  • labels (torch.LongTensor dengan bentuk (batch_size, sequence_length), opsional) — Label untuk menghitung kerugian pemodelan bahasa yang disamarkan (masked language modeling). Indeks harus berada dalam [0, ..., config.vocab_size] atau -100 (lihat docstring input_ids). Token dengan indeks yang disetel ke -100 diabaikan (disamarkan), kerugian hanya dihitung untuk token dengan label dalam [0, ..., config.vocab_size].
  • n_docs (int, opsional) — Jumlah dokumen yang akan diambil.

Mengembalikan

RetrievAugLMMarginOutput atau tuple(torch.FloatTensor)

A RetrievAugLMMarginOutput atau tuple dari torch.FloatTensor (jika return_dict=False diteruskan atau ketika config.return_dict=False) yang terdiri dari berbagai elemen tergantung pada konfigurasi (RagConfig) dan input.

Metode forward dari RagTokenForGeneration menimpa metode khusus __call__.

Meskipun resep untuk forward pass perlu didefinisikan di dalam fungsi ini, sebaiknya panggil instance Module setelahnya alih-alih fungsi ini, karena yang pertama menangani langkah-langkah pra-pemrosesan dan pasca-pemrosesan, sedangkan yang kedua mengabaikannya secara diam-diam.

  • loss (torch.FloatTensor dengan bentuk (1,), opsional, dikembalikan saat labels disediakan) — Loss pemodelan bahasa.

  • logits (torch.FloatTensor dengan bentuk (batch_size, sequence_length, config.vocab_size)) — Skor prediksi dari kepala pemodelan bahasa. Skor tersebut mungkin telah dimarginalkan di atas semua dokumen untuk setiap token kosakata.

  • doc_scores (torch.FloatTensor dengan bentuk (batch_size, config.n_docs)) — Skor antara setiap embedding dokumen yang diambil (lihat retrieved_doc_embeds) dan question_encoder_last_hidden_state.

  • past_key_values (Cache, opsional, dikembalikan saat use_cache=True dilewatkan atau saat config.use_cache=True) — Ini adalah instance Cache. Untuk detail lebih lanjut, lihat panduan kv cache kami.

    Mengandung hidden-states (key dan values di blok attention) yang telah dihitung sebelumnya dari decoder, yang dapat digunakan (lihat input past_key_values) untuk mempercepat decoding berurutan.

  • retrieved_doc_embeds (torch.FloatTensor dengan bentuk (batch_size, config.n_docs, hidden_size), opsional, dikembalikan saat output_retrieved=True) — Dokumen tertanam yang diambil oleh retriever. Digunakan bersama question_encoder_last_hidden_state untuk menghitung doc_scores.

  • retrieved_doc_ids (torch.LongTensor dengan bentuk (batch_size, config.n_docs), opsional, dikembalikan ketika output_retrieved=True) — Indeks dari dokumen tertanam yang diambil oleh retriever.

  • context_input_ids (torch.LongTensor dengan bentuk (batch_size * config.n_docs, config.max_combined_length), opsional, dikembalikan ketika output_retrieved=True) — Input ids yang telah diproses ulang oleh retriever dari dokumen yang diambil dan input_ids encoder pertanyaan.

  • context_attention_mask (torch.LongTensor dengan bentuk (batch_size * config.n_docs, config.max_combined_length), opsional, dikembalikan ketika output_retrieved=True) — Attention mask yang diproses ulang dari dokumen yang diambil dan input_ids encoder pertanyaan oleh retriever.

  • question_encoder_last_hidden_state (torch.FloatTensor dengan bentuk (batch_size, sequence_length, hidden_size), opsional) — Urutan hidden state pada keluaran lapisan terakhir dari question encoder, yaitu pooled output dari model.

  • question_enc_hidden_states (tuple(torch.FloatTensor), opsional, dikembalikan ketika output_hidden_states=True dilewatkan atau ketika config.output_hidden_states=True) — Tuple dari torch.FloatTensor (satu untuk output embeddings dan satu untuk output setiap layer) dengan bentuk (batch_size, sequence_length, hidden_size).

    Hidden states dari question encoder pada output setiap layer ditambah output embedding awal.

  • question_enc_attentions (tuple(torch.FloatTensor), opsional, dikembalikan ketika output_attentions=True dilewatkan atau ketika config.output_attentions=True) — Tuple dari torch.FloatTensor (satu untuk setiap lapisan) dengan bentuk (batch_size, num_heads, sequence_length, sequence_length).

    Bobot perhatian dari encoder pertanyaan, setelah softmax perhatian, yang digunakan untuk menghitung rata-rata berbobot di kepala self-attention.

  • generator_enc_last_hidden_state (torch.FloatTensor dengan bentuk (batch_size, sequence_length, hidden_size), opsional) — Urutan hidden-state pada keluaran lapisan terakhir dari encoder generator model.

  • generator_enc_hidden_states (tuple(torch.FloatTensor), opsional, dikembalikan ketika output_hidden_states=True dilewatkan atau ketika config.output_hidden_states=True) — Tuple dari torch.FloatTensor (satu untuk output embeddings dan satu untuk output setiap layer) dengan bentuk (batch_size, sequence_length, hidden_size).

    Hidden states dari encoder generator pada output setiap layer ditambah output embedding awal.

  • generator_enc_attentions (tuple(torch.FloatTensor), opsional, dikembalikan ketika output_attentions=True dilewatkan atau ketika config.output_attentions=True) — Tuple dari torch.FloatTensor (satu untuk setiap layer) dengan bentuk (batch_size, num_heads, sequence_length, sequence_length).

    Bobot perhatian dari encoder generator, setelah softmax perhatian, yang digunakan untuk menghitung rata-rata berbobot di kepala self-attention.

  • generator_dec_hidden_states (tuple(torch.FloatTensor), opsional, dikembalikan ketika output_hidden_states=True dilewatkan atau ketika config.output_hidden_states=True) — Tuple dari torch.FloatTensor (satu untuk output dari embeddings dan satu untuk output dari setiap layer) dengan bentuk (batch_size, sequence_length, hidden_size).

    Hidden states dari generator decoder pada output setiap layer ditambah output embedding awal.

  • generator_dec_attentions (tuple(torch.FloatTensor), opsional, dikembalikan ketika output_attentions=True dilewatkan atau ketika config.output_attentions=True) — Tuple dari torch.FloatTensor (satu untuk setiap layer) dengan bentuk (batch_size, num_heads, sequence_length, sequence_length).

    Bobot perhatian dari decoder generator, setelah softmax perhatian, yang digunakan untuk menghitung rata-rata berbobot di kepala self-attention.

  • generator_cross_attentions (tuple(torch.FloatTensor), opsional, dikembalikan ketika output_attentions=True dilewatkan atau ketika config.output_attentions=True) — Tuple dari torch.FloatTensor (satu untuk setiap layer) dengan bentuk (batch_size, num_heads, sequence_length, sequence_length).

    Bobot cross-attention dari decoder generator, setelah softmax attention, yang digunakan untuk menghitung rata-rata berbobot di kepala cross-attention.

Contoh:

>>> 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.FloatTensor] = 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)

Parameter

  • input_ids (torch.LongTensor dengan bentuk (batch_size, sequence_length), opsional) — Urutan yang digunakan sebagai prompt untuk generasi. Jika input_ids tidak diberikan, maka context_input_ids harus disediakan.
  • attention_mask (torch.Tensor dengan bentuk (batch_size, sequence_length), opsional) — Mask untuk menghindari eksekusi attention pada indeks token padding. Nilai mask dipilih dari [0, 1]:
    • 1 untuk token yang tidak dimasker,
    • 0 untuk token yang dimasker.

    Apa itu attention mask?

  • 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.

    Jika model tidak diinisialisasi dengan retriever, context_input_ids harus disediakan untuk forward pass. context_input_ids dikembalikan oleh __call__().

  • context_attention_mask (torch.LongTensor dengan bentuk (batch_size * config.n_docs, config.max_combined_length), opsional, dikembalikan saat output_retrieved=True) — Attention mask yang diproses ulang dari dokumen yang diambil dan encoder pertanyaan input_ids oleh retriever.

    Jika model tidak diinisialisasi dengan retriever, context_input_ids harus disediakan untuk forward pass. context_input_ids dikembalikan oleh __call__().

  • doc_scores (torch.FloatTensor dengan bentuk (batch_size, config.n_docs)) — Skor antara setiap embedding dokumen yang diambil (lihat retrieved_doc_embeds) dan question_encoder_last_hidden_state.

    Jika model tidak diinisialisasi dengan retriever, context_input_ids harus disediakan untuk forward pass. context_input_ids dikembalikan oleh __call__().

  • n_docs (int, opsional, default config.n_docs) — Jumlah dokumen yang akan diambil dan/atau jumlah dokumen yang akan dibuatkan jawaban.
  • generation_config (~generation.GenerationConfig, opsional) — Konfigurasi generasi yang akan digunakan sebagai parametrisasi dasar untuk panggilan generate. **kwargs yang diteruskan ke generate dan cocok dengan atribut dari generation_config akan menimpanya. Jika generation_config tidak disediakan, nilai default akan digunakan, yang memiliki prioritas pemuatan sebagai berikut: 1) dari file model generation_config.json, jika ada; 2) dari konfigurasi model. Perhatikan bahwa parameter yang tidak ditentukan akan mewarisi nilai default dari GenerationConfig, yang dokumentasinya harus diperiksa untuk memparametrisasi generasi.
  • prefix_allowed_tokens_fn (Callable[[int, torch.Tensor], list[int]], opsional) — Jika disediakan, fungsi ini membatasi beam search hanya pada token yang diizinkan di setiap langkah. Jika tidak disediakan, tidak ada batasan yang diterapkan. Fungsi ini menerima 2 argumen inputs_ids dan ID batch batch_id. Fungsi ini harus mengembalikan daftar token yang diizinkan untuk langkah generasi berikutnya yang dikondisikan pada token yang telah dihasilkan sebelumnya inputs_ids dan ID batch batch_id. Argumen ini berguna untuk generasi yang dibatasi berdasarkan prefix, seperti yang dijelaskan dalam Autoregressive Entity Retrieval.
  • logits_processor (LogitsProcessorList, opsional) — Logits processor kustom yang melengkapi logits processor bawaan yang dibangun dari argumen dan konfigurasi model. Jika logits processor yang dilewatkan sudah dibuat dengan argumen atau konfigurasi model, maka error akan dilempar.
  • stopping_criteria (StoppingCriteriaList, opsional) — Kriteria penghentian kustom yang melengkapi kriteria penghentian bawaan yang dibangun dari argumen dan konfigurasi model. Jika kriteria penghentian yang sudah dibuat dengan argumen atau konfigurasi model dilewatkan, sebuah error akan dilempar.
  • kwargs (dict[str, Any], opsional) — Parametrisasi ad hoc untuk generate_config dan/atau kwargs spesifik model tambahan yang akan diteruskan ke fungsi forward dari model.

Mengembalikan

torch.LongTensor dengan bentuk (batch_size * num_return_sequences, sequence_length)

Urutan yang dihasilkan. Dimensi kedua (sequence_length) sama dengan max_length atau lebih pendek jika semua batch selesai lebih awal karena eos_token_id.

Menerapkan decoding token RAG.

Update on GitHub