AI VIDEO BRIEFING
RAG 검색증강생성 실습 가이드: 임베딩과 프롬프트 앞의 프롬프트로 병원 챗봇 만드는 3단계
검색증강생성(RAG)이 실제로 어떻게 동작하는지 코드 예시로 풀어봅니다. 패스스루 프롬프트, 지시 추가, 임베딩 기반 문서 검색까지 3단계로 병원 챗봇을 만드는 과정을 예제와 함께 차근차근 정리했습니다.

핵심 메시지
쉽게 이해하기
이 영상은 검색증강생성(RAG)을 이론이 아니라 실제 코드로 한 단계 더 깊이 보여 준다. 예시는 병원(미국 케임브리지 헬스 얼라이언스)이 환자용 챗봇을 만들어 '주차 되나요' 같은 질문에 답하게 하는 상황이다. 진행은 주피터 노트북 환경에서 셀 단위로 코드를 실행하며 이뤄진다.
1단계는 '패스스루 프롬프트'다. 사용자가 입력한 말을 그대로 대형 언어모델에 넘기고 답을 받는다. 예컨대 '휴가 때 배관이 얼지 않게 하려면 집 온도를 몇 도로 둘까'라는 질문에 모델은 '섭씨 약 13도(화씨 55도)'라고 답한다. 여기서는 gpt-3.5-turbo 같은 빠르고 저렴한 모델을 사용자 역할로 호출한다.
2단계는 '프롬프트 앞의 프롬프트'로 지시를 한 겹 얹는다. 사용자는 자신의 질문만 보지만, 코드는 시스템 역할로 '너는 도우미이고 8살 아이에게 말하듯 답하라' 같은 지시를 추가한다. 그러면 같은 질문에도 어린이용 문체나 시적인 문체 등 원하는 방식으로 답이 바뀐다. 아직 RAG는 아니지만 사용자 발화 너머의 정보를 코드가 공급한다는 점이 핵심이다.
3단계가 진짜 RAG다. 병원 웹사이트 7,509개 페이지 각각을 임베딩, 즉 그 페이지의 본질을 나타내는 숫자 목록(이 모델에서는 1,536개 실수)으로 바꾼다. 질문도 임베딩으로 바꾼 뒤, 두 벡터의 내적으로 거리를 계산해 질문과 가장 가까운 상위 4개 페이지를 고른다. 임베딩은 CSV와 피클 파일로 저장하는데, 임베딩이 원문 텍스트보다 더 클 정도로 용량이 크다.
고른 4개 페이지의 텍스트를 하나로 이어 붙여 맥락으로 삼고, '케임브리지 헬스 얼라이언스를 1인칭으로 지칭해 이 맥락에 근거해 답하라'는 지시와 질문을 함께 모델에 보낸다. 그 결과 '네, 주차 가능합니다. 정문은 서머빌 레볼루션 드라이브, 홈디포 맞은편에 있습니다' 같은 구체적 답이 나온다. LLM 특성상 실행할 때마다 답이 조금씩 달라진다.
주요 인사이트
- RAG는 마법이 아니라 '질문과 가장 가까운 내 문서를 찾아 프롬프트에 끼워 넣는' 절차다. 벡터 임베딩은 의미가 비슷한 문장일수록 서로 가까운 위치의 숫자 목록이 되고, 내적 값이 가장 큰(가장 가까운) 페이지가 답에 필요한 근거가 된다.
- '프롬프트 앞의 프롬프트'라는 관점이 유용하다. 사용자는 자기 질문만 보지만 개발자는 문체·언어·역할 같은 지시와 검색된 맥락을 뒤에서 붙여 답의 품질과 톤을 제어할 수 있다.
- 임베딩 생성은 페이지 하나당 1초 미만이지만 7,000여 개를 모두 처리하면 시간이 걸리므로, 미리 계산해 CSV·피클로 저장해 두고 질의 시점에는 질문 임베딩만 새로 만들어 비교하는 방식이 실용적이다.
- 이런 RAG 파이프라인의 뼈대는 약 30~40줄 코드에 불과하다. 대형 언어모델이라는 강력한 엔진에 자신의 콘텐츠를 얹기만 하면, 복잡한 학습 없이도 도메인 특화 챗봇을 만들 수 있다.
자주 묻는 질문
'프롬프트 앞의 프롬프트'란 무엇인가?
사용자가 입력한 질문 앞이나 뒤에 개발자가 코드로 덧붙이는 지시와 맥락을 뜻한다. 예를 들어 '8살 아이에게 답하듯 하라'는 문체 지시나 검색으로 찾은 관련 문서를 붙이는 것으로, 사용자는 이를 보지 못한 채 자기 질문만 인식한다.
RAG에서 관련 문서를 어떻게 찾나?
모든 문서와 질문을 각각 임베딩(숫자 벡터)으로 바꾼 뒤, 질문 벡터와 각 문서 벡터의 내적으로 거리를 계산한다. 값이 가장 큰, 즉 의미가 가장 가까운 상위 몇 개(예시에서는 4개) 문서를 골라 맥락으로 사용한다.
같은 질문인데 답이 매번 다른 이유는?
RAG로 맥락을 고정해도 대형 언어모델 자체에 무작위성이 있어 실행할 때마다 표현이 조금씩 달라진다. 영상에서도 동일한 주차 질문에 매번 조금씩 다른 문장으로 답이 생성됐다.
원문과 출처
이 글은 원본 영상의 자막을 바탕으로 한국어 독자를 위해 요약했습니다. 전체 맥락과 최신 정보는 원문에서 확인하세요.
YouTube 원본 영상 보기 ↗