Weaviate (벡터 DB)

Weaviate (벡터 DB)

벡터 DB는 임베딩(벡터)을 저장해두고, 질문 벡터와 가장 가까운 벡터를 빠르게 찾아주는 전용 저장소예요. Weaviate는 그 중에서도 벡터 우선(vector-first) 설계로 유명한 오픈소스 벡터 DB로, RAG 파이프라인의 벡터 저장·검색을 담당하는 도구로 쓸 수 있어요.

Weaviate는 기본 검색부터 하이브리드 검색·필터링·RAG 생성까지 한 곳에서 처리합니다. 특히 검색과 생성(LLM 호출)을 하나의 쿼리로 합친 통합 RAG 기능이 강점이에요.


상황부터 — 벡터 우선 설계

전통 DB는 정확한 값 매칭에 강하지만 "가장 가까운 벡터" 같은 유사도 검색엔 설계 목적이 아니에요. Weaviate는 vector-first 저장소 형태로, 벡터 인덱스가 모든 저장·검색 연산을 전담합니다. 의미(조밀) 벡터 기반 유사도 검색을 기본으로 하되, BM25 키워드 검색, 하이브리드 검색, 메타데이터 필터링까지 한 엔진에서 다룹니다.


핵심 개념

  • 컬렉션(Collection) — 벡터를 묶는 저장 단위. 각 컬렉션은 벡터 인덱스와 역인덱스(inverted index) 설정을 갖습니다. (Qdrant의 컬렉션, SQL의 테이블과 비슷)
  • 네임드 벡터(Named Vector) — 컬렉션 하나에 여러 벡터를 이름 붙여 둘 수 있어요. 객체마다 여러 임베딩을 저장하고, 검색 시 target_vector로 비교 대상을 지정합니다.
  • 벡터 인덱스 — HNSW(기본), Flat, Dynamic, HFresh 네 가지. 속도·정확도·메모리 트레이드오프가 다릅니다. (인덱스)
  • 양자화(Quantization) — BQ·PQ·SQ·RQ로 벡터를 압축해 메모리를 줄입니다. (양자화)
  • 통합 RAG — 검색과 LLM 호출을 한 쿼리로: near_text + single_prompt/grouped_task. (RAG)
  • 인증/인가 — API 키·OIDC·익명 인증, RBAC·Admin list·무차별 접근 인가. (인증, 인가)

인덱스·압축 전략

  • 기본 인덱스는 HNSW — 대규모 데이터셋에 적합. 쿼리 시간 복잡도가 로그 수준입니다.
  • 객체 수가 적으면(수천 이하) Flat 인덱스 — 정확 검색(perfect recall)에 강하고 메모리 부담이 낮습니다.
  • 크기가 들쭉날쭉한 멀티테넌트 환경이면 Dynamic 인덱스 — 객체 수가 임계값(기본 10,000)을 넘으면 Flat에서 HNSW로 자동 전환돼요. (ASYNC_INDEXING 필요)
  • 메모리를 줄이고 싶으면 RQ/PQ/SQ/BQ 압축 — HNSW에선 4종 모두, Flat에선 BQ만 쓸 수 있습니다.

실제 적용 시 포인트

  • 운영 환경 인증AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED=false + API 키 또는 OIDC. 인가는 생산에서는 Admin list보다 RBAC 권장.
  • 성능 — 인덱스 타입과 ef/efConstruction/maxConnections 튜닝, 양자화로 메모리 절감. 대규모 컬렉션은 압축부터 고려.
  • 배포 — REST(8080)·gRPC(50051) 이중 포트. 외부 노출 시 SSL/TLS 필수.

더 알아보기 (Learn more)