벡터 데이터베이스Vector Database
숫자 묶음을 가까운 것끼리 찾도록 보관한 저장소
- 벡터 데이터베이스는 숫자 묶음을 넣어 두고 가장 가까운 것들을 빠르게 꺼내 주는 저장소예요.
- 일반 데이터베이스가 똑같은 값을 찾는다면, 여기는 가장 비슷한 값을 찾아요. 질문과 글자가 하나도 안 겹쳐도 찾아내요.
- 전부 다 재 보지 않아요. 미리 비슷한 것끼리 구역으로 묶어 두고 관련 있는 구역만 뒤져요.
- 그래서 답이 아주 조금 어긋날 수 있어요. 정확도를 조금 내주고 속도를 크게 얻는 거래예요.
- AI가 사내 문서나 매뉴얼을 참고해 답하게 만드는 구조에서 자료를 꺼내 오는 자리를 맡아요.
목차
1비유로 이해하기
냉장고를 열었을 때 오이가 어디 있는지 아는 사람은 문을 열자마자 채소칸으로 손이 가요. 위 칸부터 아래 칸까지 다 뒤지지 않아요. 채소는 채소끼리, 반찬은 반찬끼리, 음료는 음료끼리 모아 뒀으니까 그 칸만 열어 보면 되거든요. 벡터 데이터베이스는 이렇게 비슷한 것끼리 칸을 지어 놓은 냉장고예요.
칸을 나눠 둔 덕분에 물건이 아무리 많아져도 찾는 시간이 크게 늘지 않아요. 냉장고가 두 배로 커져도 채소칸 하나만 보면 되니까요. 반대로 아무렇게나 쌓아 뒀다면 물건이 늘어난 만큼 뒤지는 시간도 그대로 늘어나요.
다만 칸을 믿고 한 칸만 열었다가 옆 칸에 들어간 오이를 놓칠 수도 있어요. 빠른 대신 아주 가끔 놓치는 게 이 방식의 성격이에요.
2자세히 알아보기
같은 것이 아니라 가까운 것을 찾아요
우리가 흔히 쓰는 데이터베이스는 조건이 정확히 맞는 줄을 찾아와요. 이름이 "김"으로 시작하는 사람, 가격이 만 원 이하인 상품처럼요. 글자가 한 자라도 다르면 못 찾아요.
벡터 데이터베이스는 다르게 물어요. "이 숫자 묶음과 가장 가까운 것 열 개를 다오"라고 하죠. 그러니 "환불 규정"으로 저장된 문서를 "돈 돌려받으려면 어떻게 하나요"라는 질문으로 찾아낼 수 있어요. 두 글의 임베딩이 가까운 자리에 있으니까요.
찾은 결과에는 순위와 함께 얼마나 가까운지를 나타내는 점수가 붙어요. 이 점수를 보고 너무 먼 것은 버리도록 걸러 낼 수 있어요.
전부 재 보지 않고 구역부터 좁혀요
저장된 항목이 백만 개라면, 질문 하나마다 백만 번 거리를 재는 건 너무 느려요. 그래서 넣을 때 미리 비슷한 것끼리 묶어 지도를 만들어 둬요. 이웃끼리 길을 이어 놓은 그물망을 만들어 두고, 검색할 때는 아무 지점에서 출발해 더 가까운 이웃으로만 계속 옮겨 가며 목적지 근처까지 가는 방식이 널리 쓰여요.
이 방식은 전부 재 보는 것보다 수십 배에서 수백 배 빨라요. 대신 진짜 1등을 아주 가끔 놓쳐요. 그래서 이런 검색을 "가까운 것을 대충 정확하게 찾는다"는 뜻으로 부르고, 얼마나 꼼꼼히 돌아볼지를 손잡이로 조절할 수 있게 해 놨어요. 꼼꼼히 볼수록 정확해지고 느려져요.
넣기 전에 잘라서 숫자로 바꿔요
문서를 통째로 넣지는 않아요. 긴 문서 하나를 통째로 숫자 묶음 하나로 만들면 내용이 뭉개져서 무엇에 관한 글인지만 남고 세부 내용이 사라져요.
그래서 문서를 문단이나 절 단위로 잘게 나눈 다음, 조각마다 임베딩을 만들어 저장해요. 조각을 너무 잘게 나누면 앞뒤 맥락이 끊기고, 너무 크게 나누면 초점이 흐려져요. 이 크기를 정하는 일이 실제 성능을 크게 좌우해요.
조각마다 원문, 출처, 작성일 같은 정보를 함께 붙여 둬요. 나중에 답에 출처를 달아 주거나 오래된 문서를 제외하려면 이 정보가 필요해요.
조건 걸기와 함께 써요
뜻으로 찾는 것만으로는 부족할 때가 많아요. "작년 이후 문서 중에서", "이 부서 자료 중에서"처럼 조건을 걸어야 하는 경우요. 그래서 대부분의 벡터 데이터베이스는 함께 저장해 둔 정보로 미리 범위를 좁힌 뒤 그 안에서 가까운 것을 찾는 기능을 갖고 있어요.
낱말이 정확히 일치하는지 보는 옛 방식과 섞어 쓰기도 해요. 제품 번호나 사람 이름처럼 글자 그대로 맞아야 하는 것은 뜻으로 찾는 방식이 오히려 약하기 때문이에요. 두 방식의 결과를 합쳐 순위를 다시 매기는 구성이 실무에서 흔해요.
어디에 쓰이나요
가장 많이 쓰이는 자리는 AI에게 우리 자료를 참고시켜 답하게 만드는 구조예요. 질문이 들어오면 먼저 벡터 데이터베이스에서 관련 문단을 몇 개 꺼내고, 그 문단을 질문과 함께 모델에 넣어 답을 만들게 해요. 모델이 배우지 않은 사내 규정이나 최신 자료를 다룰 수 있게 되는 거예요.
비슷한 상품이나 글을 추천하는 자리, 거의 같은 내용의 중복 문서를 찾아내는 자리, 사진으로 사진을 찾는 자리에도 같은 구조가 쓰여요.
3조금 더 정확하게
벡터 데이터베이스는 고차원 벡터를 저장하고 최근접 이웃 검색을 제공하는 시스템이에요. 전부 비교하는 대신 근사적으로 찾는 방식을 쓰는데, 이웃끼리 여러 층의 그물망으로 연결해 두는 방식과 공간을 여러 구역으로 나눠 두는 방식이 대표적이에요.
닮은 정도는 보통 코사인 유사도나 거리로 재요. 어떤 척도로 색인을 만들었는지와 검색할 때 쓰는 척도가 같아야 결과가 맞아요. 별도 제품을 쓰기도 하고, 기존 데이터베이스에 벡터 기능을 얹어 쓰기도 해요.
비유가 어긋나는 지점도 있어요. 냉장고 칸은 사람이 "여기는 채소"라고 정해 놓은 자리지만, 벡터 데이터베이스의 구역은 숫자 사이의 거리로 자동으로 갈려요. 사람이 보기에 한 종류인 것들이 여러 구역에 흩어져 있을 수도 있어요. 또 냉장고에서 꺼낸 오이는 오이가 맞지만, 벡터 검색이 꺼내 온 문단은 질문과 방향이 비슷할 뿐 정답을 담고 있다는 보장이 없어요.
4직접 해보기
5흔한 오해
벡터 데이터베이스가 답을 만들어 준다고 생각하기 쉽지만, 실제로는 관련 있어 보이는 자료를 꺼내 줄 뿐이고 답을 쓰는 건 언어 모델이에요.
검색 결과가 언제나 가장 가까운 것들이다라고 여기기 쉽지만, 실제로는 속도를 얻기 위해 근처만 둘러보기 때문에 진짜 1등을 가끔 놓쳐요.
자료를 넣어 두면 모델이 그걸 배운다고 생각하기 쉽지만, 실제로는 모델은 그대로이고 질문할 때마다 자료를 다시 찾아 넣어 주는 것뿐이에요.
7한 줄 요약
그러니까벡터 데이터베이스는 비슷한 것끼리 칸을 지어 둔 냉장고처럼, 뜻이 가까운 자료를 빠르게 꺼내 주는 저장소예요.
잘못된 내용이나 더 좋은 비유가 있나요? 수정 제안 보내기 · 마지막 수정2026-09-02