{"about":{"site":"https://codewithpapers.app","non_affiliation":"Code with Papers and Syntology are not affiliated with, endorsed by, or sponsored by Papers with Code, Meta, or the pwc-archive mirror.","licence":"CC BY-SA 4.0","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","attribution":"https://codewithpapers.app/attribution","modified":"archive material modified by Syntology; see the attribution page"},"url":"/paper/self-rag-learning-to-retrieve-generate-and","title":"Self-RAG: Learning to Retrieve, Generate, and Critique through Self-Reflection","arxiv_id":"2310.11511","date":"2023-10-17","proceeding":null,"authors":["Akari Asai","Zeqiu Wu","Yizhong Wang","Avirup Sil","Hannaneh Hajishirzi"],"abstract":"Despite their remarkable capabilities, large language models (LLMs) often produce responses containing factual inaccuracies due to their sole reliance on the parametric knowledge they encapsulate. Retrieval-Augmented Generation (RAG), an ad hoc approach that augments LMs with retrieval of relevant knowledge, decreases such issues. However, indiscriminately retrieving and incorporating a fixed number of retrieved passages, regardless of whether retrieval is necessary, or passages are relevant, diminishes LM versatility or can lead to unhelpful response generation. We introduce a new framework called Self-Reflective Retrieval-Augmented Generation (Self-RAG) that enhances an LM's quality and factuality through retrieval and self-reflection. Our framework trains a single arbitrary LM that adaptively retrieves passages on-demand, and generates and reflects on retrieved passages and its own generations using special tokens, called reflection tokens. Generating reflection tokens makes the LM controllable during the inference phase, enabling it to tailor its behavior to diverse task requirements. Experiments show that Self-RAG (7B and 13B parameters) significantly outperforms state-of-the-art LLMs and retrieval-augmented models on a diverse set of tasks. Specifically, Self-RAG outperforms ChatGPT and retrieval-augmented Llama2-chat on Open-domain QA, reasoning and fact verification tasks, and it shows significant gains in improving factuality and citation accuracy for long-form generations relative to these models.","url_abs":"https://arxiv.org/abs/2310.11511v1","url_pdf":"https://arxiv.org/pdf/2310.11511v1.pdf","source":{"archive":"pwc-archive (Hugging Face), CC BY-SA 4.0","snapshot":"2025-07-28","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","row_kind":"abstracts"},"code_links":[{"paper_slug":"self-rag-learning-to-retrieve-generate-and","repo_url":"https://github.com/AkariAsai/self-rag","is_official":1,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}},{"paper_slug":"self-rag-learning-to-retrieve-generate-and","repo_url":"https://github.com/ShayekhBinIslam/openrag","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":null},{"paper_slug":"self-rag-learning-to-retrieve-generate-and","repo_url":"https://github.com/fate-ubw/raglab","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":null},{"paper_slug":"self-rag-learning-to-retrieve-generate-and","repo_url":"https://github.com/kaistai/semiparametric_token-sequence_co-supervision","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok"}},{"paper_slug":"self-rag-learning-to-retrieve-generate-and","repo_url":"https://github.com/llm-lab-org/CLASP","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"none","reach":{"status":"ok","spdx":"MIT"}},{"paper_slug":"self-rag-learning-to-retrieve-generate-and","repo_url":"https://github.com/ruc-nlpir/flashrag","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[{"task_slug":"fact-verification","task_name":"Fact Verification"},{"task_slug":"question-answering","task_name":"Question Answering"},{"task_slug":"rag","task_name":"RAG"},{"task_slug":"response-generation","task_name":"Response Generation"},{"task_slug":"retrieval","task_name":"Retrieval"},{"task_slug":"retrieval-augmented-generation","task_name":"Retrieval-augmented Generation"}],"methods":[{"method_slug":"hoc","method_name":"HOC"},{"method_slug":"set","method_name":"SET"}],"datasets_introduced":[],"methods_introduced":[],"results":[{"leaderboard":"/sota/question-answering-on-popqa","task":"Question Answering","dataset":"PopQA","model":"SelfRAG-7b","rank_in_archive_order":1,"of":2,"metrics":{"Accuracy":"54.9"},"uses_additional_data":false},{"leaderboard":"/sota/question-answering-on-popqa","task":"Question Answering","dataset":"PopQA","model":"SelfRAG-13b","rank_in_archive_order":2,"of":2,"metrics":{"Accuracy":"55.8"},"uses_additional_data":false}],"syntology":{"syntology_url":null,"atlas_url":"https://app.syntology.ai/?focus=2310.11511","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2310.11511"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-24T18:15:14+00:00","read_at_is":"when the build read Syntology's graph, not when any sample ran","claim":"Per-sample execution status on synthesized fixtures; not a correctness claim about the paper. Samples come from repositories linked to the paper, official or community; repo_kind says which.","repos":[{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/fate-ubw/raglab","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/ruc-nlpir/flashrag","reach":{"status":"ok","spdx":"MIT"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/kaistai/semiparametric_token-sequence_co-supervision","reach":{"status":"ok"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/llm-lab-org/CLASP","reach":{"status":"ok","spdx":"MIT"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/AkariAsai/self-rag","reach":{"status":"ok","spdx":"MIT"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/ShayekhBinIslam/openrag","reach":null}],"summary":{"ran_fixture":1,"ran_draft_wrong":5,"ran":2,"unverified":6},"by_repo_kind":{"official":{"samples":10,"ran":5,"repositories":1},"listed":{"samples":2,"ran":1,"repositories":2}},"repo_kind_vocabulary":{"official":"The archive marks this repository official for the paper","named_in_paper":"The archive records that the paper mentions this repository; it is not marked official","listed":"In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper","found_in_text":"Syntology found this repository in the paper's own text; whether it is the authors' implementation is not asserted","community":"Not in the archive's code links for this paper; a community repository Syntology harvested"},"n_pointer_only_for_licence":3,"samples":[{"code_sha256_prefix":"f725bc2d76076485","entry":"apply_rotary_pos_emb","repo":null,"repo_kind":null,"path":null,"file_url":null,"link_basis":"identical_code_first_harvested_elsewhere","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":"invariant","behaviour_fingerprint":false,"licence":null,"inline_ok":false,"mcp_get_code":{"code_sha256":"f725bc2d76076485"}},{"code_sha256_prefix":"1cb0eeb16cf04ee3","entry":"encode_with_messages_format","repo":"AkariAsai/self-rag","repo_kind":"official","path":"retrieval_lm/finetune.py","file_url":"https://github.com/AkariAsai/self-rag/blob/HEAD/retrieval_lm/finetune.py","link_basis":"plan_row","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"1cb0eeb16cf04ee3"}},{"code_sha256_prefix":"3ca38f9acc00194b","entry":"jload","repo":"AkariAsai/self-rag","repo_kind":"official","path":"data_creation/train_special_tokens.py","file_url":"https://github.com/AkariAsai/self-rag/blob/HEAD/data_creation/train_special_tokens.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"3ca38f9acc00194b"}},{"code_sha256_prefix":"0c3de3890cd0b382","entry":"load_data","repo":"AkariAsai/self-rag","repo_kind":"official","path":"retrieval_lm/passage_retrieval.py","file_url":"https://github.com/AkariAsai/self-rag/blob/HEAD/retrieval_lm/passage_retrieval.py","link_basis":"harvester_set","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"0c3de3890cd0b382"}},{"code_sha256_prefix":"6829ceb72569fa12","entry":"metric_max_over_ground_truths","repo":"AkariAsai/self-rag","repo_kind":"official","path":"retrieval_lm/metrics.py","file_url":"https://github.com/AkariAsai/self-rag/blob/HEAD/retrieval_lm/metrics.py","link_basis":"harvester_set","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":"invariant","behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"6829ceb72569fa12"}},{"code_sha256_prefix":"342f5e0ec01b9ed8","entry":"preprocess","repo":"AkariAsai/self-rag","repo_kind":"official","path":"data_creation/train_special_tokens.py","file_url":"https://github.com/AkariAsai/self-rag/blob/HEAD/data_creation/train_special_tokens.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"342f5e0ec01b9ed8"}},{"code_sha256_prefix":"6242dd60b264c96f","entry":"read_jsonl","repo":"fate-ubw/raglab","repo_kind":"listed","path":"raglab/rag/train_alg/finetune.py","file_url":"https://github.com/fate-ubw/raglab/blob/HEAD/raglab/rag/train_alg/finetune.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"6242dd60b264c96f"}},{"code_sha256_prefix":"b99eea6376d1e212","entry":"rotate_half","repo":null,"repo_kind":null,"path":null,"file_url":null,"link_basis":"identical_code_first_harvested_elsewhere","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":null,"inline_ok":false,"mcp_get_code":{"code_sha256":"b99eea6376d1e212"}},{"code_sha256_prefix":"e76cf27d36723be3","entry":"accuracy","repo":"AkariAsai/self-rag","repo_kind":"official","path":"retrieval_lm/metrics.py","file_url":"https://github.com/AkariAsai/self-rag/blob/HEAD/retrieval_lm/metrics.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"e76cf27d36723be3"}},{"code_sha256_prefix":"aac14d7de4178849","entry":"encode_with_prompt_completion_format","repo":"AkariAsai/self-rag","repo_kind":"official","path":"retrieval_lm/finetune.py","file_url":"https://github.com/AkariAsai/self-rag/blob/HEAD/retrieval_lm/finetune.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"aac14d7de4178849"}},{"code_sha256_prefix":"d97ab73d08dfa3b9","entry":"exact_match_score","repo":"AkariAsai/self-rag","repo_kind":"official","path":"retrieval_lm/metrics.py","file_url":"https://github.com/AkariAsai/self-rag/blob/HEAD/retrieval_lm/metrics.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"d97ab73d08dfa3b9"}},{"code_sha256_prefix":"d9308d9bf18cd072","entry":"load_balancing_loss_func","repo":"ShayekhBinIslam/openrag","repo_kind":"listed","path":"openrag/modeling_openrag.py","file_url":"https://github.com/ShayekhBinIslam/openrag/blob/HEAD/openrag/modeling_openrag.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"CC-BY-4.0","inline_ok":false,"mcp_get_code":{"code_sha256":"d9308d9bf18cd072"}},{"code_sha256_prefix":"c22fc64f9f9730e4","entry":"make_supervised_data_module","repo":"AkariAsai/self-rag","repo_kind":"official","path":"data_creation/train_special_tokens.py","file_url":"https://github.com/AkariAsai/self-rag/blob/HEAD/data_creation/train_special_tokens.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"c22fc64f9f9730e4"}},{"code_sha256_prefix":"e037474365501512","entry":"randomcrop","repo":"AkariAsai/self-rag","repo_kind":"official","path":"retrieval_lm/src/data.py","file_url":"https://github.com/AkariAsai/self-rag/blob/HEAD/retrieval_lm/src/data.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"e037474365501512"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}