검색 증강 생성은 외부 문서 모음을 검색하는 검색기(retriever)와 언어 모델인 생성기(generator)를 결합합니다. Lewis 외(2020)가 처음 제안한 이 방식은 파라메트릭 seq2seq 모델과 위키백과의 비파라메트릭 벡터 인덱스를 결합한 것으로, 더 사실적이고 구체적인 텍스트를 생성하며 오픈 도메인 질의응답에서 최고 수준의 성능을 기록했습니다.
대부분의 최신 RAG 시스템은 Dense Passage Retrieval(Karpukhin 외, 2020)을 따라 밀집 임베딩으로 검색합니다. 검색을 언어 모델과 결합하는 아이디어는 REALM(Guu 외, 2020)에서도 발전되었습니다.
AI에서 RAG란? 쉽게 풀어 본 의미
RAG의 의미를 한 줄로 요약하면 "먼저 찾아보고, 그다음 답한다"입니다. 일반적인 LLM은 학습 과정에서 흡수한 내용만으로 답하기 때문에, 정보가 오래되었거나 잘못 기억하고 있을 수 있습니다. RAG 시스템은 먼저 회사 문서, 지식 베이스, 웹 등에서 질문과 관련된 구절을 가져와 질문과 함께 모델에 전달하므로, 답변에서 실제 출처를 인용하고 밝힐 수 있습니다.
그래서 비공개 문서 기반 챗봇, 항상 최신 정보를 유지해야 하는 고객 지원 어시스턴트, 각 주장의 출처를 보여 주는 리서치 도구를 만들 때 RAG AI가 일반적인 방식으로 쓰입니다.
검색 증강 생성의 작동 방식
- 1인덱싱. 문서를 청크로 나누고, 각 청크를 임베딩으로 변환한 뒤, 그 임베딩을 벡터 데이터베이스나 검색 인덱스에 저장합니다.
- 2검색. 사용자의 질문도 같은 방식으로 임베딩한 뒤, 최근접 이웃 검색으로 가장 유사한 청크를 찾습니다. 이어서 리랭킹 단계를 거치는 경우가 많습니다.
- 3증강 및 생성. 상위 구절을 모델의 컨텍스트 윈도우 범위 안에서 프롬프트에 삽입하면, 모델은 이를 근거로 답변을 작성합니다. 이상적으로는 각 문장을 뒷받침하는 구절이 무엇인지도 인용합니다.
RAG vs 파인튜닝
둘 다 특정 분야에서 모델을 더 유용하게 만들어 주지만, 바꾸는 대상이 다릅니다. RAG는 모델이 볼 수 있는 것을 바꾸고, 파인튜닝은 모델 자체를 바꿉니다.
| RAG | 파인튜닝 | |
|---|---|---|
| 바뀌는 것 | 모델에 제공되는 컨텍스트 | 모델의 가중치 |
| 지식 업데이트 | 문서 다시 인덱싱 | 다시 학습 |
| 인용 | 사용된 구절을 제시할 수 있음 | 출처 추적 기능이 기본 제공되지 않음 |
| 적합한 용도 | 최신 정보, 비공개 정보, 자주 바뀌는 사실 | 일관된 문체, 형식 또는 특화된 동작 |
컨텍스트 윈도우가 길면 문서 전체를 채팅에 붙여 넣을 수 있으므로, 파일이 몇 개뿐이라면 RAG를 대신할 수 있습니다. 하지만 문서 모음이 윈도우보다 크거나, 자주 바뀌거나, 많은 사용자가 검색해야 하는 경우에는 여전히 RAG가 유리합니다.
MultipleChat의 RAG
MultipleChat 프로젝트가 바로 이렇게 작동합니다. 프로젝트에 추가한 파일은 인덱싱되고, 메시지를 보내면 MultipleChat이 파일을 검색해 가장 관련성 높은 청크만 모델에 전달합니다. 덕분에 프로젝트 안의 모든 채팅에서 복사·붙여넣기 없이 내 문서를 활용할 수 있습니다. Web Search는 실시간 출처를 더해 주며, 유료 요금제에서는 Auto Verification이 답변이 전달된 직후 사실 관계 문제를 확인해 줍니다.