google/langextract
A Python library for extracting structured information from unstructured text using LLMs with precise source grounding and interactive visualization.
LangExtract – LLM을 활용한 구조화 추출
기능 – LangExtract는 비정형 텍스트(임상 기록, 문학 작품, 보고서 등)에서 구조화된 정보(엔티티, 속성, 관계)를 추출할 수 있는 Python 라이브러리입니다. 텍스트를 few-shot 프롬프트와 함께 대규모 언어 모델(LLM)에 보내고, 반환된 각 데이터를 원본 문서의 정확한 문자 범위에 매핑합니다. 또한 인터랙티브 HTML 시각화 도구를 생성하여 각 추출 결과를 컨텍스트 내에서 강조 표시합니다.
중요성 –
- 근거 기반 결과: 각 추출이 소스 위치에 연결되어 검증이 쉬워지고 추적 가능성이 필요한 다운스트림 파이프라인(예: 의료 감사)을 지원합니다.
- 긴 문서 지원: 텍스트가 자동으로 청크로 분할되고 병렬 처리되며 재현율을 높이기 위해 여러 번의 패스를 실행할 수 있습니다.
- 모델 비종속: Google Gemini(클라우드), OpenAI 모델, Ollama를 통한 로컬 모델을 지원하며 플러그인 시스템으로 사용자 정의 공급자를 추가할 수 있습니다.
- 파인튜닝 불필요: 프롬프트와 몇 가지 예제만 제공하면 LLM의 세계 지식을 프롬프트 엔지니어링으로 활용합니다.
시작하기 –
pip install langextract(또는 소스/Docker)로 설치합니다.- 추출 작업을 설명하는 짧은 프롬프트를 작성하고 원하는 출력 형식을 보여주는 하나 이상의 ExampleData 객체를 제공합니다.
lx.extract(text_or_documents, prompt_description, examples, model_id=…)를 호출합니다.lx.io.save_annotated_documents로 결과를 JSONL 파일에 저장하고lx.visualize로 시각화 HTML 파일을 생성합니다.
일반적인 워크플로 스니펫
import langextract as lx, textwrap
prompt = "등장 순서대로 캐릭터, 감정, 관계를 추출하세요. 정확한 텍스트를 사용하세요."
examples = [
lx.data.ExampleData(
text="ROMEO. But soft! …",
extractions=[
lx.data.Extraction("character", "ROMEO", {"emotional_state": "wonder"}),
lx.data.Extraction("emotion", "But soft!", {"feeling": "gentle awe"}),
],
)
]
result = lx.extract(
text_or_documents="Lady Juliet gazed longingly at the stars…",
prompt_description=prompt,
examples=examples,
model_id="gemini-3.5-flash",
)
lx.io.save_annotated_documents([result], "extraction_results.jsonl")
html = lx.visualize("extraction_results.jsonl")
open("visualization.html", "w").write(html.data)
지원 백엔드 –
- Google Gemini(클라우드,
LANGEXTRACT_API_KEY필요). - OpenAI(
gpt‑4o,gpt‑4o‑mini등, 선택적으로langextract[openai]). - Ollama(
gemma2:2b같은 로컬 모델용, API 키 불필요). - 사용자 정의 공급자는 경량 플러그인 레지스트리를 통해 별도 패키지로 추가할 수 있습니다.
확장성 기능 –
- 병렬 청크 처리(
max_workers). - 다중 추출 패스(
extraction_passes). - 비용 효율적인 대규모 작업을 위한 Vertex AI 배치 API 통합.
더 알아보기 –
- 라이브 데모: https://google‑langextract.hf.space/(브라우저에서 로미오와 줄리엣 추출).
docs/폴더의 전체 문서(스키마 사용법, 배치 API, 공급자 플러그인 가이드 포함).- 긴 텍스트, 약물 추출, 방사선 보고서 구조화(RadExtract)를 위한 예제 노트북.
커뮤니티 및 기여 – 리포지토리에는 커뮤니티 구축 모델 공급자 목록이 포함되어 있으며 풀 리퀘스트를 환영합니다. 기여에는 기여자 라이선스 계약이 필요합니다.
LangExtract는 LLM 기반 정보 추출을 목표로 하는 진정한 오픈 소스 프로젝트로, AI/ML 도구 분야에 완벽하게 부합합니다.
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트