# Vector DB 통합 시스템

## 개요
회의록 작성 시스템을 위한 Vector DB 기반 용어집 및 관련자료 검색 시스템

## 주요 기능
1. **용어집 (Term Glossary)**
   - PostgreSQL + pgvector 기반
   - 맥락 기반 용어 설명 제공
   - Claude AI 연동

2. **관련자료 (Related Documents)**
   - Azure AI Search 기반 (별도 인덱스)
   - Hybrid Search + Semantic Ranking
   - 회의록 유사도 검색

## 기술 스택
- Python 3.11+
- FastAPI (REST API)
- PostgreSQL + pgvector (용어집)
- Azure AI Search (관련자료)
- Azure OpenAI (Embedding)
- Claude 3.5 Sonnet (LLM)
- Redis (캐싱)

## 프로젝트 구조
```
vector/
├── src/
│   ├── models/        # 데이터 모델
│   ├── db/            # DB 연동 (PostgreSQL, Azure Search)
│   ├── services/      # 비즈니스 로직
│   ├── api/           # REST API
│   └── utils/         # 유틸리티 (임베딩, 설정 등)
├── scripts/           # 초기화 및 데이터 로딩 스크립트
└── tests/             # 테스트
```

## 설치 및 실행

### 1. 환경 설정
```bash
# .env 파일 생성
cp .env.example .env

# .env 파일을 열어 실제 API 키 및 데이터베이스 정보 입력
# - POSTGRES_* (PostgreSQL 접속 정보)
# - AZURE_OPENAI_* (Azure OpenAI API 키 및 엔드포인트)
# - AZURE_SEARCH_* (Azure AI Search API 키 및 엔드포인트)
# - CLAUDE_API_KEY (Claude API 키)
```

### 2. 의존성 설치
```bash
# 가상환경 생성 (권장)
python -m venv venv
source venv/bin/activate  # Linux/Mac
# venv\Scripts\activate   # Windows

# 패키지 설치
pip install -r requirements.txt
```

### 3. 설정 검증
```bash
# 모든 설정이 올바른지 확인
python scripts/validate_setup.py
```

### 4. 데이터 로딩
```bash
# 용어집 데이터 로딩 (PostgreSQL 테이블 자동 생성 및 데이터 삽입)
python scripts/load_terms.py

# 관련자료 데이터 로딩 (Azure AI Search 인덱스 생성 및 데이터 업로드)
python scripts/load_documents.py
```

### 5. API 서버 실행
```bash
# 방법 1: 직접 실행
python -m src.api.main

# 방법 2: uvicorn 사용 (개발 모드)
uvicorn src.api.main:app --reload --host 0.0.0.0 --port 8000
```

### 6. API 문서 확인
브라우저에서 다음 주소로 접속:
- Swagger UI: http://localhost:8000/docs
- ReDoc: http://localhost:8000/redoc

## API 엔드포인트

### 용어집 API
- `POST /api/terms/search` - 용어 검색
- `GET /api/terms/{term_id}` - 용어 상세 조회
- `POST /api/terms/{term_id}/explain` - 맥락 기반 용어 설명 (Claude AI)

### 관련자료 API
- `POST /api/documents/search` - 관련 문서 검색 (Hybrid Search)
- `GET /api/documents/related/{meeting_id}` - 관련 회의록 추천
- `POST /api/documents/{doc_id}/summarize` - 유사 내용 요약 (Claude AI)

## 테스트

### 설정 검증 테스트
```bash
# 환경 설정 및 의존성 확인
python scripts/validate_setup.py
```

### 데이터 로딩 테스트
```bash
# 데이터 파일 로드 및 임베딩 생성 검증
python tests/test_data_loading.py
```

### API 테스트
```bash
# API 서버가 실행 중인 상태에서:
pytest tests/test_api.py -v
```

자세한 테스트 가이드는 [TESTING.md](TESTING.md) 참조

## 문서
- [TESTING.md](TESTING.md) - 상세한 테스트 가이드 및 문제 해결
- [IMPLEMENTATION_SUMMARY.md](IMPLEMENTATION_SUMMARY.md) - 구현 완료 보고서
- [용어집 구현방안](../design/구현방안-용어집.md)
- [관련자료 구현방안](../design/구현방안-관련자료.md)
- [아키텍처 최적안 결정](../design/아키텍처_최적안_결정.md)
