LLM의 작동 원리: 토큰, 확률, 프롬프트로 이해하기
토큰화, 확률 분포, 사전학습과 추론 과정을 통해 LLM이 문장을 만들어내는 방법을 쉽게 설명합니다.
한눈에 보는 LLM
LLM은 ‘강력한 자동완성’에 가깝습니다. 사용자가 문장을 시작하면, 모델이 그다음을 아주 작은 조각(토큰) 단위로 채워 넣어 완성합니다. 토큰은 보통 단어의 일부 조각이며, 모델은 사전에 방대한 텍스트를 읽고 “보통 다음엔 무엇이 오는지”에 대한 감각을 익혔습니다. 그래서 질문을 받으면 다음 조각, 또 다음 조각을 고르며 답이 완성될 때까지 이어갑니다.
graph LR
A[사용자 입력] --> B[토큰화]
B --> C{다음 토큰 예측}
C -- 1: 확률 계산 --> D[확률 분포]
D -- 2: 토큰 선택 --> E[새 토큰 생성]
E --> F{답변 완성?}
F -- N --> C
F -- Y --> G[디코딩]
G --> H[최종 답변 출력]
생성 품질을 좌우하는 요소
세 가지 간단한 생각으로 대부분 설명됩니다.
- 얼마나 대담하게 말할지: Temperature나 Top‑p 같은 설정은 안전하게(자주 보던 표현) 혹은 창의적으로(낯선 표현) 답하게 만듭니다.
- 얼마나 많이 기억할지: 모델의 ‘단기 기억’은 제한적입니다. 입력이 길면 요약이나 가지치기가 필요할 수 있습니다.
- 무엇을 실제로 아는지: 모델은 웹을 직접 보지 못하고, 학습 당시 정보만 기억합니다. 최신 정책·사실이 없으면 그럴듯하게 지어낼 수 있어, 신뢰할 수 있는 컨텍스트를 같이 주는 게 중요합니다.
mindmap
root((생성 품질 요소))
대담함
Temperature
Top-p
기억력
컨텍스트 윈도우
요약/가지치기
지식 범위
학습 시점 제한
최신 정보 부족
RAG와의 접점
RAG는 LLM이 답변하기 전에 관련 문서를 검색해 컨텍스트로 제공함으로써, 지식 한계와 환각 문제를 줄입니다. 즉, "모르는 걸 찾아보고" 답하게 만드는 구조입니다.
sequenceDiagram
participant User as 사용자
participant Retriever as 검색기(Retriever)
participant LLM as LLM
User->>Retriever: 질문 입력
Retriever->>Retriever: 관련 문서 검색
Retriever->>LLM: 검색 결과 전달
LLM->>User: 컨텍스트 기반 답변 생성
모델을 떠올리는 쉬운 비유
모델 내부는 거대한 ‘패턴 맞추기’ 기계입니다. 사용자가 준 말을 과거에 봤던 패턴과 비교해 가장 가능성 높은 다음 말을 고릅니다. 여러 개의 ‘하이라이터’가 문장 속 중요한 부분을 표시해 주제를 벗어나지 않게 돕는다고 상상해도 좋습니다.
graph LR
A[사용자 입력] --> B[패턴 비교: 과거 데이터와 대조]
B --> C{가장 가능성 높은 다음 말 선택}
C --> D[하이라이터: 중요한 부분 강조]
D --> E[주제 유지 & 문맥 연결]
E --> F[최종 문장 완성]
style A fill:#fdf5e6,stroke:#333,stroke-width:1px
style B fill:#e6f7ff,stroke:#333,stroke-width:1px
style C fill:#fff5e6,stroke:#333,stroke-width:1px
style D fill:#f0ffe6,stroke:#333,stroke-width:1px
style E fill:#f9e6ff,stroke:#333,stroke-width:1px
style F fill:#e6ffe9,stroke:#333,stroke-width:1px
왜 가끔 틀릴까
대표 이유는 두 가지입니다.
- 빈칸을 추측으로 메움: ‘단기 기억’에 정보가 없으면, 그럴듯한 세부를 지어낼 때가 있습니다.
- 지식이 오래됨: 학습 이후 생긴 사실은 모릅니다. 제공하지 않으면 최신 상황을 반영할 수 없습니다.
더 나은 답을 얻는 간단한 요령
다음 네 가지만 기억해도 품질이 올라갑니다.
- 원하는 형식·길이·톤을 구체적으로 적기
- 따라 하기 쉬운 예시·스니펫 함께 주기
- 정책·사실 등 관련 정보를 붙여 추측을 줄이기
- “정보가 없으면 모른다고 말하라”고 솔직함 장려