LLM 엔지니어링12장 · 멀티모달 RAG 와 데이터셋 자동 생성9 / 22← 이전목차다음 →MetaContents

12장. 멀티모달 RAG 와 데이터셋 자동 생성

데이터 기반 LLM 파인튜닝

시험 공부에는 두 가지 방법이 있습니다. 오픈북 시험처럼 필요할 때 책을 찾아보는 방법과, 미리 외워 두는 방법입니다. RAG 는 찾아보기이고, 미세조정은 외워 두기입니다. 우리 회사 문서로 작은 모델을 미세조정하는 것이 데이터 기반 파인튜닝입니다.

문서에서 찾아 보여 주는 RAG 와, 문서로 만든 문제로 미리 가르치는 미세조정을 견준 두 카드

왼쪽 RAG 는 질문마다 문서에서 조각을 찾아 모델에게 보여 줍니다. 문서가 바뀌면 색인만 고치면 됩니다. 오른쪽 미세조정은 문서로 만든 질문-답으로 모델을 미리 가르칩니다. 답할 때 문서가 없어도 되지만, 문서가 바뀌면 다시 가르쳐야 합니다. 여기서 오픈북이 RAG, 외워 두기가 미세조정입니다.

언제 무엇을 쓰나

견줄 것RAG미세조정
자주 바뀌는 사실(값, 날짜)잘 맞는다다시 가르쳐야 한다
말투, 답의 꼴, 분야 용어프롬프트로 일부만잘 맞는다
근거(출처) 보이기쉽다어렵다
답할 때 드는 것검색 + 긴 프롬프트짧은 프롬프트
준비할 것문서와 색인질문-답 데이터셋(수십~수천 쌍)

둘은 함께 쓰기도 합니다. 미세조정으로 말투와 꼴을 맞추고, RAG 로 최신 사실을 붙입니다. 이 장의 프로젝트에서는 같은 시험 질문을 미세조정 전, 미세조정 뒤, RAG 로 물어 견줍니다.

학습 데이터 한 줄의 꼴

5장처럼 채팅 템플릿의 메시지 목록으로 적습니다.

Python
import json

record = {"messages": [
    {"role": "system", "content": "당신은 솔빛생활(가상 쇼핑몰)의 상담원입니다."},
    {"role": "user", "content": "선물 포장은 얼마예요?"},
    {"role": "assistant", "content": "선물 포장은 1,500원입니다."}],
    "출처": "적립금과 포장"}
print(json.dumps(record, ensure_ascii=False)[:120])

코드에 나오는 함수

코드쉬운 뜻
"messages": [...]대화를 차례대로 적은 메시지 목록이다. 5장의 채팅 템플릿과 같은 꼴이다
"role": "system"모델에게 주는 역할과 규칙이다. system 은 "시스템, 바탕 설정"이라는 뜻이다
"role": "user", "role": "assistant"user 는 사용자(고객)의 말, assistant 는 도우미(상담원)의 답이다
"출처": "적립금과 포장"이 쌍이 안내서의 어느 절에서 나왔는지 적은 메모 칸이다
json.dumps(record, ensure_ascii=False)사전을 JSON 글 한 줄로 바꾼다. ensure_ascii=False 는 한글을 부호로 바꾸지 않고 그대로 둔다
[:120]글의 앞 120 글자만 잘라 보인다

이 코드가 뜻하는 것

연극 대본 한 장면에는 무대 설명, 손님의 대사, 점원의 대사가 차례로 적혀 있습니다. 배우는 이런 장면을 여러 번 연습하며 점원의 말투와 대답을 익힙니다. 여기서 무대 설명이 system, 손님의 대사가 user, 점원의 대사가 assistant 이고, 장면 하나가 학습 데이터 한 줄입니다. 다만 배우는 대사를 그대로 외우지만, 모델은 비슷한 질문에 비슷한 꼴로 답하도록 배운다는 점이 다릅니다.

줄하는 일쉽게 말하면
{"role": "system", ...}상담원이라는 역할을 정한다무대 설명
{"role": "user", ...}고객의 질문손님의 대사
{"role": "assistant", ...}모델이 배울 답점원의 대사
"출처": ...어느 절에서 만든 쌍인지대본 귀퉁이의 메모
print(json.dumps(...)[:120])JSON 한 줄로 바꿔 앞부분을 보인다대본 첫머리를 읽어 본다

실행하면 {"messages": [{"role": "system", ... 로 시작하는 JSON 한 줄이 나오고, 120 글자에서 잘려 { 로 끝납니다. 이런 한 줄을 쌍마다 한 줄씩 파일에 쌓은 것이 학습 데이터 파일입니다. 실습 6은 출처 칸도 함께 저장합니다.

주의할 점

  • 작은 모델은 미세조정으로 사실을 외우게 해도 비슷한 다른 사실과 섞어 답하기 쉽습니다. 값이 중요한 답은 미세조정만 믿지 말고 RAG 나 확인 절차를 함께 둡니다.
  • 미세조정은 학습 데이터에 없는 사실을 만들어 주지 않습니다. 데이터에서 빠진 사실은 모델도 모릅니다(실습 6, 프로젝트).
← 이전 절12장 · 멀티모달 RAG 의 짜임다음 절 →12장 · 미세조정 데이터셋 자동 생성