← soulhn.github.io

Log

만들고 배운 것을 기록합니다.

· 학습 로그

벡터 DB — 주제로 꽂는 책장

임베딩 좌표를 담아 두고 '가장 가까운 것'을 빠르게 찾아 주는 저장소. 그리고 그릇 없이 시작해도 되는 이유.

#용어#RAG

한 줄 정의

벡터 DB(vector database)는 임베딩 좌표들을 담아 두고, 질문 좌표와 가장 가까운 것들을 빠르게 찾아 주는 데이터베이스다. Pinecone, Chroma, pgvector 등.

내 말로

임베딩 카드에서 사서가 책을 주제(좌표)로 꽂는다고 했는데, 벡터 DB는 그 책장이다. 책이 열 권이면 책장 없이 바닥에 펼쳐 놓고 다 재봐도 되지만, 백만 권이면 전부 잴 수 없으니 비슷한 것끼리 미리 묶어 두는 색인(근사 최근접 탐색, ANN)이 필요해진다. 그래프 DB가 관계를 따라 걷는 그릇이라면 벡터 DB는 가까움을 찾는 그릇 — “어떤 그릇이 필요한가”라는 같은 질문에 대한 다른 답이다.

오개념 주의

RAG에 벡터 DB가 필수라는 건 오개념이다. 조각 수십~수천 개면 파일과 행렬 곱으로 충분하고, 그릇이 필요해지는 건 데이터가 커지고 갱신이 잦아질 때다. 그리고 벡터 DB(ANN)는 검색을 정확하게 만드는 도구가 아니라 빠르게 만드는 도구다 — 오히려 정확도를 아주 조금 내주고 속도를 산다.

어디서 만났나

Build 03 — ask-soulhn에는 벡터 DB가 없다. 좌표들은 npz 파일 하나에 들어 있고, 검색은 numpy 행렬 곱(코사인 유사도) 한 줄이다. 조각 수십 개에 벡터 DB는 과했다 — 그래프 DB 카드의 “도구는 문제 크기에 맞게”와 같은 결정을, 그 용어를 배우기 전에 이미 내렸던 셈이다. 조각이 수만 개가 되고 글을 올릴 때마다 색인을 갱신해야 할 때, 그때가 책장을 살 날이다.

더 파볼 것

  • ANN(근사 최근접 탐색) — 속도를 사고 정확도를 아주 조금 파는 거래의 원리
  • pgvector처럼 기존 DB에 벡터 검색을 얹는 선택지
  • 하이브리드 검색 — 키워드(글자 일치)와 벡터(의미)를 섞기

퀴즈

읽은 내용, 세 문제로 확인해보세요.

1. 벡터 DB의 역할은 무엇인가?

2. ask-soulhn이 벡터 DB 없이 돌아가는 이유는?

3. 벡터 DB의 색인(ANN)이 하는 거래는?