작업 완료 · 2025
라이선스 원문을 보존하는 LLM 분류 파이프라인
라이선스 원문과 LLM 분류·판단 근거를 함께 저장하고 운영 데이터셋을 통합했습니다.
기간2025
소속래브라도랩스(LabradorLabs)
역할데이터 엔지니어 · 파이프라인 재설계 주도
AI/LLMPython라이선스
작업 요약
라이선스·예외 약 800건 분류 · 전체 결과 직접 검수
원문을 먼저 저장한 이유
AI는 복잡한 조인과 기존 라이선스 분석 서비스 의존을 줄이는 분류 단계로 사용했습니다. 라이선스 원문을 먼저 저장한 뒤 ChatGPT API가 type과 주요 권한을 분류하게 했습니다.
SPDX 라이선스 원문과 분류 결과를 함께 보관했고, 분류한 결과를 하나씩 직접 확인했습니다.
배경
오픈소스 라이선스 데이터를 제공하기 위한 기존 수집 체계는 여러 테이블을 복잡하게 조인해야 결과를 얻을 수 있었고 분석의 상당 부분을 외부 서비스에 의존했습니다.
- 조회 한 건마다 다수 테이블을 조합해야 해 구조가 복잡하고 유지보수가 어려움(재설계로 조인 테이블 3개를 걷어냄)
- 핵심 분석을 외부 서비스에 맡기다 보니 의존성·운영 리스크가 컸음
접근
여러 출처의 라이선스 원문(full_text)을 하나의 원문 통합 저장소에 모으고 이를 AI(LLM)가 분석해 정제된 최종 데이터를 단일 테이블로 만들어내는 파이프라인으로 재설계했습니다.
- 기존 라이선스 분석 서비스 의존을 걷어내고 LLM API(ChatGPT)를 명시적인 모델 단계로 도입해 SPDX 라이선스 650건 이상의 원문을 분석
- AI가 라이선스를
permissive/protectivetype과 주요 권한으로 분류 - 프롬프트 엔지니어링으로
protective를 다시 Weak / Strong로 세분화
결과
구조 단순화복잡한 다중 테이블 조인을 걷어내고 정제 데이터를 단일 테이블로 통합
분석 단계 분리기존 분석 서비스는 제거하고 ChatGPT API 호출을 파이프라인의 별도 분석 단계로 분리
입력·결과 대조라이선스 원문과 분류 결과를 함께 저장하고, protective는 Weak/Strong으로 세분화
SPDX 라이선스와 예외 약 800건의 분류 결과를 하나씩 직접 확인하며 정확도를 측정했습니다. 원문과 결과를 함께 남겨 이후에도 다시 대조할 수 있도록 했습니다.
역할
원문을 한곳에 모으는 데이터 모델과 처리 파이프라인을 직접 만들었습니다. 기존 분석 서비스 대신 ChatGPT API를 별도 단계로 붙였고, 라이선스 type과 권한을 분류하며 protective를 Weak/Strong로 나누도록 프롬프트를 작성했습니다. 원문과 분류 결과는 같은 데이터 흐름에서 읽게 했고, 전체 결과를 직접 검수했습니다.
📜 라이선스 데이터 시리즈 ③ — ① 라이선스 DB화 · ② 양립성 DB