AI VIDEO BRIEFING

RAG 완전 정복: 임베딩·벡터 DB·청킹으로 내 PDF와 대화하는 AI 만들기

거대언어모델이 모르는 내 문서를 읽고 정확히 답하게 하는 RAG의 원리를 임베딩·벡터 데이터베이스·청킹으로 풀어내고, PDF와 대화하는 앱을 만드는 과정을 정리했다.

내 문서를 읽고 답하는 AI 만들기: RAG를 처음부터 끝까지 만들어 보는 실습 영상 대표 이미지

핵심 메시지

  • RAG(검색증강생성)는 AI에게 모든 것을 외우게 하는 대신, 답하기 직전에 내 데이터를 검색해 근거로 삼게 하는 기법이다.
  • 핵심 개념은 세 가지다: 텍스트를 의미가 담긴 숫자 목록으로 바꾸는 임베딩, 그 숫자를 유사도로 검색하는 벡터 데이터베이스, 문서를 적당한 크기로 쪼개는 청킹.
  • RAG는 문서를 미리 잘라 임베딩해 저장하는 오프라인 파이프라인과, 질문이 들어올 때마다 검색·생성하는 온라인 파이프라인으로 나뉜다.
  • 검색한 본문만 근거로 답하라고 프롬프트로 제약하면, 모델이 지어내는 환각(hallucination)을 막을 수 있다.
  • 임베딩·벡터DB·청킹만 이해하면 PDF 업로드 후 질문하는 챗봇을 비교적 적은 코드로 직접 구현할 수 있다.

쉽게 이해하기

챗GPT 같은 거대언어모델은 특정 시점까지의 데이터로 학습되기 때문에 그 이후의 일이나 내 회사 문서는 알지 못하고, 때로는 틀린 답을 자신 있게 내놓는다. 영상은 이것이 버그가 아니라 모델의 작동 방식 자체라고 설명하며, 답하기 직전에 내 문서를 검색해 근거를 제공하는 RAG로 이 한계를 보완할 수 있다고 말한다.

RAG를 오픈북 시험에 비유한다. 교과서를 통째로 외울 필요 없이, 필요한 페이지를 빠르게 찾아 읽고 좋은 답을 쓰면 된다는 것이다. AI는 내 문서에서 관련된 조각(chunk)을 찾아 그 자리에서 읽고, 이를 바탕으로 근거 있는 답을 생성한다. 고객지원 봇, 법률 문서 검색, 내 메모를 기억하는 '제2의 뇌' 등이 실제 활용 사례로 제시된다.

첫 번째 핵심은 임베딩이다. 컴퓨터는 단어가 아니라 숫자만 이해하므로, 모든 텍스트를 의미가 비슷하면 숫자도 비슷해지도록 좌표(숫자 목록)로 바꾼다. 거대한 지도 위에서 'happy'와 'joyful'은 가깝고 'king'과 'pizza'는 멀리 떨어져 있다고 비유한다. 영상의 실습에서 비슷한 두 문장은 유사도 점수 약 0.56을, 전혀 다른 문장은 약 0.05를 기록해 임베딩이 의미를 수치로 포착함을 보여준다.

두 번째는 벡터 데이터베이스다. 일반 데이터베이스가 정확히 일치하는 값을 찾는다면, 벡터DB는 숫자가 가장 가까운 조각들을 유사도로 찾아준다. 영상은 학습용으로 별도 설치나 계정 없이 로컬에서 동작하는 ChromaDB를 사용하고, 실제 운영 환경에서는 Pinecone·Weaviate·PGVector 등을 쓴다고 소개한다.

세 번째는 청킹이다. 임베딩 모델은 한 번에 처리할 수 있는 텍스트 양에 한계가 있고, 100쪽 PDF를 통째로 임베딩하면 검색 시 불필요한 내용까지 끌려와 답이 나빠지고 비용도 커진다. 그래서 문서를 작은 조각으로 나누되, 한 조각당 대략 300~500토큰을 권장한다. 또한 문장이 조각 경계에서 잘리지 않도록 앞뒤 조각이 일부 텍스트를 공유하는 '오버랩'을 둔다.

영상은 이론을 코드로 옮긴다. OpenAI의 text-embedding-3-small로 문장을 1536개 숫자로 임베딩하고, 내적(dot product)으로 유사도를 계산해 보인다. 이어 하드코딩한 다섯 문장으로 ChromaDB에 저장→질문 임베딩→유사 조각 검색→GPT에 근거와 함께 전달해 답을 받는 최소 RAG를 구현한다. 마지막에는 PyMuPDF로 PDF 텍스트를 추출하고 오버랩을 둔 청킹·배치 임베딩으로 ChromaDB에 색인한 뒤, FastAPI 백엔드와 Streamlit 채팅 UI로 'PDF와 대화하는' 완성형 앱까지 만든다.

주요 인사이트

  • RAG의 본질은 '기억'이 아니라 '검색'이다. 모델 파라미터에 지식을 욱여넣는 대신, 답변 시점에 외부 데이터를 끌어와 근거로 삼기 때문에 최신성과 정확성을 동시에 확보할 수 있다.
  • 유사도 검색은 키워드 일치가 아니다. '얼마나 반품할 수 있나'라는 질문과 '30일 이내 반품 가능'이라는 문서는 겹치는 단어가 없어도, 임베딩 공간에서 의미가 가까워 검색된다.
  • 청크 크기는 RAG 품질을 좌우하는 핵심 결정이다. 너무 작으면 맥락이 사라지고 너무 크면 잡음이 섞인다. 정답은 없지만 300~500토큰과 약간의 오버랩이 실용적 출발점이다.
  • 환각 방지는 모델이 아니라 설계의 문제다. '주어진 맥락 안에서만 답하고 없으면 모른다고 말하라'는 프롬프트 제약이 임의 생성 답변을 막는다.
  • 운영을 위한 배치 임베딩, 메타데이터(출처·페이지) 저장, 검색된 조각을 사용자에게 보여주는 출처 표시는 신뢰할 수 있는 AI 앱을 만드는 실무적 장치다.

자주 묻는 질문

RAG는 무엇의 약자이고 한 문장으로 어떤 개념인가?

RAG는 검색증강생성(Retrieval Augmented Generation)의 약자로, AI에게 모든 것을 외우게 하지 않고 답하기 직전에 내 데이터를 검색하게 해 그 근거로 답을 생성하는 기법이다.

임베딩이란 무엇인가?

텍스트를 의미가 담긴 숫자 목록(벡터)으로 바꾼 것이다. 핵심은 의미가 비슷한 텍스트일수록 숫자도 비슷해지도록 만들어져, 거대한 지도 위 좌표처럼 비슷한 단어가 가까이 위치한다는 점이다.

왜 문서를 통째로 임베딩하지 않고 청킹을 하는가?

임베딩 모델은 한 번에 처리할 수 있는 텍스트 양에 한계가 있고, 큰 문서를 통째로 넣으면 검색 시 불필요한 내용까지 끌려와 답이 나빠지고 토큰 비용도 커지기 때문이다. 그래서 작은 조각으로 나눠 필요한 부분만 검색한다.

영상은 어떤 도구로 RAG를 구현하는가?

임베딩에는 OpenAI의 text-embedding-3-small, 벡터 저장에는 로컬에서 동작하는 ChromaDB, PDF 텍스트 추출에는 PyMuPDF, 백엔드에는 FastAPI, 채팅 UI에는 Streamlit을 사용한다.

원문과 출처

이 글은 원본 영상의 자막을 바탕으로 한국어 독자를 위해 요약했습니다. 전체 맥락과 최신 정보는 원문에서 확인하세요.

YouTube 원본 영상 보기 ↗

관련 AI 소식