# 벡터DB 임베딩용 관련자료 샘플 데이터

## 📋 개요

본 데이터셋은 회의록 작성 및 공유 개선 서비스의 벡터DB 구축을 위한 샘플 데이터입니다.
통신회사의 8개 업무 도메인별로 4가지 문서 유형에 대해 각 50개씩, 총 **1,600개**의 샘플 문서를 제공합니다.

## 📊 데이터 구성

### 업무 도메인 (8개)
1. **고객서비스** - VOC, 상담 품질, 고객 응대
2. **영업마케팅** - 요금제, 프로모션, 유통 채널
3. **요금청구** - 빌링, 과금, 미수금 관리
4. **네트워크운용** - 5G, 장애 대응, 트래픽 관리
5. **서비스기획** - 신규 서비스, 콘텐츠 제휴
6. **시스템운영** - IT 인프라, 클라우드, DevOps
7. **가입자관리** - 개통, 해지, 번호이동
8. **기업영업** - B2B 솔루션, 전용선, AICC

### 문서 유형 (4개)
1. **이전 회의록** (meeting_minutes)
   - 회의 일시, 참석자, 안건, 결정사항, 조치사항 포함
   - 실제 회의록 형식의 상세한 내용

2. **조직문서** (org_document)
   - 업무 매뉴얼, 정책 가이드라인, 표준 절차서
   - 공식 문서 형식의 구조화된 내용

3. **프로젝트 문서** (project_document)
   - 요구사항 정의서, 설계서, 수행 계획서
   - 프로젝트 관련 기술 문서

4. **운영문서** (operation_document)
   - 장애 보고서, 모니터링 결과, 대응 기록
   - 실시간 운영 이슈 관련 문서

### 통계
- **총 문서 수**: 1,600개
- **도메인별**: 200개씩 (8개 도메인)
- **유형별**: 도메인당 50개씩 (4가지 유형)

## 📁 파일 구조

```
vector_db_sample_data.json
├── metadata                    # 메타데이터
│   ├── version                # 버전 정보
│   ├── created_date           # 생성 일시
│   ├── description            # 설명
│   └── 통계 정보               # 문서 수, 카테고리 수 등
│
├── embedding_schema           # 임베딩 스키마 정의
│   ├── document_id            # 문서 고유 ID
│   ├── document_type          # 문서 유형
│   ├── business_domain        # 업무 도메인
│   ├── title                  # 제목
│   ├── content                # 전체 본문 (임베딩 대상)
│   ├── summary                # 3-5문장 요약
│   ├── keywords               # 키워드 배열
│   ├── created_date           # 생성 일시 (ISO8601)
│   ├── participants           # 참석자/작성자
│   ├── metadata               # 추가 메타데이터
│   └── embedding_vector       # 임베딩 벡터 (1536차원)
│
└── sample_data                # 실제 샘플 데이터
    ├── 고객서비스
    │   ├── meeting_minutes    # 50개
    │   ├── org_document       # 50개
    │   ├── project_document   # 50개
    │   └── operation_document # 50개
    ├── 영업마케팅
    │   ├── ... (동일 구조)
    ├── 요금청구
    ├── 네트워크운용
    ├── 서비스기획
    ├── 시스템운영
    ├── 가입자관리
    └── 기업영업
```

## 🔧 데이터 스키마

### 공통 필드
```json
{
  "document_id": "string",           // 예: "고객-MM-001"
  "document_type": "string",          // meeting_minutes | org_document | project_document | operation_document
  "business_domain": "string",        // 8개 도메인 중 하나
  "title": "string",                  // 문서 제목
  "content": "string",                // 전체 본문 (임베딩 대상)
  "summary": "string",                // 3-5문장 요약
  "keywords": ["string"],             // 키워드 배열
  "created_date": "ISO8601",          // 생성 일시
  "participants": ["string"],         // 참석자/작성자
  "metadata": {                       // 추가 메타데이터
    "folder": "string",               // 폴더 경로
    ...                               // 문서 유형별 추가 필드
  }
}
```

### 문서 유형별 추가 메타데이터

#### 1. 회의록 (meeting_minutes)
```json
"metadata": {
  "folder": "/고객서비스/회의록",
  "agenda_count": 3,
  "decision_items": ["결정사항1", "결정사항2"],
  "action_items": ["조치사항1", "조치사항2"]
}
```

#### 2. 조직문서 (org_document)
```json
"metadata": {
  "folder": "/고객서비스/정책/문서",
  "document_version": "3.2",
  "last_updated": "2024-06-01"
}
```

#### 3. 프로젝트 문서 (project_document)
```json
"metadata": {
  "folder": "/프로젝트/고객서비스",
  "project_status": "진행중",  // 계획 | 진행중 | 완료
  "document_type": "요구사항정의서"
}
```

#### 4. 운영문서 (operation_document)
```json
"metadata": {
  "folder": "/고객서비스/운영/장애보고",
  "incident_number": "INC-2024-09-157",
  "severity": "High",  // Critical | High | Medium | Low
  "status": "복구완료"
}
```

## 💡 사용 예시

### Python에서 데이터 로드
```python
import json

# JSON 파일 로드
with open('vector_db_sample_data.json', 'r', encoding='utf-8') as f:
    data = json.load(f)

# 특정 도메인의 회의록 가져오기
customer_service_meetings = data['sample_data']['고객서비스']['meeting_minutes']

# 첫 번째 회의록 확인
first_meeting = customer_service_meetings[0]
print(f"제목: {first_meeting['title']}")
print(f"요약: {first_meeting['summary']}")
print(f"키워드: {', '.join(first_meeting['keywords'])}")
```

### 임베딩 생성 예시
```python
from openai import OpenAI

client = OpenAI(api_key="your-api-key")

# 문서 임베딩 생성
def create_embedding(text):
    response = client.embeddings.create(
        model="text-embedding-3-small",
        input=text
    )
    return response.data[0].embedding

# 모든 문서에 대해 임베딩 생성
for domain in data['sample_data']:
    for doc_type in data['sample_data'][domain]:
        for doc in data['sample_data'][domain][doc_type]:
            # content 필드를 임베딩
            embedding = create_embedding(doc['content'])
            doc['embedding_vector'] = embedding
```

### 벡터DB에 저장 (Qdrant 예시)
```python
from qdrant_client import QdrantClient
from qdrant_client.models import Distance, VectorParams, PointStruct

# Qdrant 클라이언트 초기화
client = QdrantClient(url="http://localhost:6333")

# 컬렉션 생성
client.create_collection(
    collection_name="meeting_documents",
    vectors_config=VectorParams(size=1536, distance=Distance.COSINE)
)

# 문서 업로드
points = []
for domain in data['sample_data']:
    for doc_type in data['sample_data'][domain]:
        for doc in data['sample_data'][domain][doc_type]:
            point = PointStruct(
                id=doc['document_id'],
                vector=doc['embedding_vector'],  # 이미 생성된 임베딩
                payload={
                    "title": doc['title'],
                    "summary": doc['summary'],
                    "keywords": doc['keywords'],
                    "domain": doc['business_domain'],
                    "type": doc['document_type'],
                    "created_date": doc['created_date']
                }
            )
            points.append(point)

# 배치 업로드
client.upsert(collection_name="meeting_documents", points=points)
```

### 유사 문서 검색 예시
```python
# 쿼리 텍스트
query = "고객 만족도를 개선하기 위한 AI 챗봇 도입 방안"

# 쿼리 임베딩 생성
query_embedding = create_embedding(query)

# 유사 문서 검색
search_result = client.search(
    collection_name="meeting_documents",
    query_vector=query_embedding,
    limit=5,
    query_filter={
        "must": [
            {"key": "domain", "match": {"value": "고객서비스"}}
        ]
    }
)

# 결과 출력
for hit in search_result:
    print(f"유사도: {hit.score:.4f}")
    print(f"제목: {hit.payload['title']}")
    print(f"요약: {hit.payload['summary']}")
    print("---")
```

## 🎯 활용 시나리오

### 1. 관련 회의록 검색
- **목적**: 현재 회의와 유사한 과거 회의록 찾기
- **방법**: 회의 주제/안건을 임베딩하여 유사도 검색
- **활용**: 과거 논의 내용 및 결정사항 참조

### 2. 맥락 기반 용어 설명
- **목적**: 회의 중 등장하는 전문 용어를 맥락에 맞게 설명
- **방법**: 용어와 관련된 조직문서/매뉴얼 검색
- **활용**: Claude API에 RAG context로 제공

### 3. 프로젝트 문서 자동 연결
- **목적**: 회의 내용과 관련된 프로젝트 문서 추천
- **방법**: 회의록과 프로젝트 문서 간 유사도 계산
- **활용**: 참고 자료 자동 링크

### 4. 장애 이력 조회
- **목적**: 유사한 장애 발생 시 과거 대응 사례 검색
- **방법**: 장애 키워드로 운영문서 검색
- **활용**: 빠른 장애 해결을 위한 레퍼런스

## 📝 데이터 특징

### 1. 실제 업무 환경 반영
- 통신회사의 실제 업무 도메인 구조
- 각 도메인별 특화된 키워드 및 용어
- 업무 프로세스와 연결된 문서 구조

### 2. 다양한 문서 유형
- 회의록: 비정형 대화체 문서
- 조직문서: 정형 정책 문서
- 프로젝트 문서: 기술 문서
- 운영문서: 시간 기반 이벤트 문서

### 3. 풍부한 메타데이터
- 문서 분류를 위한 도메인/유형 정보
- 검색 최적화를 위한 키워드
- 관계 추적을 위한 참석자/날짜 정보
- 폴더 구조 정보

### 4. 임베딩 최적화
- 평균 문서 길이: 500~2000자
- 요약문 제공으로 빠른 이해 가능
- 키워드 기반 하이브리드 검색 지원

## 🔍 검색 전략 권장사항

### 1. 하이브리드 검색
```python
# 키워드 필터 + 벡터 유사도 검색
search_result = client.search(
    collection_name="meeting_documents",
    query_vector=query_embedding,
    query_filter={
        "must": [
            {"key": "domain", "match": {"value": "고객서비스"}},
            {"key": "keywords", "match": {"any": ["VOC", "챗봇"]}}
        ]
    },
    limit=10
)
```

### 2. 시간 기반 필터링
```python
# 최근 1년 이내 문서만 검색
from datetime import datetime, timedelta

one_year_ago = (datetime.now() - timedelta(days=365)).isoformat()

search_result = client.search(
    collection_name="meeting_documents",
    query_vector=query_embedding,
    query_filter={
        "must": [
            {"key": "created_date", "range": {"gte": one_year_ago}}
        ]
    }
)
```

### 3. 문서 유형별 가중치
```python
# 회의록 우선, 프로젝트 문서 보조
meeting_results = search(query, filter={"type": "meeting_minutes"}, limit=3)
project_results = search(query, filter={"type": "project_document"}, limit=2)

# 결과 병합
all_results = meeting_results + project_results
```

## 🚀 확장 가능성

### 1. 실제 데이터 연동
- Confluence API 연동
- SharePoint 문서 수집
- 이메일 아카이브 통합

### 2. 추가 메타데이터
- 문서 중요도 점수
- 조회수/활용도 통계
- 사용자 피드백 (좋아요/별점)

### 3. 고급 검색 기능
- 시맨틱 검색 (Azure AI Search)
- 다중 벡터 검색 (제목/본문 분리)
- Re-ranking (Claude 활용)

## 📚 관련 문서

- `구현방안-관련자료.md`: 관련자료 검색 시스템 구현 상세
- `구현방안-용어집.md`: 용어집 구축 및 Claude 연동 방안
- `통신업무도메인.md`: 통신회사 업무 도메인 정의

## 🤝 기여

샘플 데이터 개선 제안이나 추가 도메인 요청은 프로젝트 팀에 문의하세요.

---

**버전**: 1.0  
**생성일**: 2025-10-28  
**생성자**: 회의록 작성 및 공유 개선 프로젝트 팀