Files
syn-chat-bot/init/setup-qdrant.sh
hyungi 6e6ffaa04b RAG 아키텍처 v2: 3단계 라우팅, 멀티-컬렉션 RAG, 선택적 메모리
Phase 1-3 구현:
- init.sql v2: 12테이블 (기존 5 + 신규 7) + 분류기 v2 프롬프트
- migrate-v2.sql: 기존 DB 마이그레이션 스크립트
- setup-qdrant.sh: tk_company 컬렉션 + payload 인덱스 설정
- 워크플로우 v2 (37노드): 토큰검증, Rate Limit, 프리필터,
  분류기v2(response_tier), 3-tier 라우팅(local/Haiku/Opus),
  멀티-컬렉션 RAG, 예산 체크, 선택적 메모리
- .env.example + docker-compose.yml: 새 환경변수 추가
- CLAUDE.md, QUICK_REFERENCE.md, docs/architecture.md 전면 갱신

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 12:51:30 +09:00

70 lines
2.3 KiB
Bash

#!/bin/bash
# Qdrant 컬렉션 설정: tk_company 생성 + chat_memory 인덱스 추가
# 실행: bash init/setup-qdrant.sh
QDRANT_URL="${QDRANT_URL:-http://localhost:6333}"
echo "=== Qdrant 컬렉션 설정 ==="
# 1. tk_company 컬렉션 생성 (bge-m3: 1024 dimensions)
echo "▶ tk_company 컬렉션 생성..."
curl -s -X PUT "${QDRANT_URL}/collections/tk_company" \
-H 'Content-Type: application/json' \
-d '{
"vectors": {
"size": 1024,
"distance": "Cosine"
}
}' | python3 -m json.tool
# 2. tk_company payload 인덱스 생성
echo "▶ tk_company 인덱스 생성..."
for field in year department doc_type created_at; do
field_type="keyword"
if [ "$field" = "year" ]; then field_type="integer"; fi
if [ "$field" = "created_at" ]; then field_type="keyword"; fi
curl -s -X PUT "${QDRANT_URL}/collections/tk_company/index" \
-H 'Content-Type: application/json' \
-d "{
\"field_name\": \"${field}\",
\"field_schema\": \"${field_type}\"
}" | python3 -c "import sys,json; print(f' {\"${field}\"}: {json.loads(sys.stdin.read()).get(\"status\", \"error\")}')"
done
# 3. chat_memory 인덱스 추가 (username, topic, intent)
echo "▶ chat_memory 인덱스 추가..."
for field in username topic intent; do
curl -s -X PUT "${QDRANT_URL}/collections/chat_memory/index" \
-H 'Content-Type: application/json' \
-d "{
\"field_name\": \"${field}\",
\"field_schema\": \"keyword\"
}" | python3 -c "import sys,json; print(f' {\"${field}\"}: {json.loads(sys.stdin.read()).get(\"status\", \"error\")}')"
done
# 4. 확인
echo ""
echo "=== 컬렉션 목록 ==="
curl -s "${QDRANT_URL}/collections" | python3 -c "
import sys,json
data = json.loads(sys.stdin.read())
for c in data.get('result',{}).get('collections',[]):
name = c['name']
info = json.loads(open('/dev/stdin','r').read()) if False else None
print(f' - {name}')
" 2>/dev/null || curl -s "${QDRANT_URL}/collections" | python3 -m json.tool
echo ""
echo "=== tk_company 상세 ==="
curl -s "${QDRANT_URL}/collections/tk_company" | python3 -c "
import sys,json
data = json.loads(sys.stdin.read())
r = data.get('result',{})
print(f' 벡터수: {r.get(\"points_count\",0)}')
print(f' 상태: {r.get(\"status\",\"unknown\")}')
" 2>/dev/null || echo " (확인 실패)"
echo ""
echo "설정 완료!"