본문으로 건너뛰기

Metadata 생성

원문 청크를 근거로 LLM을 사용해 문서의 도메인 정보를 18종 Metadata로 정리합니다.

입력과 출력

입력문서의 원문 청크
출력문서 하나당 domain_* 18종 Metadata

출력은 문서 단위로 생성됩니다.

{
"document_id": "d002343_6b6d39ebe6", // Metadata를 생성한 문서의 ID
"domain_doc_type": ["안전보건 지침"], // 문서 유형
"domain_accident_type": ["떨어짐"], // 문서에 나타난 재해 형태
"domain_process": ["개구부 덮개 설치"], // 문서에 나타난 작업 또는 공정
"domain_equipment": ["안전난간"], // 문서에 나타난 설비·기계·기구·보호구
"domain_location": ["건설현장"] // 문서에 나타난 장소 또는 작업 공간
}

각 필드는 배열 형태이며, 문서에서 해당 정보를 찾지 못하면 빈 배열로 남습니다.

동작 방식

  1. 문서의 원문 청크를 Metadata 생성의 근거로 구성합니다.
  2. LLM이 정해진 18종 필드에 맞춰 값을 추출합니다.
  3. 결과를 문서 단위 Metadata로 정리합니다.

출력 형식은 JSON Schema로 제한하며, 원문에서 확인되지 않는 값은 결과에 남기지 않습니다.

18종 Metadata

저장 키의미예시
1domain_doc_type문서 유형안전보건 지침, 자율점검표
2domain_accident_type재해 형태추락, 끼임, 화재, 온열질환
3domain_process작업 또는 공정명용접작업, 중량물운반, 환기
4domain_equipment설비·기계·기구·보호구지게차, 안전난간, 냉각조끼
5domain_industry업종건설업, 제조업
6domain_target_dept대상 부문 또는 업권건설부문, 소규모 사업장
7domain_organization기관 또는 조직명고용노동부, 원청, 협력업체
8domain_regulation법령·규칙·기준명산업안전보건법, KOSHA GUIDE
9domain_metric수치와 단위가 결합된 지표체감온도 33도, 산소농도 18%
10domain_substance화학물질 또는 유해물질명황화수소, 일산화탄소, 벤젠
11domain_year역할이 명시된 연도사고 2023년, 개정 2021년
12domain_personnel인력·직무·대상자근로자, 관리감독자, 고령자
13domain_date역할이 명시된 일자사고 2023-07-15
14domain_location장소 또는 작업 공간건설현장, 옥상, 밀폐공간
15domain_safety_measure안전조치 또는 예방대책안전대 착용, 작업 전 환기
16domain_casualty사망·부상 인원과 정도사망 1명, 부상 2명
17domain_cause문서가 명시한 사고 원인안전난간 미설치, 환기 미실시
18domain_education교육 유형·대상·내용·시간정기교육 4시간, 특별안전교육

생성된 Metadata는 검색표현 생성에서 문서의 맥락을 보강하는 데 사용됩니다.

18종 필드의 정의는 backend/struct4search/domain/metadata_fields.yaml에서 관리합니다.

설정

Metadata 생성에 사용하는 모델과 출력 길이, 입력 구성 방식은 configs/production.yaml에서 설정합니다. 프롬프트는 prompts/registry.yaml을 통해 관리합니다.

Metadata 생성 방식이나 프롬프트가 달라지면 검색표현도 달라질 수 있으므로 Metadata 생성 이후 단계를 다시 처리합니다(실행과 재처리).

코드 참조

확인할 내용파일·심볼
Metadata 생성backend/struct4search/ingest/stages/metadata/extractor.py · MetadataLLMExtractor
18종 정의backend/struct4search/domain/metadata_fields.yaml
프롬프트prompts/metadata/f400-18-fields/v1.txt
설정configs/ingest-production.yaml · g2.metadata_*