수민 '-'

플오그래밍

제가 작성하는 모든 글은 절대 상업적인 이용이 아니며, 그저 개인적인 공부 용도로만 사용하는 것임을 밝힙니다.

벡터 데이터베이스와 ChromaDB - 의미 검색·RAG 저장소

생성형 AI나 검색 시스템을 설계할 때 “정확한 값으로 찾기”와 “비슷한 의미로 찾기”는 서로 다른 문제다. 관계형 DB가 전자에 강하다면, 후자를 위해 널리 쓰이는 게 벡터 데이터베이스(Vector Database) 다. 이번 글에서는 내가 정리해 둔 노트를 바탕으로 벡터 DB와 ChromaDB 의 역할만 짚고, 이어지는 글에서 청킹·리트리버·평가 코드로 넘어간다.


1. 벡터 데이터베이스란

벡터 데이터베이스(Vector Database) 는 텍스트, 이미지, 오디오 같은 데이터를 고차원 벡터 형태로 바꿔 저장하고, 벡터 간 유사도 를 빠르게 찾도록 최적화된 데이터베이스다.

일반적인 관계형 데이터베이스가 정확한 값 기반 검색(SQL 쿼리 등)에 잘 맞는다면, 벡터 데이터베이스는 의미적 유사성(semantic similarity) 에 기반한 검색을 지원한다. 그래서 “강아지”와 “개”처럼 표현이 달라도 비슷한 의미의 데이터를 함께 찾아낼 수 있다.

이를 위해 코사인 유사도, 내적(dot product), 유클리드 거리 같은 거리·유사도 계산을 쓰며, 대규모 임베딩(embedding) 데이터를 효율적으로 관리·검색할 수 있어 추천 시스템, 검색 엔진, 생성형 AI의 RAG(Retrieval-Augmented Generation) 등에 널리 쓰인다.


2. ChromaDB(크로마디비)

ChromaDB 는 대표적인 오픈소스 벡터 데이터베이스 로, 문서·이미지·코드 등을 임베딩 벡터로 넣어 저장하고 빠르게 검색하도록 설계됐다.

  • 파이썬 기반이라 사용이 간편하고, LangChain 같은 LLM 프레임워크와 잘 붙어 RAG 구조를 쉽게 만들 수 있다.
  • 내부적으로 벡터 인덱싱메타데이터 저장 을 함께 지원해, 유사도 검색만이 아니라 조건 필터링 과 섞은 검색도 가능하다.
  • 무료로 가볍게 돌릴 수 있고, 로컬부터 클라우드까지 확장할 수 있어 학습용·실무용 AI 검색 엔진 구축에 많이 쓰인다.

다음 글에서는 PDF를 청크로 나눈 뒤 임베딩하고, 그다음 글에서 Chroma에 넣어 리트리버로 꺼내는 흐름을 코드로 이어간다.


마치며

  • 벡터 DB는 “의미가 가까운 조각”을 빠르게 찾는 저장·검색 계층이고, RAG에서는 검색된 청크를 LLM에 넘기는 축이다.
  • ChromaDB는 오픈소스·파이썬·LangChain 연동이 무난해 실습용으로 자주 고른다.
  • 같은 주제를 블로그에도 올려 두었다면 아래 링크를 참고하면 된다(본 글의 메인은 위에 적은 내 노트이고, 링크는 보조).

참고