AI 서비스 개발 업무를 진행하면서 활동적이고 유능한 연구진들, 혹은 해외 개발자분들의 ESSAY나 JOURNAL 혹은 책의 내용을 정리하는 공간으로 사용하고 있습니다. 단순 번역보단 얕은 요약으로 진행할 예정이며, 출처는 하단에 적어둘 것입니다.
출처: https://medium.com/towards-artificial-intelligence/what-is-rag-f790bde23d6f

ChatGPT를 사용하면 두 가지 곤란한 상황에 빈번히 마주하게 됩니다. 첫 번째는,시기에 민감한 데이터에 대해 적절한 대답을 할 수 없다는 것입니다. 예컨대, 2023년 12월 31일까지의 데이터로 학습되었고 2024년에 벌어진 어떤 사건에 관하여 묻는다면 gpt는 대답하지 못합니다. 물론 문장 생성의 전문가이기에 어떻게든 답변을 만들어낼 수도 있습니다. 단, 이는 환각 현상이라 번역되는 hallucination을 야기합니다. 시기에 민감한 정보에 대해서 대답할 수 없었던 것이 GPT가 지닌 첫 번째 약점이었다면 대답할 수 없는 물음에 대하여 잘못된 대답을 만들어내는 것이 두 번째 약점입니다.
위의 두 가지 문제점을 해결하기 위해 등장한 개념이 RAG입니다. RAG(Retrieval-Augmented Generation)는 기존 llm의 생성 능력과 특정 도메인 지식 베이스 정보를 결합하여 보다 정확하고 사실에 기반한 답변을 제공하는 기법입니다. 구체적으로 설명키 위해선, 2가지 용어를 가정해야 합니다. llm이 학습한 데이터셋(llm 데이터셋), llm이 학습하지 않은 데이터셋(특화 데이터셋)이 그것입니다.
llm은 llm 데이터셋을 학습하였고 그 양은 확보하는 것조차 어려울 정도로 많은 양입니다. llm은 llm 데이터셋을 학습하여 그럴싸한 문장을 생성할 수 있는 능력을 갖게 되었습니다. 단, 그럴듯한 문장을 생성한다는 것이 꼭 정답을 보장하지는 않습니다. 거짓말도 그럴듯하게 할 수 있기 때문이지요. 그래서 특화 데이터셋을 llm에게 검색을 시켜, 해당 지식을 기반으로 문장을 생성하도록 강요하는 것이 RAG의 작동 방식입니다. 이 때 특화 데이터셋은 학습되지 않고, 다시 말해 모델의 파라미터를 바꾸지 않고 특화 데이터셋 내의 지식을 활용하여 거짓말이 튀어 나오지 않도록 방지하는 역할로 한정됩니다.
저자는 이를 다음과 같은 용어로 정리해두었습니다.
Put simply: you have a dataset (which is required), and you use it to help the LLM answer the (unknown and upcoming) user queries. This is the simplest form and requires a few steps to make it work, but this is the gist of a RAG-based system:
Rag를 적용한 적절한 예시 중 하나는 의학 도메인에서의 RAG 활용입니다. 의학 분야에서는 최신 연구 결과와 의학적 진단 데이터를 기반으로 정확한 정보를 제공해야 합니다. 하지만 LLM은 최신 연구 데이터를 학습하지 못했거나 의학적 용어에 대한 이해가 부족할 수 있습니다. RAG를 활용하면 이러한 문제를 해결할 수 있습니다. 예를 들어, 최신 의학 논문 데이터베이스(PubMed)와 질병 정보를 포함한 특화 데이터셋을 준비한 후, 사용자가 특정 질병에 대해 질문할 때 RAG 시스템이 관련 정보를 검색하여 LLM이 신뢰할 수 있는 답변을 생성하도록 할 수 있습니다. 이를 통해 환각 현상을 방지하고, 사용자에게 최신 연구 결과를 포함한 정확한 의학 정보를 제공할 수 있습니다.
혹은 e-commerce에서의 예시도 존재합니다. e-커머스 플랫폼에서는 최신 상품 정보 제공이 매우 중요합니다. 그러나 LLM은 학습된 데이터가 오래되어 최신 상품 정보를 포함하지 못할 수 있습니다. 이때, RAG를 적용하면 문제가 해결됩니다. 플랫폼의 최신 상품 데이터(예: 상품명, 가격, 재고 상황 등)를 포함한 데이터베이스를 구축하고, 사용자가 "최신 스마트폰 중 가장 저렴한 모델이 무엇인가요?"라고 질문할 경우, RAG 시스템이 상품 데이터베이스를 검색하여 관련 정보를 제공합니다. LLM은 이 검색 결과를 기반으로 답변을 생성하므로 사용자는 플랫폼에서 판매 중인 최신 상품 정보를 정확히 얻을 수 있습니다.
Rag라는 기법은 finetuning을 하는 것과 병행될 수도 있습니다. 자체 데이터셋을 가지로 llm을 훈련시키고, 또 다른 특화 데이터셋을 문장 생성의 domain으로 활용한다면 rag기법을 단독으로 적용하는 것보다 더 좋은 성능을 일궈낼 수도 있겠지요. 여기서부터는 엔지니어가 어떻게 모델을 설계하는지에 달린 문제입니다.
