벡터 데이터베이스란 무엇인가?

빠른 답변

벡터 데이터베이스는 AI 모델이 의미를 표현하기 위해 만들어내는 숫자 목록, 즉 임베딩을 저장했다가 질의와 가장 가까운 항목을 밀리초 단위로 돌려주도록 만들어진 데이터베이스입니다. 문서 기반 채팅과 의미 검색에서 검색 단계를 담당합니다. 텍스트 전체를 모델에 그대로 보낼 수 없을 만큼 클 때 필요합니다.

벡터 데이터베이스는 질문 하나에 아주 빠르게 답한다

숫자 목록을 주면 저장된 목록 중 가장 가까운 것을 돌려줍니다. 인터페이스는 그게 전부입니다.

이 숫자 목록이 임베딩입니다. 임베딩 모델은 문단, 상품 설명, 이미지를 수백에서 수천 개의 숫자로 바꾸는데, 비슷한 의미가 서로 가까이 놓이도록 배치합니다. AI에서 임베딩이란 무엇인가에서 그 방식을 다룹니다. 벡터 데이터베이스는 그런 목록이 많이 쌓였을 때 그것들이 머무는 곳입니다. 각 목록을 ID와 메타데이터와 함께 저장하고, 그 위에 인덱스를 만들어 최근접 이웃 검색에 답합니다. "여기 질의 벡터가 있으니, 가장 가까운 열 개를 달라"는 식입니다.

어려운 부분은 '빠르게'라는 단어입니다. 질의를 1,536개 숫자로 이루어진 저장 벡터 백만 개와 비교하면 15억 번의 곱셈이 필요하고, 이걸 입력할 때마다 매번 수행하는 방식은 확장되지 않습니다. 그래서 벡터 데이터베이스는 근사 최근접 이웃 인덱스를 씁니다. 가장 흔한 방식은 HNSW로, Malkov와 Yashunin의 2016년 논문에서 나온 그래프 구조인데, 백만 개 전부가 아니라 수백 개 후보만 살펴보고도 거의 매번 정답을 돌려줍니다. 이 '거의'가 트레이드오프입니다. 약간의 재현율을 내주고 천 배의 속도를 얻는 셈입니다.

기존 데이터베이스는 단어를 맞추고, 벡터 데이터베이스는 의미를 맞춘다

관계형 데이터베이스는 값이 일치하는 행을 찾습니다: WHERE customer_id = 4127. 전문 검색 인덱스는 단어가 포함된 문서를 찾습니다: refund AND policy. 벡터 데이터베이스는 의미가 가까운 항목을 찾습니다. "환불을 받으려면 어떻게 해야 하나요"라는 질의는 두 문장이 단어를 하나도 공유하지 않아도 "반품 및 환불"이라는 제목의 문단을 돌려줍니다.

관계형 데이터베이스전문 검색벡터 데이터베이스
질문이 값과 일치하는 행은?이 단어들을 포함한 문서는?이것과 의미가 가까운 항목은?
인덱스컬럼 위의 B-트리용어에 대한 역인덱스벡터 위의 그래프 또는 클러스터링 (HNSW, IVF)
정확도정확함정확함대체로 근사값
잘하는 것ID, 날짜, 금액, 조인이름, 코드, 정확한 구절동의어, 의역, 다국어, 이미지
못하는 것의미의미정확한 문자열, 개수 세기, 값 필터링
예시Postgres, MySQL, SQLiteElasticsearch, LucenePinecone, Weaviate, Qdrant, Milvus, Chroma, pgvector

마지막 행은 이 구분이 얼마나 흐릿한지를 보여줍니다. pgvector는 벡터 컬럼과 HNSW 인덱스를 일반 Postgres에 추가하고, Elasticsearch는 2019년 버전 7.0부터 벡터 필드를, 2022년 버전 8.0부터 HNSW 검색을 지원해왔습니다. "벡터 데이터베이스"는 새로운 제품이라기보다 이미 쓰고 있는 데이터베이스 안의 기능인 경우가 많고, 독립 제품들은 Postgres가 할 수 없는 무언가가 아니라 규모와 운영 완성도로 경쟁합니다.

문서 기반 채팅은 모델이 뒤에 붙은 벡터 검색이다

검색 증강 생성은 검색 단계와 작성 단계로 이루어지며, RAG란 무엇인가에서 그 과정을 다룹니다. 벡터 데이터베이스는 검색 단계입니다.

  1. 각 문서를 수백에서 천 토큰 정도의 문단으로 나눕니다.
  2. 모든 문단을 임베딩하고, 그 벡터를 문단 텍스트와 출처와 함께 벡터 데이터베이스에 저장합니다.
  3. 질문이 들어오면 이를 임베딩해서 데이터베이스에 가장 가까운 문단을 요청합니다.
  4. 그 문단들을 질문과 함께 언어 모델에 건네고, 모델이 답을 작성하게 합니다.

1단계와 2단계는 문서가 추가될 때 한 번만 일어납니다. 3단계와 4단계는 질문이 들어올 때마다 일어납니다. 언어 모델은 전체 컬렉션을 보지 못하고 데이터베이스가 고른 대여섯 개 문단만 봅니다. 그래서 답의 품질은 검색의 품질만큼만 좋습니다. 가장 가까운 벡터가 엉뚱한 문단이면 모델은 엉뚱한 질문에 자신 있게 답하는데, AI 환각이란 무엇인가는 이를 지어낸 것이 아니라 검색 실패로 분류합니다.

언제 벡터 데이터베이스가 필요하고, 언제 파일 전체를 보내는 게 나은가

이 결정은 크기의 문제입니다. 모델은 한 번에 자신의 컨텍스트 윈도우만 고려할 수 있고, 그 안의 모든 토큰은 매 턴마다 비용이 듭니다. 벡터 데이터베이스는 모델 앞에 관련된 부분만 놓기 위해 존재합니다. 다 들어가는 문서 한 건이라면 검색 단계를 건너뛸 수 있고, 들어가지 않는 컬렉션이라면 그것이 유일한 선택지입니다.

300,000토큰 분량, 수백 페이지짜리 보고서에 열 개 질문을 던지고 질문당 1,000토큰짜리 문단 다섯 개를 검색한다고 가정하고 두 설계의 비용을 비교해 봅시다. 매번 파일 전체를 보내면 입력 토큰이 300만 개입니다. 질문당 1,000토큰 문단 다섯 개를 검색하면 5만 개입니다. 2026-08-20에 OpenRouter에서 가져온 AI 모델 비용 지수의 정가 입력 요율에서 이 격차는 모든 모델에서 60배입니다. 프롬프트 캐싱을 제공하는 곳에서는 같은 파일을 다시 읽는 비용이 정가의 10분의 1에서 2분의 1로 청구되어 격차가 대략 6배에서 30배로 좁혀집니다. 그래도 검색이 이깁니다, 차이는 줄어들지만요.

300,000토큰 보고서에 열 개 질문을 던지면 매번 파일 전체를 보낼 때 비용이 60배 더 든다
검색한 문단매 턴 파일 전체$0$5$10$15정가 기준, 질문 10개GPT-5.6 Luna$0.01$0.6060xGemini 3.7 Flash$0.019$1.1360xClaude Sonnet 5$0.10$6.0060xClaude Opus 5$0.25$15.0060x

파일이 예산 안에 들어올 때는 파일 전체를 보내는 설계가 그 비용에 걸맞은 것을 얻어냅니다. 4만 토큰 안팎의 60페이지짜리 계약서라면, 모델이 문서 전체를 한꺼번에 봐야 답할 수 있는 질문, 예를 들어 "여기에 14조와 모순되는 내용이 있는가" 같은 질문에 답할 수 있습니다. 검색은 14조와 그 모순을 같은 배치에서 보지 못하므로 이런 질문을 던질 수 없습니다. 여기서 나오는 규칙은 이렇습니다. 문서 한 건, 혹은 몇 건은 통째로 넣고, 서재 규모는 벡터 데이터베이스를 거칩니다. 그 중간이라면 업로드를 주제별로 나눠서 모델이 필요한 부분을 받게 하세요.

Whizi는 텍스트 자체를 최대 40,000토큰 한 턴에 보낸다

Whizi는 채팅을 위해 벡터 데이터베이스를 운영하지 않습니다. 파일을 첨부하면 문서 업로드 경로가 텍스트를 추출해서 턴당 최대 4만 토큰 고정 예산 안에서 프롬프트 텍스트로 모델에 보냅니다. 그보다 긴 업로드는 잘리며, 토스트와 메시지 안의 표시로 그 사실을 알립니다. 프로젝트 파일도 같은 방식으로 작동합니다. 프로젝트 기능은 최대 10개 파일을 고정해두고 매 메시지마다 그 텍스트를 프롬프트에 다시 넣는데, 파일당 32,000자, 프로젝트 블록 전체는 120,000자로 제한됩니다.

이 상한선이 설계의 경계입니다. 32,000자를 넘는 고정 파일은 잘리고, 4만 토큰 턴 예산을 넘는 첨부 파일도 잘리며, 프로젝트는 검색 가능한 서재가 아니라 폴더입니다. 이 트레이드오프는 의도된 것입니다. 턴 예산 안에 들어오는 계약서나 논문이라면, 검색하는 것보다 텍스트가 그대로 존재하는 편이 낫고, 모델이 사용한 문단을 인용하게 하는 검증법도 그 문단이 실제로 거기 있기 때문에 통합니다. 문서가 수천 건이라면 벡터 데이터베이스가 맞는 도구이고 채팅 앱은 맞지 않는 도구입니다.

이 구조에서 이어지는 습관이 두 가지 있습니다. 여러 파일이 첨부됐다면 질문에 파일 이름을 한 번 언급하세요. 그러지 않으면 모델이 조용히 하나를 골라버립니다. 그리고 실제로 행동에 옮길 답이라면 인용을 요청하세요. 검색 시스템은 엉뚱한 문단을 돌려줄 수 있고, 파일 전체를 읽는 시스템은 파일 대신 기억에서 답할 수 있습니다. 인용은 두 경우 모두를 잡아냅니다.

체크리스트
  • 문서 한 건은 통째로 보내고, 컬렉션은 벡터 데이터베이스 뒤에 둔다
  • 긴 업로드는 주제별로 나눠서 모델이 필요한 부분을 받게 한다
  • 답을 신뢰하기 전에 모델이 사용한 문단을 인용하게 한다
  • ID, 코드, 정확한 구절에는 일반 텍스트 검색을 쓴다. 벡터 검색은 문자가 아니라 의미를 맞춘다
  • 검색 실패는 검색 문제로 다룬다. 작성 모델을 탓하기 전에 더 나은 모델이나 더 작은 문단으로 다시 임베딩한다

자주 묻는 질문

벡터 데이터베이스란 쉽게 말해 무엇인가요?

AI 모델이 의미를 표현하기 위해 쓰는 숫자 목록을 저장해두고, 가장 가까운 것을 빠르게 찾도록 만든 저장소입니다. 질문의 임베딩을 주면 그와 비슷한 의미를 지닌 임베딩과 그 뒤의 텍스트를 돌려줍니다. 컬렉션이 통째로 보내기엔 너무 클 때, 문서 기반 채팅에서 검색을 담당하는 절반입니다.

내 문서로 AI를 쓰려면 벡터 데이터베이스가 꼭 필요한가요?

문서가 모델의 컨텍스트 윈도우에 들어가지 않을 때만 필요합니다. 보고서나 계약서 한 건이라면 모델에 통째로 보낼 수 있고, Whizi가 첨부 파일과 고정된 프로젝트 파일에 하는 방식이 바로 이것입니다. 수천 건짜리 서재는 검색이 필요하고, 검색에는 벡터 인덱스가 필요합니다. 전용 제품이든 pgvector 같은 Postgres 확장이든 마찬가지입니다.

벡터 데이터베이스와 일반 데이터베이스의 차이는 무엇인가요?

일반 데이터베이스는 값을 맞춥니다. 이 ID, 이 날짜, 이 정확한 단어처럼요. 벡터 데이터베이스는 의미를 맞춰서, 질의의 임베딩과 가장 가까운 저장된 항목을 돌려줍니다. 대체로 근사값을 씁니다. 모든 항목이 아니라 수백 개 후보만 확인하는 HNSW 같은 인덱스를 쓰며, 일반 데이터베이스가 잘하는 정확한 매칭은 서투릅니다.

가장 많이 쓰이는 벡터 데이터베이스는 무엇인가요?

Pinecone, Weaviate, Qdrant, Milvus, Chroma가 흔한 독립 제품이고, pgvector는 같은 기능을 Postgres에 추가합니다. Elasticsearch와 OpenSearch도 벡터 검색을 지원합니다. 선택은 대개 규모와 호스팅 같은 운영상의 문제인데, 모두 같은 근사 최근접 이웃 아이디어를 구현하기 때문입니다.

파일 전체를 보내는 것과 비교하면 검색으로 얼마나 아낄 수 있나요?

300,000토큰 보고서에 열 개 질문을 던질 때, 매 턴 파일 전체를 보내면 Claude Sonnet 5 기준 $6.00이 들고, 1,000토큰짜리 문단 다섯 개를 검색하면 $0.10이 듭니다. 이는 2026-08-20에 가져온 OpenRouter 정가 기준입니다. GPT-5.6 Luna에서는 같은 비교가 $0.60 대 $0.01입니다. 두 설계 모두 같은 토큰당 요율을 지불하기 때문에 비율은 모든 모델에서 60배입니다.