AI VIDEO BRIEFING
벡터 데이터베이스 입문 — 임베딩·내적·유클리드 거리로 유사도 검색하는 원리 이해하기
전통적인 SQL 테이블에 벡터 열을 더하는 방법부터 내적 기반 유사도와 유클리드 거리의 정렬 방향 차이, 단어·문장 임베딩, 근사 최근접 이웃 검색까지 벡터 데이터베이스의 작동 원리를 손으로 그리며 쉽게 설명한다.

핵심 메시지
쉽게 이해하기
강연은 SQL로 animals 테이블을 만들고 ID·이름·크기·개체수 같은 열을 정의하는 기본 복습에서 출발한다. 여기에 특별한 Vector 데이터 타입의 embedding 열을 추가하는데, 벡터는 숫자의 나열이므로 길이(예: 3)를 지정해 저장한다. 레코드를 넣을 때 각 동물에 대응하는 벡터 표현(예: dog은 2,1,0)을 함께 삽입하는 것이 전통적 데이터베이스와의 유일한 차이다.
핵심은 '관련성'을 정의하는 두 방식이다. 두 원의 겹침으로 보는 유사도와 중심 사이 선분으로 보는 거리다. 유사도는 겹칠수록 값이 크므로 내림차순으로 정렬해 상위를 뽑고, 거리는 가까울수록 값이 작으므로 오름차순으로 정렬한다. SQL의 확장 문법에서 내적(dot product)은 유사도로 내림차순, L2(유클리드) 거리는 오름차순으로 ORDER BY 하는 식으로 구현된다. 정렬 방향을 반대로 쓰면 가장 관련 없는 레코드가 먼저 나오는 실수가 생긴다.
내적은 두 벡터의 각 원소를 곱해 더한 값으로, 유사도의 좋은 추정치가 된다. 발표자는 이를 행렬 곱셈으로 시각화하는 방식을 선호하는데, 이는 동물이 수만 개로 늘어나도 확장 가능하기 때문이다. 예로 dog·cat의 내적은 4로 cat·bat의 내적 2보다 크며, 철자만 비슷한 bat보다 의미가 가까운 dog이 더 높은 유사도를 갖는 것이 우리가 원하는 결과다.
이어 임베딩의 품질을 다룬다. 같은 dog을 두 가지 방식으로 표현했을 때, 원하는 쌍별 유사도 패턴(dog-cat은 높고 나머지는 낮음)에 더 가까운 임베딩이 더 좋은 것이다. 머신러닝은 이 목표에 맞춰 임베딩 숫자를 계속 갱신하며 개선하고, 실제로는 허깅페이스 등에서 잘 학습된 임베딩을 내려받아 쓴다. 여러 단어 벡터를 문장 하나로 합칠 때는 연결보다 같은 차원의 평균을 취하는 방식이 확장성 때문에 선호된다.
마지막으로 검색과 트랜스포머를 짚는다. 쿼리 벡터와 모든 레코드의 내적/거리를 구해 상위 K개를 고르는 것이 KNN인데, 수백만 건에서는 전수 스캔이 비현실적이라 근사 최근접 이웃(ANN) 알고리즘으로 일부만 훑어 빠르게 찾는다. 또한 단순 평균 대신 트랜스포머로 '위치 간'과 '특징 간' 정보를 결합(어텐션)해 더 풍부한 임베딩을 만든 뒤 문장 벡터로 합치는 과정을 5분 요약으로 보여준다.
주요 인사이트
- '유사도'와 '거리'는 정렬 방향이 정반대다. 내적 유사도는 내림차순, 유클리드 거리는 오름차순으로 정렬해야 한다.
- 전통적 텍스트 검색은 철자가 비슷한 것을 찾아주지만(cat→bat), 벡터 검색은 의미 공간에서 개념이 가까운 것을 찾아준다(cat→dog).
- 내적을 행렬 곱셈으로 이해하면 동물이 수만 개로 늘어도 한 번에 계산할 수 있어 확장성이 생긴다.
- 임베딩의 '좋고 나쁨'은 원하는 쌍별 유사도 패턴에 얼마나 가까운지로 판단하며, 머신러닝이 그 방향으로 숫자를 갱신한다.
- super-linq 같은 상위 API는 내부적으로 올바른 SQL을 생성해주지만, 그 아래에는 결국 대량의 내적과 임베딩 연산이 깔려 있다.
자주 묻는 질문
벡터 데이터베이스는 전통적 SQL 데이터베이스와 무엇이 다른가?
기본 구조는 같고, 테이블에 정해진 길이의 벡터를 담는 Vector 타입의 embedding 열이 추가된 점이 다르다. 레코드를 넣을 때 각 항목의 벡터 표현을 함께 저장하고, 이 열을 이용해 의미 기반 검색을 수행한다.
유사도와 거리로 검색할 때 정렬 방향은 어떻게 다른가?
유사도는 두 벡터가 많이 겹칠수록 값이 크므로 내적을 내림차순으로 정렬해 상위를 뽑는다. 반대로 거리(유클리드/L2)는 가까울수록 값이 작으므로 오름차순으로 정렬한다. 방향을 반대로 쓰면 가장 관련 없는 결과가 먼저 나온다.
여러 단어의 임베딩을 하나의 문장 임베딩으로 어떻게 합치나?
단어 벡터들을 이어 붙이는 연결(concatenate) 방식도 있지만 토큰이 많아지면 확장성이 떨어진다. 그래서 같은 차원을 유지하며 벡터들의 평균을 취하는 방식을 주로 쓰고, 더 정교하게는 트랜스포머로 위치·특징 정보를 결합한 뒤 합친다.
원문과 출처
이 글은 원본 영상의 자막을 바탕으로 한국어 독자를 위해 요약했습니다. 전체 맥락과 최신 정보는 원문에서 확인하세요.
YouTube 원본 영상 보기 ↗