모델은 내 문서를 모른다 — 그래서 붙여준다
Article
지금까지 두 강에 걸쳐 던져둔 문제가 있다. 14강 — 파인튜닝은 새 지식을 넣어주는 단계가 아니다. 15강 — 컨텍스트 윈도우는 한 번에 담을 수 있는 양이 유한하다. 두 문제를 합치면 결론은 하나다. 모델은 우리 회사 사내 위키도, 어제 올라온 문서도 모른다. 애초에 그런 걸 배운 적이 없기 때문이다.
이번 강의부터 5부가 시작된다. 이 문제를 어떻게 푸는지, 그 첫 그림을 연다.
왜 다시 학습시키면 안 되나
가장 먼저 떠오르는 방법은 "그럼 우리 문서로 다시 학습시키면 되잖아"다. 이론적으로는 가능하지만, 실무에서는 거의 쓰지 않는다.
문서를 통째로 재학습·파인튜닝
매번 새로 굽는다
- 문서가 하나 바뀔 때마다 다시 학습이 필요하다
- 14강에서 본 그 비용 · 시간이 매번 든다
- 무엇을 근거로 답했는지 추적하기 어렵다
필요한 문서만 그때그때 붙여주기
질문이 올 때 창에 끼워 넣는다
- 문서가 바뀌면 그 문서만 교체하면 된다
- 재학습 비용이 들지 않는다
- "이 문서를 보고 답했다"는 근거를 남길 수 있다
정답은 모델의 머릿속(가중치)을 고치는 게 아니라, 질문할 때마다 필요한 문서를 컨텍스트 윈도우 안에 직접 끼워 넣어주는 것이다. 15강에서 본 그 창을 다시 떠올리면 된다 — 창 안에 있는 글은 모델이 실시간으로 참고할 수 있으니, 학습을 거치지 않고도 "지금 이 순간만" 새 정보를 알려줄 수 있다.
- 사용자가 질문한다"이번 분기 환불 정책이 뭐야?"
- 관련 문서를 찾는다사내 위키·매뉴얼 중 이 질문과 관련된 부분을 먼저 찾아온다
- 찾은 문서를 컨텍스트 윈도우에 끼워 넣는다16강에서 본 그 창 — 질문과 함께 문서 내용도 창에 채운다
- 모델이 그 문서를 근거로 답한다학습된 적 없어도, 지금 창 안에 있으니 참고해서 답할 수 있다
관건은 "관련 문서를 어떻게 찾아오나"다
이 그림에서 가장 중요한 단계는 두 번째다. 회사 문서가 수천 개인데, 그중 지금 질문과 관련된 몇 개를 어떻게 정확히 골라내는가.
단순히 문서에 질문 속 단어가 그대로 있는지 찾는 방식(옛날 검색엔진의 방식)으로는 부족하다. "환불"이라고 안 쓰고 "돈 돌려받는 법"이라고 쓴 문서도 찾아야 하기 때문이다. 단어가 같지 않아도 의미가 비슷한 문서를 찾아야 한다.
| 상황 | 이 방식으로 되나 |
|---|---|
| 회사 내부 문서에 있는 사실을 물어본다 | 된다 — 관련 문서를 찾아 창에 붙여주면 그걸 근거로 답한다 |
| 문서에 아예 없는 내용을 물어본다 | 안 된다 — 붙여줄 문서 자체가 없으니 여전히 모른다 |
| 문서가 수천 개라 어떤 게 관련 있는지 찾기 어렵다 | "의미가 비슷한 문서 찾기"가 따로 필요하다 — 18 · 19강 |
정리하면
모델은 학습 안 된 문서를 원래 모른다. 다시 학습시키는 대신, 질문이 올 때마다 관련 문서를 찾아 컨텍스트 윈도우에 직접 끼워 넣어 답하게 만든다. 관건은 그 "관련 문서 찾기"를 단어가 아니라 의미로 하는 것이다.
- 01
모델은 학습 데이터에 없는 문서를 모른다
14강의 그 한계가 여기서 실무 문제로 이어진다.
- 02
문서가 바뀔 때마다 재학습하는 건 현실적이지 않다
대신 질문이 올 때마다 필요한 문서를 창에 끼워 넣는다.
- 03
이 흐름 전체를 RAG 라 부른다
검색해서(Retrieval) 답을 보강(Augmented)해 생성한다(Generation)는 뜻이다.
- 04
핵심 난제는 관련 문서를 의미로 찾는 것이다
단어가 같지 않아도 뜻이 비슷한 문서를 찾아야 한다. 다음 강의(임베딩)에서 이 문제를 연다.
다음 강의에서는 "의미가 비슷한 문서를 어떻게 컴퓨터가 찾아내는가"를 연다. 문장을 숫자 좌표로 바꾸는 임베딩이 그 답이다.