AI VIDEO BRIEFING

벡터 검색과 RAG 원리 완벽 이해: 임베딩과 코사인 유사도로 관련 문서를 찾아 답변 만들기

언어 모델은 수많은 문서 중 질문과 관련된 부분을 어떻게 찾을까? 컴퓨터파일 영상이 문장을 임베딩해 벡터 공간에 배치하고 코사인 유사도로 의미가 가까운 문서를 검색해 RAG로 답변을 만드는 과정을 예제로 설명한다.

벡터 검색으로 RAG의 문서 찾기: 임베딩과 코사인 유사도의 원리 영상 대표 이미지

핵심 메시지

  • 벡터 검색은 문장이나 문단을 임베딩(숫자 벡터)으로 바꿔, 의미가 비슷한 문서를 빠르게 찾아내는 기술이다.
  • 검색-증강 생성(RAG)은 수천~수백만 개의 문서에서 질문과 관련된 조각만 골라 프롬프트에 넣어 답변 품질을 높인다.
  • 유사도는 두 벡터의 각도를 재는 코사인 유사도로 측정하며, 벡터의 길이(크기)는 무시하고 방향만 본다.
  • 임베딩 모델은 대조 학습으로 훈련되어, 오탈자나 어순이 흐트러진 질문에도 의미가 가까운 문서를 찾아낸다.
  • 문맥 안에서만 답하도록 프롬프트를 설계하면 모델이 "모른다"고 답할 수 있어 근거 없는 답을 줄인다.

쉽게 이해하기

컴퓨터파일(Computerphile) 영상은 현대 챗봇이 답을 찾을 때 쓰는 벡터 검색을 설명한다. 앞선 검색-증강 생성(RAG) 영상에서는 위키백과 문서 전체를 프롬프트에 그냥 밀어 넣었지만, 회사 문서가 수만 건이라면 그렇게 할 수 없다. 이때 질문에 도움이 될 문서 조각을 골라내는 방법이 바로 벡터 검색이다.

핵심 아이디어는 얼굴 인식과 비슷하다. 얼굴을 신경망으로 임베딩 공간에 배치해 가까우면 같은 사람으로 보듯, 문장이나 문단도 언어 모델로 임베딩해 공간의 한 점으로 만든다. "하늘은 왜 파란가?"라는 질문과 "레일리 산란 때문"이라는 문장은 의미가 비슷해 서로 가까운 곳에, 관계없는 "자전거는 보통 바퀴가 둘"이라는 문장은 멀리 떨어진 곳에 놓인다.

유사도는 코사인 유사도, 즉 두 벡터 사이의 각도로 측정한다. 벡터의 길이는 무시하고 방향만 보기 때문에 잡음에 강하다. 영상 실험에서 두 산란 관련 문장의 거리는 0.2로 가까웠고, 자전거 문장과의 거리는 0.94로 거의 정반대에 가까웠다. 임베딩은 보통 128~500개 정도의 숫자로 이뤄지며, 사람이 읽을 수는 없지만 벡터 사이의 거리와 각도가 의미를 담는다.

실제 예제로 발표자는 170쪽짜리 NIST 암호 키 관리 문서를 약 800토큰 단위로 겹치게 잘라(청킹) 각 조각을 임베딩한 뒤 Chroma 벡터 데이터베이스에 저장한다. "대칭 키 래핑 키의 권장 사용 주기는?"이라고 질의하면 코사인 유사도로 가장 가까운 10개 조각을 찾아, 그 텍스트를 Mistral 7B 모델의 프롬프트에 넣어 답을 만든다.

프롬프트에는 "주어진 문맥 안의 정보만으로 답하고 외부 지식은 쓰지 말라"고 지시한다. 그래서 문서에 없는 "하늘은 왜 파란가?"를 물으면 모델은 문맥에 그 정보가 없다고 솔직히 답한다. 발표자는 이것이 언어 모델이 "모를 때 모른다고 말하게" 만드는 실마리라고 강조한다. 근거 데이터와 비교하게 하면 없는 답을 지어내는 대신 없다고 답하기가 쉬워지기 때문이다.

주요 인사이트

  • 벡터 검색의 진짜 힘은 정확히 일치하지 않아도 된다는 점이다. 오탈자, 문법 오류, 심지어 서툰 외국어로 물어도 의미가 가까우면 올바른 문서를 찾는다.
  • 코사인 유사도로 크기 대신 방향을 보는 이유는 출력 벡터가 유난히 길어지는 잡음을 제거해, 단지 표현이 커졌다는 이유로 엉뚱한 문서와 묶이는 일을 막기 위해서다.
  • 문서를 겹치게 청킹하는 이유는 중요한 사실이 조각 경계에서 반토막 나는 것을 막기 위함이다. 청크 크기와 겹침 정도는 조정 가능한 설계 요소다.
  • 벡터 비교(최근접 탐색) 자체는 매우 빠르다. 비용이 큰 부분은 문서를 한 번 임베딩해 저장하는 준비 과정이며, 이후 검색은 순식간에 끝난다.
  • 모델이 "모른다"고 답하도록 만드는 일은 균형이 필요하다. 너무 자주 모른다고 하면 아무도 쓰지 않으므로, 근거 문맥이 있을 때만 신중히 거절하도록 설계하는 것이 실용적이다.

자주 묻는 질문

벡터 검색과 RAG는 어떤 관계인가?

RAG는 질문과 관련된 문서를 찾아 프롬프트에 넣어 답변을 만드는 방식이고, 벡터 검색은 그 "관련 문서 찾기" 단계를 담당한다. 수많은 문서 중 의미가 가까운 조각을 골라내는 검색 엔진 역할을 한다.

왜 거리 대신 코사인(각도)으로 유사도를 재는가?

코사인 유사도는 벡터의 길이를 무시하고 방향만 비교한다. 이렇게 하면 표현이 커져서 벡터가 길어지는 잡음의 영향을 줄여, 의미가 비슷한 문장을 더 안정적으로 묶을 수 있다.

모델이 문서에 없는 질문을 받으면 어떻게 되는가?

영상 예제에서는 "문맥 안의 정보만으로 답하라"는 프롬프트를 썼기 때문에, 문서에 없는 질문에는 해당 정보가 없다고 솔직히 답한다. 근거와 비교하게 하면 답을 지어내는 대신 없다고 말하기가 쉬워진다.

원문과 출처

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

YouTube 원본 영상 보기 ↗

관련 AI 소식