카테고리 없음
RAG 구현시 고려사항 : (2) RAG 아키텍처 구성요소
데이터 쿡북
2025. 7. 11. 13:23
1. Query Embedding (임베딩 모델)
역할: 사용자의 질문을 의미 벡터로 변환하여 검색에 활용할 수 있게 합니다.
- 대부분의 RAG 시스템은 Dense Embedding을 사용합니다. (ex. text-embedding-ada-002, bge, E5 등)
- 문장의 의미적 유사성을 보존하는 것이 핵심.
- 문서 인덱싱 시에도 같은 모델로 임베딩하여 저장합니다.
임베딩 모델 선택 시 고려사항:
항목설명
다국어 지원 | 한국어, 영어 등 대상 언어 지원 여부 |
성능 | semantic similarity 기준의 평가 (e.g. MTEB, BEIR) |
토큰 제한 | 문서 단위 처리 가능 여부 |
라이선스 | 상용 사용 가능 여부 (OpenAI vs 오픈소스) |
2. Retriever (벡터 검색기)
역할: 벡터화된 쿼리와 벡터 DB에 저장된 문서 임베딩 간의 유사도를 계산하여 관련성이 높은 상위 K개 문서를 반환합니다.
주요 구성 요소:
- Vector Store: 문서 벡터가 저장된 데이터베이스
- Similarity Metric: L2 거리, Cosine 유사도 등
- Indexing 구조: Flat, IVF, HNSW 등
대표 기술 스택:
기술설명
FAISS | 빠르고 유연한 오픈소스 라이브러리 |
Weaviate | REST API 기반, 필터링 기능 강력 |
Pinecone | 클라우드 기반 관리형 서비스 |
Milvus | 대규모 엔터프라이즈 검색에 적합 |
고급 옵션:
- Filtering by metadata: 날짜, 문서 타입, 권한 등에 따라 검색 제한 가능
- Hybrid Retrieval: Dense + BM25 혼합
3. Prompt 구성기 (Context Formatter)
역할: 검색된 문서를 LLM이 잘 이해할 수 있도록 포맷팅합니다.
주요 고려사항:
- 문서 수 제한: LLM context window 제한 (예: GPT-4는 최대 128K tokens)
- 문서 순서: 유사도 기준 정렬 / 최신순 / 우선도 기반
- 문서 구분자 삽입: 각 문서 간 경계를 명확히
- Query Rewriting (선택): 검색 시의 질문과 응답 생성 시 질문을 분리 설계 가능
예시 Prompt 구조:
text
복사편집
[Question] 대한민국의 대통령은 누구입니까? [Context] 1. 윤석열은 2022년 대한민국의 대통령으로 선출되었습니다. 2. 대통령은 국가원수이며 행정부 수반입니다. [Instruction] 위 정보를 바탕으로 질문에 정확히 답하세요.
4. Generator (LLM)
역할: 검색된 문서(Context)를 바탕으로 사용자의 질문에 답을 생성합니다.
핵심 기능:
- Context-aware generation
- 정보 통합 및 자연어 표현
- 근거 기반 응답 생성 (Faithful Generation)
고려할 요소:
항목설명
Context 길이 | 긴 문맥을 얼마나 잘 처리하는지 |
Fact-groundedness | 실제 문서 기반으로 응답 생성 가능 여부 |
비용 | 호출당 토큰 단가 및 응답 시간 |
통합 전략 | Prepend 방식, Chain-of-Thought 방식 등 |
사용 예시:
모델특징
GPT-4 / GPT-4o | 높은 정밀도와 컨텍스트 이해력 |
Claude 3 | 긴 context 대응 우수 |
LLaMA 3 | 오픈소스 환경에 적합 |
🧠 전체 흐름 요약
단계주요 기능
Query Embedding | 사용자 질문을 의미 벡터로 변환 |
Retriever | 의미 유사한 문서 Top-k 검색 |
Prompt 구성 | 문서들을 LLM 입력 형식으로 정제 |
Generator | 문서 기반으로 자연어 응답 생성 |
✅ 핵심 인사이트
- RAG는 단순히 검색과 생성을 이어붙이는 것이 아닙니다.
- 각 구성요소가 정확하게 설계되고 연결되어야 성능이 극대화됩니다.
- 특히 "어떤 임베딩을 쓰는가", "검색된 문서를 어떻게 LLM에 넣을 것인가"가 실제 결과의 품질을 크게 좌우합니다.
[AI를 활용해 작성되었습니다.]
[공감 버튼이 큰 힘이 됩니다]