생성형 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 연동이 무난해 실습용으로 자주 고른다.
- 같은 주제를 블로그에도 올려 두었다면 아래 링크를 참고하면 된다(본 글의 메인은 위에 적은 내 노트이고, 링크는 보조).
참고
'현재 > AI Agent' 카테고리의 다른 글
| 벡터 리트리버와 RAG 평가 - BM25, 앙상블, LangGraph, 환각 검증 (0) | 2026.03.30 |
|---|---|
| RAG 청킹 - RecursiveCharacterTextSplitter와 SemanticChunker (0) | 2026.03.27 |
| LangGraph Reflection - 자기평가로 답변을 개선하는 루프 설계 (0) | 2026.03.24 |
| LangGraph로 챗봇 만들기 - Tool Calling Agent, Tavily, ToolNode, create_react_agent (0) | 2026.03.24 |
| LangGraph 기초 문법 - State 업데이트, add_messages, invoke·stream, 조건·반복 (0) | 2026.03.20 |