메타데이터란?
| 메타데이터 필드 | 설명 | 예시 |
|---|---|---|
category | 보험 분류 | "자동차보험", "건강보험" |
insurance_company | 보험사 | "삼성화재", "현대해상" |
insurance_name | 보험 상품명 | "행복든든보험", "실손보험" |
sale_start_date | 판매 시작일 | "2020-01-01" |
sale_end_date | 판매 종료일 | "2023-12-31" |
status | 판매 상태 (자동 계산 가능) | "판매중", "판매종료" |
target_audience | 대상 고객층 | "개인", "법인", "노인", "청년" |
coverage_amount | 보장 한도 | "1억 원", "2천만 원" |
policy_type | 보험 유형 | "정액형", "실비형" |
contract_term | 계약 기간 | "10년", "20년" |
premium_range | 보험료 범위 | "월 5만원", "연 100만원" |
📌 특징
status 필드는 sale_end_date 기준으로 자동 계산 가능 category="건강보험"인 데이터만 조회) insurance_company="삼성화재")💡 벡터DB에 저장할 때는 벡터와 함께 JSON 형태로 메타데이터 저장 가능
import pinecone
# Pinecone에 연결
pinecone.init(api_key="your-api-key", environment="us-west1-gcp")
# 인덱스 생성 (벡터DB)
index = pinecone.Index("insurance_vectors")
# 예제 데이터 (청크된 보험 관련 문서)
vector_id = "insurance_001"
vector_embedding = [0.123, 0.234, 0.567, ...] # 임베딩된 벡터 값
metadata = {
"category": "건강보험",
"insurance_company": "삼성화재",
"insurance_name": "행복든든보험",
"sale_start_date": "2020-01-01",
"sale_end_date": "2023-12-31",
"status": "판매종료", # 자동 계산 가능
"target_audience": "개인",
"coverage_amount": "1억 원",
"policy_type": "정액형",
"contract_term": "10년",
"premium_range": "월 5만원"
}
# 벡터DB에 저장
index.upsert(vectors=[
(vector_id, vector_embedding, metadata)
])
💡 벡터DB에서 검색할 때 메타데이터를 활용하면 필요한 데이터만 빠르게 조회 가능
query_result = index.query(
vector=[0.123, 0.234, 0.567, ...], # 쿼리 벡터
top_k=10, # 유사한 10개 반환
filter={"insurance_company": "삼성화재"} # 특정 보험사만 조회
)
query_result = index.query(
vector=[0.123, 0.234, 0.567, ...],
top_k=10,
filter={"status": "판매중"} # 판매 종료된 상품 제외
)
query_result = index.query(
vector=[0.123, 0.234, 0.567, ...],
top_k=10,
filter={"category": "건강보험", "premium_range": "월 5만원"}
)
💡 status 필드를 자동으로 업데이트하도록 관리하면 더욱 효율적임.
💡 sale_end_date가 현재 날짜보다 작으면 status="판매종료"로 설정.
from datetime import datetime
def update_status(metadata):
today = datetime.today().strftime("%Y-%m-%d")
if metadata["sale_end_date"] < today:
metadata["status"] = "판매종료"
else:
metadata["status"] = "판매중"
return metadata
✅ 빠른 검색 및 필터링 가능
✅ 필요 없는 데이터(판매 종료된 보험 상품) 쉽게 제거 가능
✅ 보험 분류, 회사별 검색 등 편리한 쿼리 가능
✅ 메타데이터 자동 업데이트로 관리 부담 최소화
1️⃣ 보험 상품 데이터를 벡터DB에 저장할 때 메타데이터 포함
2️⃣ 보험 분류, 보험사, 판매 상태 등 필터링 가능한 항목 포함
3️⃣ 판매 종료 여부(status) 자동 관리하여 쿼리 효율화
4️⃣ 필요한 조건을 설정하여 원하는 보험 데이터만 검색 가능
➡️ 메타데이터를 잘 활용하면 벡터DB에서 검색이 더 빠르고 정확해짐! 🚀
📌 벡터DB 적용 환경(Pinecone, Weaviate, FAISS 등)을 선택해야 함
📌 실제 데이터셋을 벡터로 변환하는 과정 필요
📌 메타데이터 자동 업데이트 스크립트 실행 고려