Ubuntu 24.04에서 AI 애플리케이션을 위한 오픈 소스 벡터 데이터베이스 Qdrant 배포하기
요약
Ubuntu 24.04 환경에서 Docker Compose와 Traefik을 사용하여 오픈 소스 벡터 데이터베이스인 Qdrant를 배포하는 가이드입니다. HTTPS 보안 설정, API 키 인증 적용, 그리고 컬렉션 생성 및 유사도 검색 실행 과정을 단계별로 설명합니다.
핵심 포인트
- Docker Compose를 활용한 Qdrant의 신속한 배포 방법 제공
- Traefik을 이용한 자동 HTTPS 및 API 키 인증 보안 설정
- REST/gRPC API를 통한 벡터 데이터 삽입 및 유사도 검색 실습
- 내장 대시보드 및 상태 엔드포인트를 통한 서비스 관리
Qdrant는 고차원 임베딩 (high-dimensional embeddings)에 대한 유사도 검색 (similarity search)에 최적화된 AI 애플리케이션용 오픈 소스 벡터 데이터베이스 (vector database)로, REST/gRPC API, 페이로드 필터링 (payload filtering), 그리고 내장된 대시보드 (dashboard)를 제공합니다. 이 가이드는 Traefik을 사용하여 자동 HTTPS를 처리하고, API 키 인증 (API-key authentication)을 적용하며, 유사도 검색을 실행하는 샘플 컬렉션 (collection)을 포함하여 Docker Compose를 통해 Qdrant를 배포합니다. 이 과정을 마치면 여러분의 도메인에서 보안이 적용된 벡터 검색을 제공하는 Qdrant를 갖게 될 것입니다.
디렉토리 구조 설정
1. 프로젝트 디렉토리 생성:
$ mkdir -p ~/qdrant/data
$ cd ~/qdrant
2. 강력한 API 키 생성:
$ openssl rand -hex 32
생성된 값을 .env 파일에 저장하세요.
3. 환경 파일 생성:
$ nano .env
DOMAIN=qdrant.example.com
LETSENCRYPT_EMAIL=admin@example.com
QDRANT_API_KEY=PASTE_GENERATED_KEY_HERE
Docker Compose로 배포
1. Compose 매니페스트 (manifest) 생성:
$ nano docker-compose.yaml
services:
traefik:
image: traefik:v3.6
...
2. 서비스 시작 및 로그 확인:
$ docker compose up -d
$ docker compose ps
$ docker compose logs --tail=50
대시보드 및 상태 엔드포인트 (Health Endpoint) 접속
1. https://qdrant.example.com/dashboard를 열고 요청 시 API 키를 붙여넣으세요.
2. 서비스 준비 상태 확인:
$ curl https://qdrant.example.com/readyz
all shards are ready라는 응답이 오면 Qdrant가 정상(healthy)임을 확인한 것입니다.
컬렉션 생성 및 유사도 검색 실행
1. API 키 내보내기 (Export):
$ export QDRANT_API_KEY=YOUR_API_KEY
2. 코사인 거리 (cosine distance)를 사용하는 4차원 컬렉션 생성:
$ curl -X PUT "https://qdrant.example.com/collections/star_charts" \
-H "Content-Type: application/json" \
-H "api-key: ${QDRANT_API_KEY}" \
...
3. 샘플 포인트 (points) 삽입:
$ curl -X PUT "https://qdrant.example.com/collections/star_charts/points" \
-H "Content-Type: application/json" \
-H "api-key: ${QDRANT_API_KEY}" \
...
4. 유사도 검색 (Similarity search) 실행:
$ curl -X POST "https://qdrant.example.com/collections/star_charts/points/search" \
-H "Content-Type: application/json" \
-H "api-key: ${QDRANT_API_KEY}" \
...
최상위 결과는 Moon 포인트(코사인 유사도 ~0.99)입니다. 대시보드의 Collections 탭에는 star_charts가 녹색 상태와 함께 5개의 포인트가 있는 것으로 표시됩니다.
다음 단계
Qdrant가 실행 중이며 HTTPS를 통해 벡터 검색 (Vector search) 서비스를 제공하고 있습니다. 이제 다음과 같은 작업을 수행할 수 있습니다:
- OpenAI, Cohere 또는 Sentence-Transformers를 사용하여 임베딩 (Embeddings)을 생성하고 이를 업서트 (Upsert) 하기
- 페이로드 필터 (Payload filters)를 추가하여 벡터 유사도와 구조화된 기준을 결합하기
- 복구가 가능한 백업을 위해
data/볼륨을 정기적으로 스냅샷 (Snapshot) 찍기
추가적인 팁이 포함된 전체 가이드를 확인하려면 **Vultr Docs**의 원문 기사를 방문하세요.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기