RAG란 무엇인가?
RAG 등장 배경
RAG는 Retrieval-Augmented Generation의 약자다. 직역하면 검색으로 보강된 생성이라는 뜻이다.
- Retrieval: 관련 있는 정보를 검색해서 가져오는 것
- Augmented: 가져온 정보를 이용해 기존 입력을 보강하는 것
- Generation: LLM이 최종 답변을 생성하는 것
LLM은 학습된 지식을 기반으로 답변을 생성한다. 하지만 최신 정보, 회사 내부 문서, 게시판에 저장된 글, 개인 파일처럼 모델이 학습하지 않은 정보에 대해서는 정확히 답변하기 어렵다. 이때 LLM이 모르는 정보를 외부 데이터에서 찾아 함께 넘겨주는 방식이 RAG다.
즉, RAG는 LLM이 답변하기 전에 관련 자료를 먼저 검색하고, 그 자료를 참고해서 답변하도록 만드는 구조다.
RAG의 기본 흐름
RAG는 보통 아래 흐름으로 동작한다.
- 문서나 게시글 같은 원본 데이터를 준비한다.
- 긴 문서를 작은 단위로 나눈다.
- 각 조각을 임베딩 벡터로 변환한다.
- 변환된 벡터를 벡터 DB에 저장한다.
- 사용자가 질문을 입력한다.
- 질문도 임베딩 벡터로 변환한다.
- 벡터 DB에서 질문과 의미적으로 가까운 문서를 찾는다.
- 찾은 문서를 LLM 프롬프트에 함께 넣는다.
- LLM이 검색된 문서를 참고해 답변을 생성한다.
간단히 정리하면 다음과 같다.