LLM 기반 서비스나 시스템 구축 시 프롬프트 엔지니어링은 필수적인 요소입니다. 초기에는 프롬프트 엔지니어링, 파인 튜닝, RAG 등이 별개의 기술로 인식되었지만, 현재는 이들을 적절히 조합하여 사용하는 것이 최적의 방법으로 여겨지고 있습니다.
실제 현업에서는 다양한 NLP 작업마다 최적의 프롬프트 엔지니어링 기법을 선택하는 것이 큰 도전과제입니다. 이 과정은 대부분 여러 기법을 시도해 보거나 기존에 구축 경험에 의존하며, 이는 휴리스틱(Heuristic) 접근법의 특성을 잘 보여줍니다. 절대적인 최선의 방법은 없으며, 상황에 따라 '충분히 좋은' 해결책을 찾는 것이 목표입니다.
시행착오를 통해 최적의 방법을 찾아가며, 절대적으로 최고의 프롬프트 엔지니어링 기법이 있다고 보장할 수 없고 그저 상황에 따라 '충분히 좋은' 해결책으로서 프롬프트 엔지니어링 기법을 찾으며, 대부분의 프롬프트 엔지니어링 기법이 실험과 경험을 통해서 발견되고 개선되고 있으며, 때로는 직관에 기반한 프롬프트 설계가 좋은 결과를 가져오기도 하기 때문에 휴리스틱(Heuristic) 접근법을 기반으로 LLM 구축하기 위해 필요한 프롬프트 엔지니어링 기법을 찾는다고 할 수 있습니다.
이 논문은 이러한 현실적인 어려움에 대한 해답을 제시합니다. 수학 문제 해결, 논리적 추론, 문맥기반 질문 답변, 대화 시스템, 자유 응답 등 29가지의 NLP task에 대해서 Chain-of-Thought (CoT), Self-Consistency, Ensemble Refinement (ER) 등 39개의 프롬프트 엔지니어링 기법 중 어떤 것이 적합한지를 테스트하여 최고 성능의 프롬프트 기법을 제시한 논문입니다.
사실 39가지 프롬프트 엔지니어링 기법 자체를 제대로 구현하는 것은 매우 어려운 일이지만, 이 논문을 통해서 적어도 장님 코끼리 만지기를 벗어나서 시작점을 잡을 수 있을 것 같습니다. 막연히 해본 기법 중에서 방법을 찾는 것이 아니라 해결해야 하는 NLP task에 가장 최적의 프롬프트 엔지니어링 기법이 무엇인 참고할 수 있다는 점에서 이 논문은 매우 흥미롭습니다.
논문에서는 NLP 작업에 대한 정의, 관련 데이터셋 목록, 해당 작업에 적용된 프롬프트 기법들, 각 데이터셋에 대한 최고 성능(SoTA) 프롬프트 기법, 사용된 언어 모델 목록 등에 대한 정보를 제공하면서, 각 NLP 작업에 대한 표를 제공하여 데이터셋, 프롬프트 기법, 사용된 언어 모델, 최고 성능 기법을 요약하여 제공하고 있습니다.
이 연구는 LLM 개발자나 연구자들에게 LLM 기반 서비스나 시스템을 구축할 때, 특정 NLP 작업에 대해 어떤 프롬프트 기법을 시도해 볼지에 대한 명확한 지침을 제공하기 때문에 개발 시간을 단축시키고, 더 효율적인 LLM 시스템 구축을 가능하게 할 것입니다.
연구자의 노력에 경의를 표합니다.