| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
- APM
- Java
- LLM
- 티스토리챌린지
- 코틀린 코루틴의 정석
- 정보처리기사 실기 기출문제
- Kubernetes
- AI
- 공부
- Linux
- Pinpoint
- AWS EKS
- kotlin
- CKA
- CKA 기출문제
- CloudWatch
- PETERICA
- SRE
- kotlin coroutine
- 기록으로 실력을 쌓자
- Rag
- go
- 바이브코딩
- aws
- tucker의 go 언어 프로그래밍
- minikube
- 오블완
- Spring
- golang
- MySQL
- Today
- Total
피터의 개발이야기
[AI] Attention 메커니즘 — LLM은 어떻게 ‘중요한 정보’를 골라내는가 본문
[AI] LLM 학습 노트 공개 - Transformer부터 RAG까지, 그리고 운영 가능한 AI 시스템을 향해
ㅁ 들어가며
AI는 더 이상 “모델 호출”이 아니라
컨텍스트를 설계하고 운영하는 시스템이라는 생각이 들기 시작했다.
RAG를 구현하고, Retriever 품질을 튜닝하고, Embedding 모델을 비교하다 보면
어느 순간 다시 Transformer 구조로 돌아오게 된다.
그리고 그 중심에는 항상 Attention이 있다.
ㅁ 왜 Attention부터 다시 보게 되었나
처음에는 RAG 구현이 목적이었다.
하지만 파고들수록 느꼈다.
- Retriever 품질은 Embedding과 Chunking에서 결정되고
- RAG 성능은 VectorDB 튜닝과 Reranking에서 갈리며
- 최종 응답 품질은 결국 Transformer 구조와 Prompt 설계로 돌아온다
각각이 따로 존재하는 게 아니라, 하나의 파이프라인이었다.
그래서 Attention은 단순 이론이 아니라,
LLM 시스템 전체를 이해하기 위한 기본 운영 지식이 된다.
ㅁ Attention의 본질
Attention은 문장 안의 모든 토큰이 서로를 점수화하면서
“지금 무엇이 중요한가”를 계산하는 메커니즘이다.
각 토큰은 세 가지 벡터를 가진다.
- Query(Q): 내가 지금 찾고 싶은 정보
- Key(K): 나는 이런 정보를 갖고 있다
- Value(V): 실제 전달할 내용
현재 토큰의 Query가 모든 Key와 비교되고,
softmax로 가중치가 만들어진 뒤
그 가중치로 Value를 합산해 새로운 표현이 생성된다.
직관적으로 보면 이렇다.
각 단어가 문장 전체를 훑으면서
“지금 나에게 의미 있는 단어들”만 골라서 다시 조합한다.
이 과정이 모든 토큰에서 동시에 일어난다.
ㅁ Self-Attention — 입력 자체가 검색 대상이 된다
Self-Attention에서는 Query, Key, Value가 모두 같은 입력 시퀀스에서 나온다.
즉, 문장 자체가 데이터베이스가 된다.
이 구조는 RAG와 굉장히 닮아 있다.
- Query → 사용자 질문
- Key → 문서 인덱스
- Value → 실제 문서 내용
차이가 있다면, Self-Attention은 이걸 모델 내부에서 실시간으로 수행한다는 점이다.
그래서 나는 이렇게 이해하고 있다.
Attention 구조는 RAG 파이프라인의 축소판이다.
ㅁ Multi-Head Attention — 여러 관점의 병렬 해석
Attention을 하나만 쓰지 않고 여러 개를 병렬로 돌리는 이유는 단순하다.
하나의 관점으로는 언어를 충분히 설명할 수 없기 때문이다.
각 Head는 서로 다른 의미 공간에서 입력을 바라본다.
- 어떤 Head는 문법 관계
- 어떤 Head는 의미적 연관성
- 어떤 Head는 문장 흐름
결과적으로 Multi-Head는 일종의 feature ensemble처럼 동작한다.
Embedding을 여러 공간에서 동시에 뽑는 느낌에 가깝다.
ㅁ KV Cache와 O(n²) — 왜 컨텍스트가 비용이 되는가
Attention의 계산량은 토큰 수 n에 대해 O(n²)로 증가한다.
그래서 컨텍스트가 길어질수록:
- latency가 늘고
- 메모리 사용량이 급증한다
KV Cache는 이미 계산한 Key/Value를 저장해 재사용함으로써
디코딩 단계의 비용을 크게 줄이는 최적화 기법이다.
이걸 이해하면:
- 왜 long-context 모델이 비싼지
- 왜 p95 latency가 튀는지
- 왜 프롬프트 길이 관리가 중요한지
가 자연스럽게 연결된다.
ㅁ RAG 시스템에서 Attention이 의미하는 것
운영 관점에서 보면 더 명확하다.
- Chunk 품질은 Attention 입력 품질이다
- Retriever 품질은 Query 품질이다
- Prompt는 Decoder의 conditioning이다
즉,
잘못 쪼갠 문서 → 쓰레기 컨텍스트
부정확한 검색 → 흐릿한 Query
과도한 Prompt → Attention 낭비
모두 같은 문제의 다른 표현이다.
ㅁ 마무리
Attention은 단순한 알고리즘이 아니다.
정보 흐름을 설계하는 방식이다.
그래서 LLM은 더 이상 “모델 호출”의 문제가 아니라
컨텍스트 생성 → 정제 → 전달 → 재활용까지 포함한
하나의 운영 시스템이 된다.
내가 LLM을 다루면서 가장 크게 바뀐 관점은 이것이다.
AI는 모델이 아니라, 파이프라인이다.
그리고 그 파이프라인의 중심에 Attention이 있다.
'AI > AI이론 | 공부' 카테고리의 다른 글
| [AI] KV Cache — LLM은 어떻게 ‘생각의 흐름’을 기억하는가 (0) | 2026.02.05 |
|---|---|
| [AI] Transformer Encoder-Decoder 구조 - Attention 다음 단계, 메커니즘에서 시스템으로 (0) | 2026.02.03 |
| [AI] Backend · DevOps · SRE를 지나 AI Platform Engineer를 지향하게 된 이유 (0) | 2026.01.27 |
| [AI] RAG구성을 위한 FAISS란? (0) | 2026.01.14 |
| [AI] LLM 학습을 위한 큐레이션 허브(LLM Engineer Toolkit) (0) | 2026.01.13 |