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에서 직접 가져온 것이며, 외부적인 가정은 추가되지 않았습니다.

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트