fastino-ai/GLiNER2
Unified Schema-Based Information Extraction
GLiNER2 – 통합된 스키마 기반 정보 추출 및 분류
주요 기능 (쉬운 설명)
GLiNER2는 로컬에서 실행되는 Python 기반 라이브러리로, 원시 텍스트에서 구조화된 정보를 추출할 수 있습니다. 전통적인 개체명 인식(인물, 기업, 날짜)부터 본격적인 레코드 추출, 관계 탐지, 텍스트 분류까지 모두 가능합니다. 이러한 모든 작업은 정의한 단일 schema를 공유하며, 동일한 모델이 한 번의 추론 패스로 처리할 수 있습니다.
왜 중요한가
- 하나의 모델, 다양한 작업 – NER, 분류, 관계 추출 모델을 따로 학습시킬 필요가 없습니다. 스키마를 한 번 정의하면 라이브러리가 요청된 모든 필드를 예측합니다.
- 두 가지 추론 스타일 –
- Span (GLiNER2) – 고정 폭 그리드 방식으로, 레거시 체크포인트에 유용합니다.
- Boundary (GLiNER2.5) – 희소한 시작/끝 쌍 아키텍처로, 임의 길이의 span을 표현할 수 있어 긴 엔티티에 대해 더 나은 커버리지를 제공합니다.
- CPU 우선 – 일반 CPU에서 빠르게 실행되도록 설계되었으며, GPU는 추가 속도가 필요할 때 선택적으로 사용합니다.
- 개인정보 보호 우선 – 모든 처리가 로컬에서 이루어지며, 데이터가 기기 외부로 유출되지 않습니다.
사용 방법 (퀵 스타트)
# 핵심 라이브러리 – 무거운 의존성 없음
pip install gliner2
# 로컬 추론 추가 (PyTorch + 선택적 flash-attention)
pip install "gliner2[local]"
from gliner2 import AutoExtractor
# 준비된 영어 모델 로드 (boundary 아키텍처)
model = AutoExtractor.from_pretrained("fastino/gliner2.5-base-v1")
text = "Apple CEO Tim Cook announced iPhone 15 in Cupertino yesterday."
result = model.extract_entities(text, ["company", "person", "product", "location"])
print(result)
# → {'entities': {'company': ['Apple'], 'person': ['Tim Cook'], ...}}
동일한 AutoExtractor로 span 전용 체크포인트, 보안/PII 모델, 분류 특화 체크포인트도 로드할 수 있습니다.
주요 기능 (README 참조)
| 기능 | 제공 가치 |
|---|---|
| 통합 스키마 API | 엔티티, 분류, 레코드, 관계 및 span 속성을 단일 JSON 형태의 스키마로 정의. |
| 제약 조건 디코딩 | Classifier는 작업 간 라벨 규칙을 강제하며, JointIE는 타입화된 엔티티-관계 그래프를 구축. |
| 긴 문서 지원 | 청크 및 오버랩 API (extract_entities_long)를 통해 모델의 컨텍스트 윈도우를 초과하는 텍스트를 처리하면서도 전역 문자 오프셋을 유지. |
| 사용자 정의 단어 분리기 | 공백 및 문자 단위 토큰화 간 전환 가능 (중국어 등 공백 없는 언어에 유용). |
| 양자화 및 컴파일 | 선택적 fp16 양자화 및 torch.compile을 통한 빠른 GPU 추론. |
| 보안 및 PII 모델 | 사전 미세 조정된 체크포인트 (gliguard-LLMGuardrails, gliner2-privacy-filter-PII)를 통한 개인정보 마스킹 및 가드레일 적용. |
| LoRA 어댑터 | [train] 추가 기능을 통한 파라미터 효율적 미세 조정. |
사용 가능한 모델 (요약)
| 모델 | 파라미터 | 아키텍처 | 언어 | 일반적 용도 |
|---|---|---|---|---|
gliner2-base-v1 |
205 M | Span | 영어 | 일반 IE (레거시) |
gliner2.5-base-v1 |
194 M | Boundary | 영어 | 기본 다중 작업 IE |
gliner2.5-multi-v1 |
287 M | Boundary | 다국어 | 다국어 IE |
GLiNER2.5-Decide |
340 M | Span | 영어 | 텍스트 분류 전용 |
gliguard-LLMGuardrails-300M |
~300 M | Span | – | 보안 / 유해성 필터링 |
gliner2-privacy-filter-PII-multi |
205 M | Span | 다국어 | PII 탐지 |
GLiNER2를 선택해야 하는 이유
- 로컬 추론이 필요함 (클라우드 API 없음, GDPR 준수).
- 하위 작업에서 엔티티 추출, 분류, 관계 데이터가 혼합되어 있음 (예: 브로셔에서 제품 카탈로그를 추출하면서 감정 태깅).
- CPU 전용 서버나 엣지 기기에서 실행하면서도 적절한 속도를 원함.
- NER, 분류기, 관계 추출 파이프라인을 따로 구성하는 대신 단일 스키마 기반 인터페이스를 원함.
제한 사항 (설명된 내용)
- Boundary 아키텍처 (
GLiNER2.5)는[local]추가 기능 (PyTorch)이 필요합니다. 핵심gliner2패키지만으로는 스키마 유틸리티와 클라우드 API 클라이언트만 제공됩니다. - 추론 시 단어 분리기를 전환하면 모델이 동일한 분리기로 학습되지 않은 경우 정확도가 떨어질 수 있습니다.
- 영어 IE에서 최고의 정확도를 얻으려면 README는
gliner2.5-base-v1체크포인트를 권장합니다. 작은 모델은 성능과 속도를 맞바꿉니다.
위의 모든 세부 정보는 프로젝트의 README에서 직접 가져온 것이며, 외부적인 가정은 추가되지 않았습니다.
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트