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의 세계 지식을 프롬프트 엔지니어링으로 활용합니다.

시작하기 –

  1. pip install langextract(또는 소스/Docker)로 설치합니다.
  2. 추출 작업을 설명하는 짧은 프롬프트를 작성하고 원하는 출력 형식을 보여주는 하나 이상의 ExampleData 객체를 제공합니다.
  3. lx.extract(text_or_documents, prompt_description, examples, model_id=…)를 호출합니다.
  4. 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 도구 분야에 완벽하게 부합합니다.

관련

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