참고 논문: Retrieval-Augmented Generation for Large Language Models: A Survey
모델 파라미터에만 의존해 생성하는 것이 아니라 외부 정보도 활용하여 생성하는 시스템
논문에서는 QA를 위해 사용되었지만 LLM 활용 대화 시스템에도 최근 많이 사용되는듯
기존 대화 시스템이나 LLM만을 사용했을 때 보다 확장성, 유연성, 정확성이 향상됨
확장성: LLM이나 파인튜닝된 모델은 학습이 종료된 시점에 멈추게 됨, 최신 정보 활용이 불가하지만 RAG는 실시간 검색이 가능하므로 데이터 변동성이 큰 경우 효과적
유연성: 최신 문서나 정책 업로드를 통해 사용자 맞춤형 답변 생성 가능
정확성: 외부 소스 사용을 통한 할루시네이션 최소화 가능


전통적인 인덱싱, 검색 및 생성 과정으로 구성
낮은 검색 정확도, 응답 생성의 낮은 품질, 증강 과정의 어려움에 따라 발생하는 반복, 부정확, 잘못된 문맥의 통합 등의 발생 가능
데이터 인덱싱: 데이터 소스에서 데이터를 얻고 원본 데이터를 정제, 추출
청크 분할: 데이터를 청크로 나눔, 언어 모델 입력 한계 때문에 가능한 작은 텍스트 청크를 생성해야하며 검색 과정에서 모델이 처리할 수 있는 데이터의 양을 최적화
임베딩 및 인덱스 생성: 텍스트를 벡터로 인코딩, 계산된 벡터는 질문 벡터와 유사성을 계산하는 데 사용됨, 청크-임베딩을 키-값 쌍으로 저장


모듈과 기능을 통합하여 더 큰 다양성과 유연성 제공
검색 모듈, 메모리 모듈, 추가 생성 모듈, 태스크 적응 모듈, 정렬 모듈, 검증 모듈
모듈 추가 또는 교체, 모듈 간 조직적 흐름 조정을 통해 시스템 구성