hgzero/design/aidata/관련자료.md
ondal 347e76bb34 회의록 참조 데이터 추가 및 관련자료 업데이트
- meet-ref.json: 회의록 작성을 위한 AI 학습 참조 데이터 추가
- 관련자료.md: 회의록 관련 참고 문서 업데이트

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-28 11:28:00 +09:00

12 KiB

벡터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개
    ├── 영업마케팅
    │   ├── ... (동일 구조)
    ├── 요금청구
    ├── 네트워크운용
    ├── 서비스기획
    ├── 시스템운영
    ├── 가입자관리
    └── 기업영업

🔧 데이터 스키마

공통 필드

{
  "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)

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

2. 조직문서 (org_document)

"metadata": {
  "folder": "/고객서비스/정책/문서",
  "document_version": "3.2",
  "last_updated": "2024-06-01"
}

3. 프로젝트 문서 (project_document)

"metadata": {
  "folder": "/프로젝트/고객서비스",
  "project_status": "진행중",  // 계획 | 진행중 | 완료
  "document_type": "요구사항정의서"
}

4. 운영문서 (operation_document)

"metadata": {
  "folder": "/고객서비스/운영/장애보고",
  "incident_number": "INC-2024-09-157",
  "severity": "High",  // Critical | High | Medium | Low
  "status": "복구완료"
}

💡 사용 예시

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'])}")

임베딩 생성 예시

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 예시)

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)

유사 문서 검색 예시

# 쿼리 텍스트
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. 하이브리드 검색

# 키워드 필터 + 벡터 유사도 검색
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. 시간 기반 필터링

# 최근 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. 문서 유형별 가중치

# 회의록 우선, 프로젝트 문서 보조
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
생성자: 회의록 작성 및 공유 개선 프로젝트 팀