Skip to content

Commit

Permalink
Revert "Remove mentions of RAG from the docs (huggingface#7376)"
Browse files Browse the repository at this point in the history
This reverts commit 3f35add.
  • Loading branch information
fabiocapsouza committed Nov 15, 2020
1 parent ace555c commit 1e4c3cf
Show file tree
Hide file tree
Showing 4 changed files with 115 additions and 3 deletions.
1 change: 1 addition & 0 deletions docs/source/index.rst
Expand Up @@ -231,6 +231,7 @@ conversion utilities for the following models:
model_doc/lxmert
model_doc/bertgeneration
model_doc/layoutlm
model_doc/rag
internal/modeling_utils
internal/tokenization_utils
internal/pipelines_utils
91 changes: 91 additions & 0 deletions docs/source/model_doc/rag.rst
@@ -0,0 +1,91 @@
RAG
----------------------------------------------------

Overview
~~~~~~~~~~~~~~~~~~~~~

Retrieval-augmented generation ("RAG") models combine the powers of pretrained dense retrieval (DPR) and
sequence-to-sequence models. RAG models retrieve documents, pass them to a seq2seq model, then marginalize to generate
outputs. The retriever and seq2seq modules are initialized from pretrained models, and fine-tuned jointly, allowing
both retrieval and generation to adapt to downstream tasks.

It is based on the paper `Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks
<https://arxiv.org/abs/2005.11401>`__ by Patrick Lewis, Ethan Perez, Aleksandara Piktus, Fabio Petroni, Vladimir
Karpukhin, Naman Goyal, Heinrich Küttler, Mike Lewis, Wen-tau Yih, Tim Rocktäschel, Sebastian Riedel, Douwe Kiela.

The abstract from the paper is the following:

*Large pre-trained language models have been shown to store factual knowledge
in their parameters, and achieve state-of-the-art results when fine-tuned on
downstream NLP tasks. However, their ability to access and precisely manipulate
knowledge is still limited, and hence on knowledge-intensive tasks, their
performance lags behind task-specific architectures. Additionally, providing
provenance for their decisions and updating their world knowledge remain open
research problems. Pre-trained models with a differentiable access mechanism to
explicit nonparametric memory can overcome this issue, but have so far been only
investigated for extractive downstream tasks. We explore a general-purpose
fine-tuning recipe for retrieval-augmented generation (RAG) — models which combine
pre-trained parametric and non-parametric memory for language generation. We
introduce RAG models where the parametric memory is a pre-trained seq2seq model and
the non-parametric memory is a dense vector index of Wikipedia, accessed with
a pre-trained neural retriever. We compare two RAG formulations, one which
conditions on the same retrieved passages across the whole generated sequence, the
other can use different passages per token. We fine-tune and evaluate our models
on a wide range of knowledge-intensive NLP tasks and set the state-of-the-art
on three open domain QA tasks, outperforming parametric seq2seq models and
task-specific retrieve-and-extract architectures. For language generation tasks, we
find that RAG models generate more specific, diverse and factual language than a
state-of-the-art parametric-only seq2seq baseline.*



RagConfig
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

.. autoclass:: transformers.RagConfig
:members:


RagTokenizer
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

.. autoclass:: transformers.RagTokenizer
:members: prepare_seq2seq_batch


Rag specific outputs
~~~~~~~~~~~~~~~~~~~~~

.. autoclass:: transformers.modeling_rag.RetrievAugLMMarginOutput
:members:

.. autoclass:: transformers.modeling_rag.RetrievAugLMOutput
:members:


RAGRetriever
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

.. autoclass:: transformers.RagRetriever
:members:


RagModel
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

.. autoclass:: transformers.RagModel
:members: forward


RagSequenceForGeneration
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

.. autoclass:: transformers.RagSequenceForGeneration
:members: forward, generate


RagTokenForGeneration
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

.. autoclass:: transformers.RagTokenForGeneration
:members: forward, generate
21 changes: 21 additions & 0 deletions docs/source/model_summary.rst
Expand Up @@ -672,6 +672,27 @@ DPR consists in three models:

DPR's pipeline (not implemented yet) uses a retrieval step to find the top k contexts given a certain question, and then it calls the reader with the question and the retrieved documents to get the answer.

RAG
-----------------------------------------------------------------------------------------------------------------------

.. raw:: html

<a href="https://huggingface.co/models?filter=rag">
<img alt="Models" src="https://img.shields.io/badge/All_model_pages-rag-blueviolet">
</a>
<a href="model_doc/rag.html">
<img alt="Doc" src="https://img.shields.io/badge/Model_documentation-rag-blueviolet">
</a>

`Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks <https://arxiv.org/abs/2005.11401>`_,
Patrick Lewis, Ethan Perez, Aleksandara Piktus, Fabio Petroni, Vladimir Karpukhin, Naman Goyal, Heinrich Küttler, Mike Lewis, Wen-tau Yih, Tim Rocktäschel, Sebastian Riedel, Douwe Kiela

Retrieval-augmented generation ("RAG") models combine the powers of pretrained dense retrieval (DPR) and Seq2Seq models.
RAG models retrieve docs, pass them to a seq2seq model, then marginalize to generate outputs.
The retriever and seq2seq modules are initialized from pretrained models, and fine-tuned jointly, allowing both retrieval and generation to adapt to downstream tasks.

The two models RAG-Token and RAG-Sequence are available for generation.

More technical aspects
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Expand Down
5 changes: 2 additions & 3 deletions utils/check_repo.py
Expand Up @@ -314,9 +314,8 @@ def check_repo_quality():
print("Checking all models are properly tested.")
check_all_decorator_order()
check_all_models_are_tested()
# Uncomment me when RAG is back
# print("Checking all models are properly documented.")
# check_all_models_are_documented()
print("Checking all models are properly documented.")
check_all_models_are_documented()


if __name__ == "__main__":
Expand Down

0 comments on commit 1e4c3cf

Please sign in to comment.