Skip to content

LangExtract 개발자 가이드Google AI 데이터 추출 완벽 분석

오픈 소스 커뮤니티 가이드. Gemini, OpenAI, Ollama 로컬 모델을 사용하여 모든 텍스트에서 정형 데이터를 추출하는 방법을 배웁니다.

왜 이 가이드가 필요한가요?

공식 문서는 훌륭하지만, 로컬 모델 설정이나 비용 최적화, 실제 프로덕션 배포에 대한 내용은 부족할 수 있습니다.

이 가이드는 실제 프로젝트 경험을 바탕으로 Ollama 설정, 긴 문서 처리 팁, API 비용 관리 등 실질적인 노하우를 제공합니다.


빠른 시작 (Quick Start)

30초 안에 첫 번째 데이터 추출을 실행해보세요.

1. 설치 (Install)

pip를 통해 설치합니다. Python 3.9 이상이 필요합니다.

bash
pip install langextract

2. API 키 설정

기본적으로 Google Gemini를 사용합니다. Google AI Studio에서 키를 발급받으세요.

bash
export LANGEXTRACT_API_KEY="your-api-key-here"

3. 첫 번째 추출 예제 (Demo)

간단한 텍스트에서 캐릭터 정보를 추출합니다. Few-shot Example 제공이 필요합니다.

python
import langextract as lx

# 추출 프롬프트 정의
prompt = "텍스트에서 등장인물과 감정을 추출하세요."

# 모델을 안내하기 위한 Few-shot Example
examples = [
    lx.data.ExampleData(
        text="로미오: 저기 창문을 통해 비치는 빛은 무엇인가?",
        extractions=[
            lx.data.Extraction(
                extraction_class="캐릭터",
                extraction_text="로미오",
                attributes={"감정_상태": "경이로움"}
            ),
        ]
    )
]

# 입력 텍스트
text = "줄리엣은 별빛을 바라보며 로미오를 그리워했다."

# 추출 실행 (기본 Gemini Flash 모델 사용)
result = lx.extract(
    text_or_documents=text,
    prompt_description=prompt,
    examples=examples,
    model_id="gemini-2.5-flash",
)

print(result.extractions)
print(result.extractions)

4. 결과 시각화 (Interactive Visualization) 📊

LangExtract의 핵심 기능입니다. 검증을 쉽게 하기 위해 인터랙티브한 HTML 보고서를 생성합니다.

python
# 1. JSONL로 저장
lx.io.save_annotated_documents([result], output_name="extraction_results.jsonl", output_dir=".")

# 2. 인터랙티브 HTML 생성
html_content = lx.visualize("extraction_results.jsonl")
with open("visualization.html", "w") as f:
    f.write(html_content.data if hasattr(html_content, 'data') else html_content)

시각화 예제 보기


LLM 설정 가이드

다른 모델을 연동하는 방법은 무엇인가요?

로컬 모델 (Ollama) 🏠

개인 정보 보호, 비용 무료. 개발 테스트용으로 추천합니다.

  1. Ollama 설치: ollama.com 방문.
  2. 모델 다운로드: ollama pull gemma2:2b
  3. 서버 시작: ollama serve
  4. 코드 설정:
python
import langextract as lx

result = lx.extract(
    text_or_documents=text,
    prompt_description=prompt,
    examples=examples,
    model_id="gemma2:2b",  # Ollama provider 자동 선택
    model_url="http://localhost:11434",
    fence_output=False,
    use_schema_constraints=False
)

OpenAI GPT-4 🧠

복잡한 추론 작업에 적합합니다. 의존성 설치 필요: pip install langextract[openai]

bash
export OPENAI_API_KEY="sk-..."
python
import os
import langextract as lx

result = lx.extract(
    text_or_documents=text,
    prompt_description=prompt,
    examples=examples,
    model_id="gpt-4o",  # OpenAI provider 자동 선택
    api_key=os.environ.get('OPENAI_API_KEY'),
    fence_output=True,
    use_schema_constraints=False
)

주의

OpenAI 모델은 fence_output=Trueuse_schema_constraints=False가 필요합니다. LangExtract가 아직 OpenAI용 Schema 제약을 구현하지 않았기 때문입니다.

OpenAI 호환 API 🔌

LangExtract는 DeepSeek (V3/R1), Qwen, Doubao 등 모든 OpenAI 호환 API를 지원합니다.

python
import langextract as lx

result = lx.extract(
    text_or_documents=text,
    prompt_description=prompt,
    examples=examples,
    model_id="deepseek-chat",
    api_key="your-api-key",
    language_model_params={
        "base_url": "https://api.deepseek.com/v1"  # 제공업체 URL로 변경
    },
    fence_output=True,
    use_schema_constraints=False
)
    use_schema_constraints=False
)

Google Vertex AI Batch (엔터프라이즈 배치 처리) 🏢

대규모 작업의 경우 비용 절감을 위해 배치(Batch) 모드를 활성화하는 것이 좋습니다.

python
result = lx.extract(
    ...,
    language_model_params={"vertexai": True, "batch": {"enabled": True}}
)

고급 설치: Docker 🐳

로컬 환경을 오염시키지 않고 직접 실행:

bash
docker run --rm -e LANGEXTRACT_API_KEY="your-api-key" langextract python your_script.py

긴 문서 처리 (Scaling to Longer Documents) 📚

컨텍스트 창(Context Window)을 초과하는 책이나 PDF를 어떻게 처리할까요? LangExtract는 청킹(Chunking)병렬 처리 메커니즘을 내장하고 있습니다.

텍스트를 수동으로 분할할 필요가 없습니다. URL이나 긴 텍스트를 직접 전달하세요:

python
# 예제: "로미오와 줄리엣" 전체 처리
result = lx.extract(
    text_or_documents="https://www.gutenberg.org/files/1513/1513-0.txt",
    prompt_description=prompt,
    examples=examples,
    # 핵심 파라미터
    extraction_passes=3,    # 재현율(Recall) 향상을 위한 다중 추출
    max_workers=20,         # 속도 향상을 위한 병렬 워커 수
    max_char_buffer=1000    # 컨텍스트 버퍼 크기
)

실제 활용 사례

🏥 의료 데이터 추출

진료 기록에서 약품명, 복용량, 빈도를 구조화된 데이터로 추출합니다. 전체 예제 보기

📚 긴 문서 처리

토큰 제한을 초과하는 긴 텍스트(PDF, 책 등)를 처리합니다. 전체 예제 보기

🇯🇵 다국어 처리

한국어, 일본어 등 비영어권 텍스트 처리. 전체 예제 보기


자주 묻는 질문 (FAQ)

Q: LangExtract는 무료인가요? A: 라이브러리 자체는 오픈 소스(Apache 2.0)이며 무료입니다. Gemini나 OpenAI API를 사용하는 경우 API 비용이 발생합니다. 로컬 Ollama를 사용하면 완전히 무료입니다.

Q: Vector DB(Milvus)와 연동되나요? A: 네, LangExtract + Milvus 조합은 하이브리드 문서 처리에 강력합니다. 추출된 메타데이터를 Milvus에 저장하여 검색 성능을 높일 수 있습니다.

Q: 한국어도 지원하나요? A: 네, Gemini와 GPT-4는 한국어 처리 능력이 뛰어나므로 LangExtract도 문제없이 작동합니다.

커뮤니티 가이드.