벡터 DB란 무엇인가 — 비전공자 개발자가 이해한 만큼만
결론부터: 벡터 DB는 “비슷한 것 찾기”에 특화된 저장소다
기존 DB는 WHERE name = 'apple'처럼 정확히 일치하는 값을 찾는다.
벡터 DB는 반대로 “이것과 의미가 비슷한 것”을 찾는다. 완전히 다른 문제를 푸는 도구라서,
기존 RDB 지식을 아무리 들이대도 잘 안 맞는 이유가 여기 있다.
왜 필요할까
텍스트, 이미지, 문서 같은 비정형 데이터는 “비슷함”을 숫자로 비교할 방법이 없다. 그래서 이걸 벡터(숫자 배열) 로 바꾸는 과정이 필요한데, 이 변환을 임베딩(embedding) 이라고 부른다.
- 정형 데이터(텍스트, 숫자, 날짜, 이미지, 문서) → 임베딩 모델 → 벡터
- 벡터 사이의 거리(코사인 유사도 등)가 가까울수록 “의미가 비슷함”
벡터 DB는 이 벡터들을 저장해두고, 새로 들어온 질문의 벡터와 가장 가까운 것들을 빠르게 찾아주는 역할을 한다.
실제로 쓰는 흐름 (8단계)
RAG(검색 증강 생성)에서 벡터 DB를 쓸 때 실제로 거치는 단계는 대략 이렇다.
- 설치 — ChromaDB 같은 벡터 DB를 로컬 또는 서버에 설치
- 클라이언트 연결 — 코드에서 DB에 접속
- 컬렉션 생성 — 관계형 DB의 “테이블”에 해당하는 단위를 만듦
- 데이터 불러오기 — 임베딩할 원본 텍스트/문서를 준비
- 모델 불러오기 — 텍스트를 벡터로 바꿔줄 임베딩 모델 로드
- 데이터 삽입 — 임베딩한 벡터를 컬렉션에 저장
- 검색 — 질문도 같은 방식으로 임베딩해서, 저장된 벡터 중 가장 가까운 것을 조회
- 결과 — 가까운 벡터에 연결된 원본 텍스트를 답변 생성에 활용
더 파고들고 싶다면
체계적으로 정리된 튜토리얼로 RAG Essential을 참고하고 있다. Python · LangChain · LlamaIndex · ChromaDB · FAISS · Pinecone · Qdrant · OpenAI API · RAGAS · LangGraph · FastAPI를 다루는 20챕터 97섹션짜리 튜토리얼이라, 8단계 흐름 각각을 더 깊이 알고 싶을 때 챕터 단위로 찾아보기 좋다.
왜 굳이 “초보자 설명”으로 남기나
전문가의 설명은 이미 그 개념이 왜 중요한지 몸에 밴 상태에서 나오기 때문에, 정작 “이게 왜 필요한지”를 건너뛰기 쉽다. 반대로 막 배우기 시작한 사람은 기술적인 해법으로 바로 들어가기 전에 원래 풀려던 문제가 무엇인지부터 짚게 된다. 이 블로그의 글들은 그 지점을 살려서, 배운 것을 내 언어로 정리해 남기는 기록이다.