목차
1️⃣ 검색 (Retrieval)
RAG의 가장 중요한 단계로, LLM이 정확한 정보 출처를 찾아 환각 현상을 해결하는 핵심 과정이다.
🔹 검색(Retrieval)의 핵심 목표
- LLM이 사용자 질문에 대한 올바른 정보를 찾는 과정
- 임베딩(Embedding) 값의 유사도를 이용하여 적절한 정보를 검색
- 정확한 검색을 통해 LLM이 환각 없이 신뢰성 높은 답변을 생성할 수 있도록 지원
🔹 RAG의 검색 과정

- 사용자 질문을 벡터(임베딩)로 변환
- 일반적으로 BERT, Sentence Transformers, OpenAI Embedding 등의 모델을 사용하여 텍스트를 고차원 벡터로 변환한다.
- 문서 데이터도 동일한 방식으로 벡터화
- RAG에서 사용할 문서 데이터는 미리 벡터(임베딩)로 변환하여 벡터 데이터베이스(Vector DB)에 저장됨.
- 벡터 유사도 검색 수행
- 사용자의 질문을 변환한 임베딩과 가장 유사한 문서 임베딩을 검색하여, 해당 문서를 추출함.
- 이 과정에서 코사인 유사도(Cosine Similarity), 최근접 이웃 검색(kNN), ANN(Approximate Nearest Neighbors) 등의 방법이 사용됨.
🔹 검색 성능을 결정하는 주요 요소
-
임베딩 모델 선택
- 검색 성능을 높이려면 좋은 임베딩 모델을 선택해야 함.
- 임베딩 모델의 성능이 높을수록 사용자 질문과 문서 간의 유사도를 더욱 정확하게 계산할 수 있음.
🔹 주요 임베딩 모델 비교
오픈 소스 여부 |
기업 |
모델 |
최대 입력 길이(토큰) |
❌ Closed Source |
OpenAI |
text-embedding-3-small / large / ada-002 |
8,191 |
❌ Closed Source |
Cohere |
embed-english-v3.0 / embed-multilingual-v3.0 |
512 |
✅ Open Source |
Mistral |
SFR-Embedding-Mistral |
32,769 |
✅ Open Source |
Voyage AI |
voyage-lite-02-instruct |
4,000 |
✅ Open Source |
MS, Contextual AI, 홍콩대 |
GritLM-7B |
32,768 |
🔹 임베딩 모델 선택 시 고려해야 할 점
- 사용자가 한국어 질문을 하는 경우, 다국어(multi-lingual) 모델이나 한국어 특화 모델을 선택해야 함.
- 예를 들어, 한국어 검색이 필요하면 "KoBERT", "KorQuAD 기반 모델" 등의 한국어 지원 모델이 유리함.
-
검색 문서의 형태
- 검색된 문서를 어떻게 처리할 것인지 결정하는 것도 중요함.
- 문서의 청크(chunk) 크기와 문장 길이를 조정하는 것이 성능에 영향을 미침.
- 짧은 문장 단위로 검색하면 문맥이 부족할 수 있음.
- 긴 문서 단위로 검색하면 정확성이 떨어질 수 있음.
2️⃣ 증강 (Augmentation)
검색된 정보를 LLM에 전달하기 위해 사용자의 질문과 검색된 문서를 하나의 프롬프트로 조합하는 과정.