임베딩 벡터를 저장해 두고 의미가 가장 비슷한 항목을 빠르게 찾아 주는 데이터베이스로, 값이 정확히 일치하는 것을 찾는 일반 데이터베이스와 달리 뜻이 가까운 것을 찾는다. AI가 사내 문서를 참고해 답하는 RAG에서 검색 엔진으로 쓴다.
| 구분 | 일반 데이터베이스 | 벡터 DB |
|---|---|---|
| 찾는 방식 | 값이 정확히 일치하는 것 | 의미가 비슷한 것 |
| 질문 예시 | 주문번호가 12345인 건 | 이 질문과 뜻이 가까운 문서 |
먼저 사내 문서나 매뉴얼을 잘게 쪼개 임베딩으로 바꾼 뒤 벡터 DB에 넣어 둔다. 사용자가 질문하면 질문도 벡터로 바꿔 벡터 DB에 보내고, 의미가 가까운 문서 조각 몇 개를 바로 받아온다. 이 조각을 질문과 함께 AI에 넣으면 문서를 근거로 한 답이 나온다.
처음부터 무거운 인프라를 세울 필요는 없다. 검색이 서비스의 핵심이 되고 데이터가 커졌을 때 옮겨 가는 순서가 자연스럽다.
| 상황 | 선택 | 이유 |
|---|---|---|
| 프로토타입 | Chroma | 노트북에 바로 깔아 쓴다 |
| 이미 Postgres 사용 | pgvector 확장 | 권한·사용자 조건을 SQL로 걸면서 함께 검색 |
| 수천만 개 이상, 빠른 응답 필요 | Pinecone, Qdrant, Milvus, Weaviate | 관리형 서비스·전용 엔진 |
벡터가 수백만 개 수준까지는 pgvector로 충분한 경우가 많다.
벡터 검색은 의미가 비슷한 걸 폭넓게 찾아오지만, 제품 코드나 오류 번호처럼 글자가 그대로 일치해야 하는 검색에서는 놓치기 쉽다. 그래서 키워드 검색과 벡터 검색을 함께 돌려 결과를 합치는 하이브리드 검색이 사실상 기본이 됐다. Weaviate처럼 두 방식을 한 질문 안에서 섞어 주는 제품도 있다.
수백만 개의 벡터를 하나하나 비교하면 너무 느리다. 그래서 벡터 DB는 벡터를 미리 정리해 두고, 가까운 후보만 살피는 근사 최근접 이웃(ANN) 검색을 쓴다. 정답을 아주 가끔 놓치는 대신 속도가 크게 빨라진다.
| 방식 | 정리하는 법 |
|---|---|
| HNSW | 가까운 벡터끼리 이은 여러 층의 지도를 만들고, 위층에서 방향을 잡은 뒤 아래층으로 내려가며 좁힌다 |
| IVF | 벡터를 여러 구역으로 나눠 두고, 질문과 가장 가까운 구역 몇 개만 뒤진다 |
가장 흔한 쓰임은 RAG 챗봇의 검색 단계다. 그 밖에도 '이것과 비슷한 것'을 찾아야 하는 곳이면 어디든 쓰인다.
| 어디서 | 어떻게 쓰나 |
|---|---|
| 사내 문서 검색·챗봇 | 매뉴얼·위키를 조각내 넣어 두고, 질문과 뜻이 가까운 조각을 찾아 AI 답변의 근거로 붙인다 |
| 코드 검색 | 코드베이스를 임베딩해 두고 "로그인 처리하는 곳"처럼 말로 관련 파일을 찾는다 |
| 추천·유사 항목 검색 | 상품·이미지·글을 벡터로 넣어 두고, 지금 보는 것과 비슷한 항목을 골라 보여준다 |
| AI 비서의 장기 기억 | 지난 대화를 저장해 두고, 새 질문과 관련된 기억만 꺼내 프롬프트에 넣는다 |