<aside>
🎯 2주차 목표 : 프롬프트 엔지니어링 기법 공부
</aside>
프롬프트 엔지니어링 가이드 – Nextra
1. 프롬프트 설계의 기본 원칙
-
명확성과 간결성:
- 프롬프트는 명확하고 간결해야 합니다. 모델이 명확한 지시사항을 이해하고 따를 수 있도록 간단하게 작성해야 합니다.
날씨를 물어보는 질문을 작성해줘.
-
컨텍스트 제공:
- 모델에게 필요한 배경 정보를 제공하면 더 정확한 응답을 얻을 수 있습니다.
파리의 오늘 날씨를 알려줘.
-
예제 사용:
- 모델에게 원하는 형식을 예제로 제공하면 일관된 결과를 얻는 데 도움이 됩니다.
아래와 같은 형식으로 답해줘: "파리의 오늘 날씨는 맑고, 최고 기온은 25도입니다."
2. 프롬프트 엔지니어링 기법
-
Zero-shot Learning:
포도는 어떤 색인가요?
- Zero-shot Learning은 예제를 제공하지 않고 모델이 스스로 문제를 해결하게 하는 기법입니다. 이 방식은 모델이 훈련되지 않은 새로운 작업을 처리하는 데 유용합니다.
- 출처: **Brown, T. B., et al. (2020). Language Models are Few-Shot Learners.**URL: https://arxiv.org/abs/2005.14165
-
Few-shot Learning:
- Few-shot Learning은 모델에게 몇 가지 예제를 제공하여 특정 작업을 학습하게 하는 기법입니다. 예제를 통해 모델이 문제를 이해하고 일관된 방식으로 답변할 수 있습니다.
Q: 사과는 어떤 색인가요?
A: 빨강
Q: 바나나는 어떤 색인가요?
A: 노랑
Q: 포도는 어떤 색인가요?
A:
- Few-shot Learning을 사용할 때 중요한 점은 다양한 예제를 제공하여 모델이 여러 상황에서 유사한 방식으로 반응할 수 있도록 하는 것입니다.
- 출처: **Brown, T. B., et al. (2020). Language Models are Few-Shot Learners.**URL: https://arxiv.org/abs/2005.14165
-
Chain of Thought:
- Chain of Thought는 모델이 문제를 단계별로 해결할 수 있도록 유도하는 프롬프트를 설계하는 기법입니다. 이를 통해 복잡한 문제를 단계적으로 해결할 수 있습니다

삼각형의 넓이를 구하는 방법을 설명해줘.
첫 번째 단계로 밑변과 높이를 알아야 합니다.
두 번째 단계로 밑변과 높이를 곱합니다.
마지막으로 결과를 2로 나눕니다.
-
Self Consistency
모델의 일관성을 높이기 위해 여러 번 답변을 생성하고 최종 답변을 선택합니다.

-
Tree of Thought:
- Tree of Thought는 복잡한 문제를 해결하기 위해 여러 가지 해결 방안을 트리 구조로 나열하고, 각 가지의 가능성을 탐색하는 기법입니다.

- Tree of Thought는 다양한 해결 방안을 동시에 고려하고 평가하는 데 유용합니다.

-
Instruction Tuning:
- Instruction Tuning은 모델에게 특정 작업을 수행하기 위한 지시사항을 명확히 제공하는 기법입니다. 이는 모델이 다양한 작업을 수행하는 데 효과적입니다.
다음 문장을 영어로 번역해줘: "안녕하세요, 오늘 날씨가 어떻습니까?"
- Instruction Tuning은 명확한 지시사항을 제공하여 모델이 보다 정확한 작업을 수행할 수 있도록 합니다.
- 출처: **Sanh, V., et al. (2021). Multitask Prompted Training Enables Zero-Shot Task Generalization.**URL: https://arxiv.org/abs/2110.08207
-
Retrieval-Augmented Generation (RAG):
- RAG는 외부 지식 기반을 활용하여 모델이 더 정확하고 풍부한 응답을 생성하도록 하는 기법입니다. 모델이 질문에 답하기 위해 외부 데이터를 검색하고, 이를 기반으로 응답을 생성합니다.

- RAG는 모델이 최신 정보와 구체적인 데이터를 활용하여 보다 정확한 응답을 제공할 수 있도록 합니다.
- RAG는 두 가지 주요 컴포넌트로 구성됩니다
- 검색기 (Retriever): 질문에 관련된 문서를 외부 데이터베이스에서 검색합니다.
- 생성기 (Generator): 검색된 문서를 기반으로 응답을 생성합니다.
- 출처: **Lewis, P., et al. (2020). Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks.**URL: https://arxiv.org/abs/2005.11401
<aside>
💡 소감
RAG가 워낙 트렌드라서 적용해보고 싶었는데, 데이터베이스를 구현해야하거나 오픈 RAG를 사용해야하는데, 적격한 데이터가 없어서 구현은 어렵다고 판단했다. 우선 few-shot learning이라던가 cot같은 기본 테크닉들을 적용시켜보고 업그레이드 시켜나가면서 RAG를 적용하도록 해야겠다.
</aside>