본문 바로가기
푸닥거리

OpenAI Agent SDK 기반 RAG 구축

by ┌(  ̄∇ ̄)┘™ 2026. 7. 5.
728x90

LLM은 똑똑하지만 학습 시점 이후의 지식과 우리 회사의 내부 문서는 모릅니다. 이 한계를 메우는 대표적인 방법이 RAG(Retrieval-Augmented Generation, 검색 증강 생성)입니다. 이 글은 OpenAI Agent SDK 기반 RAG 구축 강의를 들으며 정리한 노트로, 밑바탕 개념(모델·가중치·임베딩)부터 RAG 파이프라인, 에이전트와의 결합까지 순서대로 정리합니다.

1. 바탕 개념 — 모델이란 무엇인가

신경망(NN)을 학습시키면 모델이 됩니다. 모델의 실체는 레이어라는 틀 + 가중치 값입니다. 아주 단순화하면 y = ax + b에서 a(가중치)를 데이터로 찾아가는 과정이 학습입니다.

목표: 입력에 2를 곱하는 규칙 학습
  3 × 2 = 6,  3 × 3 = 9   ← 정답 데이터
  가중치가 1이면: 1×2=2, 1×3=3 → 오차 발생
  → 오차가 줄어드는 방향으로 가중치를 반복 조정

이미지 분류라면 "그림 × 가중치 → 강아지"처럼, 학습된 가중치가 입력을 정답으로 매핑합니다. LLM(트랜스포머)도 원리는 같습니다 — "나는 학교에 ___ 간다"에서 빈칸에 올 확률이 높은 단어를 맞히도록 가중치를 학습한, 거대한 다음 단어 예측기입니다. 중요한 것은 이 가중치가 특정 시점까지의 학습 결과로 고정된다는 점입니다.

2. 새 지식을 넣는 두 가지 방법

학습 시점 이후의 데이터, 사내 문서 같은 "나의 새 데이터"를 모델이 다루게 하려면 두 갈래가 있습니다.

방법 비유 특징
파인튜닝(Fine-tuning) 공부시키기 — 가중치 자체를 추가 학습 비용·시간 큼, 데이터 갱신마다 재학습
RAG 오픈북 시험 — 참고자료를 옆에 제공 가중치 그대로, 문서만 바꾸면 즉시 최신화
강의의 핵심 비유: 파인튜닝은 학생을 다시 공부시키는 것, RAG는 시험장에 오픈북을 들려 보내는 것입니다. 지식이 자주 바뀌는 업무 문서에는 RAG가 압도적으로 실용적입니다.

3. 임베딩 — 자연어를 인공어로

RAG를 이해하려면 토큰과 임베딩을 구분해야 합니다.

  • 토큰(token): 문장을 잘게 쪼갠 조각. LLM 처리의 기본 단위.
  • 인코딩(Encoding): 각 토큰에 번호를 부여하는 것.
  • 임베딩(Embedding): 번호가 아니라 의미를 부여 — 토큰/문장을 고차원 벡터(숫자 배열)로 변환해, 의미가 비슷한 것끼리 벡터 공간에서 가깝게 놓이게 합니다. 자연어 → 인공어 번역인 셈입니다.

두 벡터가 얼마나 비슷한지는 코사인 유사도(cosine similarity)로 잽니다. 값이 1에 가까울수록 의미가 유사합니다. RAG 검색의 수학적 심장입니다.

 

728x90

4. RAG 파이프라인

준비 단계 (Indexing)

  1. Chunk: 문서를 적당한 크기의 조각으로 나눈다.
  2. 임베딩: 각 조각을 벡터로 변환한다.
  3. 벡터 스토어 저장: 벡터 DB에 넣어 검색 가능한 "준비 상태"로 만든다.

질의 단계 (Retrieval + Generation)

  1. 사용자 질문을 같은 임베딩 모델로 벡터화한다.
  2. 벡터 스토어의 기존 chunk들과 코사인 유사도로 비교해 가장 관련 있는 조각들을 찾는다.
  3. 찾은 조각을 질문과 함께 LLM에 넣어(오픈북) 답을 생성한다.

5. Agent SDK와의 결합 — LLM이 스스로 판단하는 RAG

OpenAI Agent SDK를 쓰면 RAG가 "항상 실행되는 고정 절차"가 아니라 에이전트가 필요할 때 꺼내 쓰는 도구가 됩니다.

  • 지침(instructions)이나 agent.md 같은 규칙 파일로 에이전트의 행동 방침을 정의하고,
  • 사용자 질문이 들어오면 LLM이 스스로 판단해 — 내부 지식으로 답할지, RAG(벡터 검색 도구)에 질의할지 결정합니다.
  • 검색이 필요하면 질문을 임베딩해 벡터 스토어에서 유사 chunk를 찾아오고, 그 근거로 답을 생성합니다.
정리하면: RAG는 검색(Retrieval)으로 근거를 가져와 생성(Generation)을 보강하는 구조이고, Agent SDK는 그 검색을 "언제 할지"까지 LLM에게 맡기는 오케스트레이션 층입니다. 문서가 바뀌면 벡터 스토어만 갱신하면 되므로, 파인튜닝 없이도 항상 최신 지식으로 답하는 시스템을 만들 수 있습니다.

아래는 강의 중 캡처한 자료 화면입니다.

728x90

댓글