Scikit-LLM은 전통적인 머신러닝 파이프라인과 대규모 언어 모델(LLM)을 연결하는 Python 라이브러리다. OpenAI API 또는 HuggingFace 프리트레인드 모델을 sklearn.base.BaseEstimator·TransformerMixin을 상속하는 래퍼로 감싸, 기존 sklearn.pipeline.Pipeline에 LLM 기반 전처리·분류 단계를 직접 삽입할 수 있다.
레이블 없는 분류(제로샷), 소수 예시만 있는 분류(퓨샷), 텍스트 요약, 텍스트 벡터화 등을 sklearn 친화적인 인터페이스로 제공한다.
pip install scikit-llm핵심 기능
| 기능 | 설명 |
|---|---|
| 제로샷 분류 | 학습 데이터 없이 자연어 레이블만으로 텍스트 분류 |
| 퓨샷 분류 | 소수의 예시만으로 문맥을 전달해 분류 |
| 텍스트 요약 | 긴 텍스트를 요약해 다운스트림 ML 파이프라인 입력으로 변환 |
| sklearn 호환 | Pipeline, GridSearchCV와 완전 호환 |
| 다중 백엔드 | OpenAI (기본값) 또는 HuggingFace 프리트레인드 모델 선택 가능 |
왜 유용한가
대용량 텍스트 데이터를 ML 모델에 직접 입력하면 차원 폭발 문제가 생긴다. Scikit-LLM의 요약 기능을 파이프라인 앞단에 배치하면 긴 텍스트 → 요약 → TF-IDF 벡터화 → 분류기 흐름이 단일 Pipeline.fit() 호출로 완성된다.
제로샷·퓨샷 분류는 레이블이 자주 바뀌는 고객 지원 티켓 분류, 뉴스 기사 태깅, 사용자 의도 감지 시나리오에서 학습 데이터 구축 없이 즉시 적용할 수 있다.
백엔드 선택
| 백엔드 | 장점 | 단점 |
|---|---|---|
| OpenAI (기본값) | 높은 품질 | API 비용 발생 |
| HuggingFace | 무료, 온프레미스 실행 가능 | 상대적으로 낮은 품질 |
HuggingFace 모델 사용 시 Transformers 라이브러리 추가 설치 필요:
pip install transformers==4.37.2설치 및 기본 사용
from sklearn.pipeline import Pipeline
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.linear_model import LogisticRegression
# HuggingFace 요약 모델을 sklearn 트랜스포머로 래핑 (커스텀 구현)
# scikit-llm 내장 컴포넌트 또는 BaseEstimator+TransformerMixin 상속으로 작성
pipeline = Pipeline([
('summarizer', HuggingFaceSummarizer()), # LLM 기반 요약
('vectorizer', TfidfVectorizer()),
('classifier', LogisticRegression()),
])
pipeline.fit(X_texts, y_labels)관련 문서
scikit-llm-tutorial-text-summarization — scikit-learn 파이프라인에 텍스트 요약 통합하기 zero-shot-classification — 학습 데이터 없이 텍스트를 분류하는 NLP 기법