2026년 중장년 국비지원 무료교육과 국민내일배움카드 발급법 총정리

이미지
2026년 중장년 국비지원 핵심 포인트 1. 2026년 정부 정책 강화로 소득과 무관하게 50대 이상 누구나 국민내일배움카드를 발급받아 재취업 준비가 가능합니다. 2. 훈련비 300~500만 원 지원은 물론, 국가기간·전략산업직종훈련 선택 시 자비부담금이 100% 면제됩니다. 3. 온라인 신청부터 오프라인 상담까지, 중장년층을 위한 맞춤형 신청 절차와 추천 유망 직종 정보를 정리했습니다. 2026년 직장인 국비지원 무료교육 완벽 가이드 핵심 정리 2026년 직장인 국비지원 무료교육 완벽 가이드! 내일배움카드 사용법부터 재직자 온라인 강의, 주말 컴퓨터학원, 엑셀 데이터분석 교육까지 실무 맞춤 정보와 전략적 커리어 플랜을 확인하세요. 🌐 benefit.zzamlunch.com 2026년 1월 10일, 지금 대한민국은 '100세 시대'라는 말이 무색할 정도로 역동적인 변화를 겪고 있습니다. 과거의 5060세대가 은퇴 후 여생을 정리하는 시기였다면, 2026년의 5060세대는 축적된 경험과 노련함을 무기로 사회에 다시 뛰어드는 '신중년(New Senior)' 경제 활동의 주역입니다. 하지만 막상 재취업이나 창업, 자기계발을 결심해도 현실적인 벽에 부딪히기 마련입니다. 가장 큰 걸림돌은 단연 '비용'과 '정보 부족'입니다. "새로운 기술을 배우고 싶은데 수강료가 너무 비싸지 않을까?", "내 나이에 국비 지원을 받을 수 있을까?"라는 고민으로 망설이고 계신가요? 걱정하지 마십시오. 2026년, 국가는 경력직 같은 신입인 당신을 기다리고 있습니다. 정부는 중장년층의 고용 유지와 재취업을 핵심 정책으로 삼고, 중장년 국비지원 무료교육 제도를 대폭 강화했습니다. 오늘 이 글을 통해 내 돈 한 푼 들이지 않고, 오히려 훈련 수당을 받으며 당당하게 인생 2막을 준비하...
home Tech in Depth tnals1569@gmail.com

LangExtract: 구글의 LLM 기반 비정형 텍스트 구조화 추출 오픈소스 완벽 가이드


LangExtract: 구글의 LLM 기반 비정형 텍스트 구조화 추출 오픈소스 완벽 가이드


LangExtract Python library for LLM-powered structured data extraction from unstructured text with Gemini OpenAI Ollama support

구글이 개발한 LangExtract는 Gemini, OpenAI, Ollama 등 다양한 LLM을 활용하여 비정형 텍스트에서 정확한 소스 그라운딩과 HTML 시각화를 제공하는 Python 오픈소스 라이브러리입니다.


LangExtract란 무엇인가?


LangExtract란 무엇인가? 섹션 이미지

LangExtract는 구글이 개발한 Python 라이브러리로, 대규모 언어모델(LLM)을 사용하여 비정형 텍스트 문서에서 사용자 정의 지시사항에 따라 구조화된 정보를 추출합니다.

이 라이브러리는 의료 노트, 법적 문서, 금융 보고서 등 다양한 도메인의 텍스트에서 핵심 정보를 식별하고 정리하면서, 추출된 데이터가 원본 텍스트에 정확히 대응되도록 보장합니다.

AI 데이터 추출의 혁명

기존의 정보 추출 방법들이 복잡한 정규식 패턴이나 대규모 모델 파인튜닝을 요구했다면, LangExtract는 자연어 프롬프트와 몇 가지 예시만으로도 강력한 추출 성능을 제공합니다.

LangExtract는 단순히 텍스트에서 정보를 추출하는 것을 넘어, 모델의 세계 지식을 활용하여 명시적 정보(원본 텍스트에서 도출)와 추론적 정보(모델의 내재적 지식에서 도출)를 모두 제공할 수 있습니다.


주요 특징과 장점


LangExtract 주요 특징과 장점 정리 이미지

정확한 소스 그라운딩

LangExtract의 가장 핵심적인 특징은 정확한 소스 그라운딩입니다. 모든 추출 결과를 원본 텍스트의 정확한 위치에 매핑하여 시각적 하이라이팅을 통한 쉬운 추적성과 검증을 가능하게 합니다.

신뢰할 수 있는 구조화 출력

LangExtract는 Few-shot 예제를 기반으로 일관된 출력 스키마를 강제하며, Gemini와 같은 지원 모델에서 제어된 생성을 활용하여 견고하고 구조화된 결과를 보장합니다.

대용량 문서 최적화

대용량 문서 추출의 “바늘 찾기” 문제를 해결하기 위해 최적화된 텍스트 청킹, 병렬 처리, 다중 패스 전략을 사용하여 높은 재현율을 달성합니다.

다양한 LLM 지원

LLM 제공업체지원 모델API 키 필요특징
구글 GeminiGemini-2.5-Flash, Gemini-2.5-Pro제어된 생성, 높은 정확도
OpenAIGPT-4o, GPT-4o-mini강력한 언어 이해
Ollama로컬 모델들오프라인 사용 가능

대화형 HTML 시각화

추출 결과를 자체 포함된 인터랙티브 HTML 파일로 즉시 생성하여 수천 개의 추출된 엔티티를 원본 컨텍스트에서 시각화하고 검토할 수 있습니다.


LangExtract 설치 방법

PyPI를 통한 기본 설치

가장 간단한 LangExtract 설치 방법은 pip를 사용하는 것입니다.

# 기본 설치
pip install langextract

# 가상환경 권장 설치 방법
python -m venv langextract_env
source langextract_env/bin/activate  # Windows: langextract_env\Scripts\activate
pip install langextract

GitHub에서 개발 버전 설치

최신 기능을 사용하거나 개발에 참여하고 싶다면 GitHub에서 직접 설치할 수 있습니다

git clone https://github.com/google/langextract.git
cd langextract

# 기본 설치
pip install -e .

# 개발용 설치 (린팅 도구 포함)
pip install -e ".[dev]"

# 테스트용 설치 (pytest 포함)
pip install -e ".[test]"

API 키 설정

클라우드 기반 모델을 사용할 때는 API 키 설정이 필요합니다

# 환경 변수로 설정
export LANGEXTRACT_API_KEY="your-api-key-here"

# .env 파일 사용 (권장)
echo 'LANGEXTRACT_API_KEY=your-api-key-here' >> .env
echo '.env' >> .gitignore

API 키 획득처:


기본 사용법과 예제 코드

간단한 텍스트 추출 예제

다음은 LangExtract의 기본적인 사용 방법을 보여주는 예제입니다

import langextract as lx
import textwrap

# 1. 추출 규칙 정의
prompt = textwrap.dedent("""\
등장 순서대로 인물, 감정, 관계를 추출하세요.
정확한 텍스트를 사용하여 추출하고, 의역하거나 겹치는 엔티티는 피하세요.
각 엔티티에 컨텍스트를 추가할 의미있는 속성을 제공하세요.""")

# 2. 고품질 예제 제공
examples = [
    lx.data.ExampleData(
        text="로미오. 하지만 조용히! 저 창문으로 어떤 빛이 비치는가? 동쪽이고, 줄리엣이 태양이다.",
        extractions=[
            lx.data.Extraction(
                extraction_class="character",
                extraction_text="로미오",
                attributes={"emotional_state": "경이로움"}
            ),
            lx.data.Extraction(
                extraction_class="emotion",
                extraction_text="하지만 조용히!",
                attributes={"feeling": "부드러운 경외감"}
            ),
            lx.data.Extraction(
                extraction_class="relationship",
                extraction_text="줄리엣이 태양이다",
                attributes={"type": "은유"}
            ),
        ]
    )
]

# 3. 입력 텍스트 처리
input_text = "줄리엣 부인이 별들을 그리워하며 바라보았다, 그녀의 마음은 로미오를 향한 아픔으로 가득했다"

# 4. 추출 실행
result = lx.extract(
    text_or_documents=input_text,
    prompt_description=prompt,
    examples=examples,
    model_id="gemini-2.5-flash",
)

print("추출 결과:")
for extraction in result.extractions:
    print(f"- {extraction.extraction_class}: {extraction.extraction_text}")
    print(f"  속성: {extraction.attributes}")

JSONL 저장과 HTML 시각화

# 결과를 JSONL 파일로 저장
lx.io.save_annotated_documents([result], output_name="extraction_results.jsonl")

# 인터랙티브 HTML 시각화 생성
html_content = lx.visualize("extraction_results.jsonl")
with open("visualization.html", "w", encoding="utf-8") as f:
    f.write(html_content)

print("시각화 파일이 생성되었습니다: visualization.html")

고급 기능 활용하기

대용량 문서 처리

LangExtract는 URL에서 직접 전체 문서를 처리할 수 있으며, 병렬 처리와 향상된 민감도 기능을 통해 대용량 텍스트를 높은 정확도로 처리합니다.

# 로미오와 줄리엣 전체 텍스트를 Project Gutenberg에서 직접 처리
result = lx.extract(
    text_or_documents="https://www.gutenberg.org/files/1513/1513-0.txt",
    prompt_description=prompt,
    examples=examples,
    model_id="gemini-2.5-flash",
    extraction_passes=3,    # 다중 패스로 재현율 향상
    max_workers=20,         # 속도를 위한 병렬 처리
    max_char_buffer=1000    # 더 나은 정확도를 위한 작은 컨텍스트
)

Ollama를 활용한 로컬 LLM 사용

# Ollama 로컬 모델 사용 예제
result = lx.extract(
    text_or_documents=input_text,
    prompt_description=prompt,
    examples=examples,
    language_model_type=lx.inference.OllamaLanguageModel,
    model_id="gemma2:2b",
    model_url="http://localhost:11434",
    fence_output=False,
    use_schema_constraints=False
)

Ollama 설정 방법:

  1. Ollama 공식 사이트에서 설치
  2. ollama pull gemma2:2b 명령으로 모델 다운로드
  3. ollama serve 명령으로 서버 실행

OpenAI 모델 통합

# OpenAI GPT 모델 사용
result = lx.extract(
    text_or_documents=input_text,
    prompt_description=prompt,
    examples=examples,
    language_model_type=lx.inference.OpenAILanguageModel,
    model_id="gpt-4o",
    api_key="your-openai-api-key"  # 또는 환경변수 사용
)

실제 프로젝트 적용 사례

의료 문서 처리

LangExtract는 의료 보고서에서 구조화된 의료 정보를 추출하는 데 뛰어난 성능을 보입니다.

medical_prompt = textwrap.dedent("""\
의료 문서에서 약물명, 용량, 투여 경로, 증상을 추출하세요.
정확한 의학 용어를 사용하고 용량 정보는 숫자와 단위를 포함하세요.""")

medical_examples = [
    lx.data.ExampleData(
        text="환자에게 이부프로펜 400mg을 경구로 하루 3회 투여",
        extractions=[
            lx.data.Extraction(
                extraction_class="medication",
                extraction_text="이부프로펜",
                attributes={"dosage": "400mg", "route": "경구", "frequency": "하루 3회"}
            )
        ]
    )
]

법률 문서 분석

legal_prompt = textwrap.dedent("""\
계약서에서 당사자, 의무사항, 날짜, 금액을 추출하세요.
정확한 법률 용어와 숫자 정보를 보존하세요.""")

legal_examples = [
    lx.data.ExampleData(
        text="갑은 을에게 2024년 12월 31일까지 5,000만원을 지급할 의무가 있다",
        extractions=[
            lx.data.Extraction(
                extraction_class="party",
                extraction_text="갑",
                attributes={"role": "채무자"}
            ),
            lx.data.Extraction(
                extraction_class="obligation",
                extraction_text="5,000만원을 지급",
                attributes={"amount": "5,000만원", "deadline": "2024년 12월 31일"}
            )
        ]
    )
]

고객 리뷰 감정 분석

sentiment_prompt = textwrap.dedent("""\
고객 리뷰에서 제품명, 감정, 특징, 평점을 추출하세요.
긍정/부정/중립 감정을 명확히 구분하세요.""")

sentiment_examples = [
    lx.data.ExampleData(
        text="아이폰 15는 정말 놀라운 카메라 품질을 가지고 있어요. 5점 만점에 5점!",
        extractions=[
            lx.data.Extraction(
                extraction_class="product",
                extraction_text="아이폰 15",
                attributes={"category": "스마트폰"}
            ),
            lx.data.Extraction(
                extraction_class="sentiment",
                extraction_text="정말 놀라운",
                attributes={"polarity": "긍정", "intensity": "강함"}
            ),
            lx.data.Extraction(
                extraction_class="feature",
                extraction_text="카메라 품질",
                attributes={"aspect": "하드웨어"}
            ),
            lx.data.Extraction(
                extraction_class="rating",
                extraction_text="5점 만점에 5점",
                attributes={"score": "5/5"}
            )
        ]
    )
]

성능 최적화 팁


LangExtract 문서크기, 처리시간, 정확도, 상대비용 비교 차트 이미지

청킹 전략 최적화

LangExtract는 텍스트 구분자(예: 문단 나누기)를 존중하는 스마트 청킹 전략을 사용하여 컨텍스트를 온전하고 잘 구성된 상태로 모델에 전달합니다.

# 최적화된 청킹 설정
result = lx.extract(
    text_or_documents=large_document,
    prompt_description=prompt,
    examples=examples,
    model_id="gemini-2.5-flash",
    max_char_buffer=1500,      # 적절한 청크 크기
    extraction_passes=2,       # 놓친 엔티티 포착을 위한 다중 패스
    max_workers=10             # 시스템 리소스에 맞는 병렬 처리
)

메모리 효율적인 처리

# 대용량 문서 배치 처리
def process_documents_batch(documents, batch_size=5):
    results = []
    for i in range(0, len(documents), batch_size):
        batch = documents[i:i+batch_size]
        batch_result = lx.extract(
            text_or_documents=batch,
            prompt_description=prompt,
            examples=examples,
            model_id="gemini-2.5-flash"
        )
        results.extend(batch_result)
    return results

비용 최적화 전략

# 비용 효율적인 모델 선택
def cost_optimized_extraction(text_length):
    if text_length < 1000:
        model_id = "gemini-2.5-flash"  # 짧은 텍스트용
    elif text_length < 10000:
        model_id = "gemini-2.5-flash"  # 중간 길이 텍스트용
    else:
        model_id = "gemini-2.5-pro"    # 복잡한 장문용
    
    return model_id

문제 해결과 디버깅

일반적인 문제와 해결책

1. API 키 오류

import os
from dotenv import load_dotenv

load_dotenv()
api_key = os.getenv('LANGEXTRACT_API_KEY')
if not api_key:
    raise ValueError("API 키가 설정되지 않았습니다.")

2. 메모리 부족 문제

# 청크 크기 조정으로 메모리 사용량 감소
result = lx.extract(
    text_or_documents=text,
    prompt_description=prompt,
    examples=examples,
    max_char_buffer=800,  # 기본값보다 작게 설정
    max_workers=2         # 동시 처리 수 제한
)

3. 추출 품질 개선

# 더 상세한 예제 제공
detailed_examples = [
    lx.data.ExampleData(
        text="복잡한 입력 텍스트 예시...",
        extractions=[
            lx.data.Extraction(
                extraction_class="entity",
                extraction_text="정확한 추출 텍스트",
                attributes={
                    "detailed_attr1": "상세 속성1",
                    "detailed_attr2": "상세 속성2",
                    "confidence": "high"
                }
            )
        ]
    )
]

성능 모니터링

import time
import logging

logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)

def monitored_extraction(text_or_documents, **kwargs):
    start_time = time.time()
    logger.info(f"추출 시작: 텍스트 길이 {len(str(text_or_documents))}")
    
    try:
        result = lx.extract(text_or_documents=text_or_documents, **kwargs)
        duration = time.time() - start_time
        logger.info(f"추출 완료: {duration:.2f}초, {len(result.extractions)}개 엔티티")
        return result
    except Exception as e:
        logger.error(f"추출 실패: {str(e)}")
        raise

커뮤니티와 기여

GitHub 프로젝트 참여

LangExtract는 오픈소스 프로젝트로 기여를 환영합니다. CONTRIBUTING.md를 참조하여 개발, 테스트, 풀 리퀘스트를 시작할 수 있습니다.

참여 방법

  1. LangExtract GitHub 저장소 포크
  2. 기능 개발 또는 버그 수정
  3. 테스트 코드 작성
  4. Contributor License Agreement 서명
  5. Pull Request 제출

테스트 실행

# 저장소 클론
git clone https://github.com/google/langextract.git
cd langextract

# 테스트 의존성과 함께 설치
pip install -e ".[test]"

# 모든 테스트 실행
pytest tests

# 전체 CI 매트릭스 재현 (tox 사용)
tox  # Python 3.10, 3.11에서 pylint + pytest 실행

도움 받기


마무리

LangExtract는 비정형 텍스트에서 구조화된 정보를 추출하는 강력한 도구로, 정확한 소스 그라운딩과 인터랙티브 시각화를 제공합니다.

이 라이브러리의 핵심 장점들을 다시 정리하면

  • 정확성: 모든 추출 결과가 원본 텍스트의 정확한 위치와 연결
  • 유연성: Gemini, OpenAI, Ollama 등 다양한 LLM 지원
  • 확장성: 대용량 문서 처리를 위한 병렬 처리와 최적화
  • 사용 편의성: 간단한 프롬프트와 예제만으로 강력한 추출 성능
  • 시각화: 추출 결과를 즉시 확인할 수 있는 HTML 인터페이스

다음 단계 추천

  1. 시작하기: 간단한 예제로 LangExtract 설치 방법과 기본 사용법 익히기
  2. 도메인 적용: 자신의 도메인에 맞는 프롬프트와 예제 개발
  3. 성능 튜닝: 대용량 문서 처리를 위한 파라미터 최적화
  4. 고급 기능: JSONL 저장, HTML 시각화, 병렬 처리 활용
  5. 커뮤니티 참여: GitHub을 통한 기여와 피드백 공유

LangExtract는 AI 기반 데이터 추출의 새로운 표준을 제시하며, 개발자와 데이터 사이언티스트들이 비정형 텍스트에서 가치있는 인사이트를 효율적으로 추출할 수 있도록 돕습니다.

구조화 데이터 변환의 미래는 이미 시작되었습니다. 지금 바로 LangExtract를 통해 여러분의 텍스트 데이터를 구조화된 지식으로 변환해보세요.


관련 리소스

이 글이 도움이 되었다면 공유하고 댓글로 여러분의 LangExtract 활용 경험을 들려주세요!

Tech in Depth tnals1569@gmail.com

댓글

이 블로그의 인기 게시물

구글 홈 앱과 스마트싱스 연동 방법: 스마트홈 완벽 설정 가이드

이글루 홈캠 vs 파인뷰 홈캠 비교: 화각, 보안, 가격까지 완벽 분석하기

Claude 주간 사용량 얼마야 | Pro / Max 플랜 주간 한도 & 효율 사용법