본문 바로가기
개발/LLM

Retrieval Augmented Generation(RAG)

by ▶ Carpe diem ◀ 2023. 9. 23.

Prompt Engineering Guide(https://www.promptingguide.ai/) 내용을 바탕으로 작성한 내용입니다.

 

더 복잡한 knowledge-intensive tasks의 경우, 외부 지식 소스에 액세스하여 작업을 완료하는 언어 모델 기반 시스템을 구축할 수 있습니다. 이를 통해 사실적 일관성(factual consistency)을 높이고, 생성된 응답의 신뢰성을 향상시키며, "hallucination(환각)" 문제를 완화하는데 도움이 될 수 있습니다.

knowledge-intensive란?
Cambridge Dictionary 에 따르면, 아래와 같이 정의됩니다.
"needing a lot of experience, understanding, information, and skills in order to be successful"

knowledge-intensive task란?
사람조차 외부지식(ex. 위키피디아 검색 등)없이 해결하기 어려운 문제를 뜻합니다. 즉, 모델의 관점에서 보면, parameterized 되지 않아 문제를 해결하기 위해 외부 지식이 필요한 것을 뜻합니다.

 

Meta AI 연구원들은 knowledge-intensive tasks를 해결하기 위해 Retrieval Augmented Generation(RAG)라는 방법을 도입했습니다. RAG는 정보 검색(information retrieval, IR) 요소를 text generator 모델과 결합합니다. RAG는 fine-tuned이 가능하며 전체 모델을 retraining할 필요 없이 내부 지식을 효율적으로 수정할 수 있습니다.

 

RAG는 입력을 받아 주어진 소스(예: 위키피디아)에서 관련된/지원하는 문서들을 찾습니다. 문서는 원래 입력 프롬프트와 함께 컨텍스트로 연결되어 최종 출력을 생성하는 text generator로 전달됩니다. 따라서 시간이 지남에 따라 RAG는 어떤 상황이던 사실적으로 적응할 수 있습니다. 이는 LLM의 매개 변수 지식이 parametric이기 때문에 매우 유용합니다. RAG는 언어 모델들의 retraining의 우회를 허용하여, 검색 기반(retrieval-based) 생성을 통해 신뢰할 수 있는 출력물을 생성하여 최신 정보에 접근할 수 있습니다.

 

Lewis et al.,(2021)은 RAG에 대한 general-purpose fine-tuning recipe를 제안했습니다. 사전 훈련된 seq2seq 모델은 파라메트릭 메모리(parametric memory)로 사용되고 위키피디아의 dense vector index는 (neural pre-trained retriever를 사용이 허용되는) 논파라메트릭 메모리(non-parametric memory)로 사용됩니다. 다음은 접근 방식의 개요입니다:

RAG 설명

이미지 출처: Lewis et el. (2021)

 

 

RAG는 Natural Questions, WebQuestions, CuratedTrec과 같은 여러 벤치마크에서 강력한 성능을 발휘합니다. RAG는 ​​MS-MARCO와 Jeopardy 질문들에 대해 테스트되어질 때 보다 사실적이고 구체적이며 다양한 응답을 생성합니다. RAG는 ​​또한 FEVER fact verifiaction 결과를 개선합니다.

 

이것은 knowledge-intensive tasks에서 언어 모델의 출력을 향상시키기 위한 실행 가능한 옵션으로서 RAG의 잠재력을 보여줍니다.

 

최근에는 이러한 retriever-based 접근 방식이 더욱 대중화되었으며 capabilities와 factual consistency를 향상시키기 위해 ChatGPT와 같은 인기 있는 LLM들과 결합되었습니다.

'개발 > LLM' 카테고리의 다른 글

Diffusion 모델 종류 및 예제  (0) 2023.10.02
QA using a search API  (0) 2023.09.24
Chain of Thought Prompting  (0) 2023.09.20
Zero-Shot(제로샷)/Few-Shot(퓨샷) Prompting  (0) 2023.09.18
Colab 에서 streamlit app 실행하기  (0) 2023.09.17