AI VIDEO BRIEFING
RAG 검색 증강 생성 입문: 벡터 데이터베이스와 임베딩으로 LLM 환각 줄이기
RAG는 LLM이 학습 데이터 대신 외부 문서를 검색해 답하게 만드는 기술이다. 임베딩, 벡터 데이터베이스, 시맨틱 검색의 작동 원리와 실습 파이프라인을 정리했다.

핵심 메시지
쉽게 이해하기
영상은 ChatGPT에 회사 내부 매출처럼 학습되지 않은 정보를 물으면 "맥락이 없다"고 하거나 잘못된 답을 지어낸다는 점에서 출발한다. 같은 도커 오류를 ChatGPT에 붙여넣으면 모호하게 틀린 답이 나오지만, 도커 공식 문서 기반 AI에 물으면 출처를 제시하며 정확히 답한다. 이 차이를 만드는 것이 바로 RAG다.
RAG는 모델이 학습한 내용에만 의존하지 않고 문서·PDF·데이터베이스·API 같은 외부 소스에서 관련 데이터를 가져와 답을 생성하게 한다. 발표자는 일본 정보가 담긴 텍스트 파일과 로컬 임베딩 모델(ollama의 nomic-embed-text)을 이용한 예제로, 일본 관련 질문에는 파일 내용으로 답하고 쿠버네티스나 인도의 수도처럼 문서에 없는 질문에는 "정보가 없다"고 답하는 모습을 보여준다.
LLM은 텍스트를 직접 이해하지 못하고 벡터만 이해한다. 입력은 토큰화를 거쳐 토큰으로 쪼개지고, 다시 숫자 배열인 벡터(임베딩)로 변환된다. 벡터의 차원 수는 모델마다 다른데, 예로 nomic-embed-text는 768차원, OpenAI의 text-embedding-3-small은 1,536차원, 3-large는 3,072차원이라고 설명한다.
RAG 구성에서는 일반 LLM 설정에 벡터 데이터베이스가 추가된다. 내부 문서를 임베딩 모델로 벡터화해 저장하고, 사용자 질문도 벡터로 바꿔 저장된 벡터들과 시맨틱 검색(가장 가까운 벡터 찾기)을 수행한 뒤, 찾은 맥락을 LLM에 넘겨 답을 만든다. 벡터 데이터베이스로는 Pinecone, Weaviate, Milvus 등이 있고 Postgres도 벡터 저장소로 쓸 수 있다.
후반부 실습은 가상의 TechCorp 시나리오에서 Chroma DB와 임베딩 모델(all-MiniLM, 384차원)로 사내 문서를 청크 단위로 나누고 임베딩해 저장한 뒤, 질문에 대해 시맨틱 검색을 수행하고 Flask 웹 UI로 질의응답하는 전 과정을 단계별로 보여준다. "강아지를 사무실에 데려와도 되나" 같은 질문에 반려동물 정책 문서를 출처로 답하는 식이다.
주요 인사이트
- RAG의 핵심 가치는 모델이 모르는 영역에서 그럴듯하게 지어내는 대신, 실제 문서를 근거로 답하고 출처를 제시한다는 점이다.
- 임베딩 차원이 클수록 데이터 표현이 풍부하지만 검색 비용도 늘어나므로, 모델 선택은 정확도와 효율의 균형 문제다.
- 문서를 통째로 넣지 않고 청크 단위로 쪼개 임베딩하면 검색 정확도와 속도를 높일 수 있다.
- 키워드 검색에서 시맨틱 검색으로 넘어가면, 표현이 달라도 의미가 비슷한 내용을 찾아낼 수 있다(예: "반려동물 허용"과 "강아지 가능"의 유사도가 높게 나옴).
- 특별한 인프라 없이도 로컬 LLM(ollama)과 오픈소스 벡터 저장소만으로 개인 컴퓨터에서 RAG 파이프라인을 구성할 수 있다.
자주 묻는 질문
RAG는 일반 ChatGPT 사용과 무엇이 다른가?
일반 LLM은 학습된 공개 데이터에만 의존하지만, RAG는 질문 시점에 외부 문서·PDF·데이터베이스에서 관련 내용을 검색해 그 맥락을 근거로 답을 생성한다. 그래서 내부 문서나 최신 정보에 대해 더 정확하게 답하고 환각을 줄일 수 있다.
문서는 어떻게 벡터 데이터베이스에 저장되나?
벡터 데이터베이스는 파일을 그대로 저장하지 못하므로, 임베딩 모델로 문서를 벡터(숫자 배열)로 변환해 저장한다. 사용자의 질문도 같은 방식으로 벡터화한 뒤 저장된 벡터들과 시맨틱 검색을 수행한다.
시맨틱 검색이란 무엇인가?
키워드가 정확히 일치하는지를 보는 대신, 벡터 간 거리로 의미가 가장 가까운 내용을 찾는 방식이다. 단어가 달라도 의미가 유사하면 관련 문서로 검색된다.
원문과 출처
이 글은 원본 영상의 자막을 바탕으로 한국어 독자를 위해 요약했습니다. 전체 맥락과 최신 정보는 원문에서 확인하세요.
YouTube 원본 영상 보기 ↗