RAG란 Ratriveal-Augment Generation의 약자로
Retriveal : 검색
Augment : 증강
Generation : 생성
검색증강생성으로 LLM 모델의 출력을 최적화하여 응답을 생성하기 전에 학습 데이터 소스 외부의 신뢰할 수 있는 지식 베이스를 참조하도록 하는 프로세스이다.

먼저, LLM은 주어진 맥락에 맞는 다음 문장을 확률적으로 추정하여 생성하는 방식이다.
LLM은 추정하여 생성하기 때문에 자연스럽게 Hallucination(환각)현상이 발생할 수 있다.
또한, 사용자가 구체적이고 최신의 응답을 기대할 때 오래되었거나 일반적인 정보를 제공하고, 신뢰할 수 없는 출처로부터 응답을 생성한다.
이때, LLM을 리디렉션하여 신뢰할 수 있는 사전 결정된 지식 출처에서 관련 정보를 검색하고 출력해주는 것을 RAG라고 일컫는다.
해당 단계에서 Vector DB 구성(indexing),입력 쿼리 처리(processing),쿼리에 따른 데이터 검색(searching)을 진행한다.
Indexing(데이터 준비하기)
Processing(사용자 쿼리 처리하기)
Searching(쿼리와 적합한 청크 검색하기)
벡터 디비 종류
대부분 LangChain에서 지원한다(Elasticsearch,Pinecone, ChromaDB, Milvus 등이 있다.)
해당 단계에서 검색된 정보를 기반으로 LLM이 응답을 생성하는 과정이다.
예시
아이폰 15 프로맥스와 아이폰 16 프로가 뭐가 다른거야?
→ 질문 임베딩과 문서들의 임베딩 유사도 비교
→ 가장 유사한 아이폰 15 프로맥스, 아이폰 16 프로 가이드 문서를 반환
→ RAG : LLM 프롬프트에 추가하여 답변 생성 (제원, 특징,구조 등)
→ Recommendation : 해당 상품 혹은 문서 그대로 전달
기본 RAG보다 더 정교한 검색 및 생성 기법을 적용하여 응답의 정확도와 신뢰성을 높이는 향상된 RAG 기법이다.
Multi-Query Retrieval : 쿼리를 여러 개의 버전으로 세분화 후 각각의 검색을 모두 수행함으로서 더 정교한 결과를 얻는다.
Hybrid Search : Lexical, Sematic 두 검색 결과를 모두 고려하여 searching
등등의 방법으로 성능을 개선해 사용자에게 신뢰도 높은 예측 결과를 제공한다.