AI/RAG 이론
RAG 구현시 고려사항 : (4) 프롬프트 설계 및 Generator 고려사항
데이터 쿡북
2025. 7. 11. 13:32
4. 프롬프트 설계 및 Generator 고려사항
RAG 시스템에서 Retriever가 문서를 잘 가져오더라도, LLM이 그 문서를 정확히 이해하고 활용할 수 있도록 프롬프트를 잘 구성하는 것이 매우 중요합니다.
이 섹션에서는 프롬프트 템플릿 구성, 문서 삽입 전략, 그리고 Generator 선택 시 고려해야 할 점을 자세히 설명합니다.
✅ 1. 프롬프트 설계의 중요성
프롬프트 설계는 단순한 질문 전달이 아닌, 다음 역할을 수행합니다:
역할설명
문맥 주입 | 검색된 문서를 LLM이 이해할 수 있게 연결 |
정보 정제 | 중복 제거, 길이 조절 등 |
행동 유도 | 응답 형식/목표를 명확히 지시 (Instruction Prompting) |
✅ 2. 프롬프트 구성 전략
📌 기본 구조 예시:
[사용자 질문] - 대한민국 대통령은 누구입니까? [문서 컨텍스트] - 문서1: 윤석열은 2022년 대한민국 대통령으로 선출되었습니다. - 문서2: 대한민국의 대통령은 국가원수이자 행정부 수반입니다. [지시사항] - 위 문서를 기반으로 정확하고 간결하게 답하세요. |
📋 설계 고려사항:
항목전략
문서 순서 | 유사도 기준 정렬 or 최신순 |
구분자 삽입 | 각 문서를 명확히 나눠서 GPT가 혼동하지 않도록 |
컨텍스트 길이 제한 | LLM의 최대 context window 고려 (예: GPT-4 = 128K) |
질문 분리 | 검색용 쿼리 vs 생성용 질문 분리도 고려 |
✅ 3. Generator (LLM) 선택 시 고려사항
📌 주요 평가 기준:
항목설명
컨텍스트 수용량 | 얼마나 많은 문서를 넣을 수 있는가 (8K~128K) |
정확도 | 검색된 문서를 기반으로 사실적 응답 생성 능력 |
추론 속도 | 응답 대기시간 (latency) |
비용 | 토큰 단가, 호출 수 등에 따른 비용 구조 |
📊 주요 모델 비교:
모델특징
GPT-4o | 고정밀 + 긴 컨텍스트 + 빠른 응답 |
Claude 3 | 최대 200K context 지원, 긴 문서에 적합 |
LLaMA 3 | 오픈소스 활용 가능, 경량 추론에 유리 |
Gemini 1.5 | 멀티모달 + 긴 context 지원 (텍스트+이미지) |
✅ 4. 프롬프트 최적화 기법
기법설명
Instruction Prompting | "다음 문서에 기반해 정확히 응답하세요" 같은 지시어 사용 |
Few-shot Prompting | 예시 응답을 함께 제시 |
Chain-of-Thought (CoT) | 단계적 추론 유도: “먼저 문맥을 요약하고, 그 후 정답을 도출하라” 등 |
Context Compression | 문서 요약 모델을 사전 적용해 token 수 절감 |
📦 실전 적용 예시
query = "삼성전자 창립일은 언제인가요?" docs = ["삼성전자는 1969년에 설립되었으며...", "삼성은 1969년 수원에서..."] prompt = f""" 질문: {query} 참고 문서: 1. {docs[0]} 2. {docs[1]} 위 문서를 바탕으로 질문에 정확히 응답해주세요. """ response = openai.ChatCompletion.create( model="gpt-4o", messages=[{"role": "user", "content": prompt}] ) |
🧠 팁: 프롬프트 테스트 자동화
- 다양한 문장 구조, 문서 조합, 프롬프트 템플릿을 A/B 테스트해보는 것이 중요합니다.
- LangChain PromptTemplate, LlamaIndex PromptHelper 같은 유틸 도구를 활용해 템플릿 자동화를 추천합니다.
📌 요약
항목핵심 요점
Prompt 구성 | 문서와 질문을 자연스럽게 연결하는 템플릿 구성 |
문서 제한 | context 길이 내에서 요약 또는 선택 적용 필요 |
LLM 선택 | context 길이, 정확도, 비용 균형 고려 |
전략 기법 | Instruction, CoT, Compression 등 응답 품질 개선법 존재 |
[AI를 활용해 작성되었습니다]