IT기술/랭체인 (langchain)

LangChain을 활용한 실무 문서 요약 및 생성 자동화 전략

후스파 2025. 4. 28. 15:37
반응형

랭체인 LangChain

LangChain은 대규모 언어 모델(LLM)을 활용해 문서 처리 작업을 자동화하는 강력한 프레임워크입니다. 실무에서 문서 요약, 정보 추출, 보고서 생성 등의 작업을 효율적으로 수행할 수 있는 방법을 단계별로 설명합니다.

 


 

1. 문서 처리 파이프라인 구축

 

(1) 문서 로딩 & 형식 변환

  • PDF/Word/HTML 처리:
from langchain_community.document_loaders import PyPDFLoader, UnstructuredFileLoader

# PDF 문서 로드
pdf_loader = PyPDFLoader("contract.pdf")
pages = pdf_loader.load()

# Word 문서 변환
doc_loader = UnstructuredFileLoader("report.docx")
docs = doc_loader.load()
  • 웹 크롤링:
from langchain_community.document_loaders import WebBaseLoader

loader = WebBaseLoader("https://example.com/whitepaper")
web_docs = loader.load()

 

(2) 텍스트 분할

  • RecursiveCharacterTextSplitter로 장문 분할:
from langchain_text_splitters import RecursiveCharacterTextSplitter

text_splitter = RecursiveCharacterTextSplitter(
    chunk_size=1000, 
    chunk_overlap=200,
    separators=["\n\n", "\n", "。", " "]
)
splits = text_splitter.split_documents(docs)

 


 

2. 요약 자동화 전략

 

(1) Map-Reduce 방식

  • 개별 청크 요약 후 통합:
from langchain.chains import MapReduceDocumentsChain
from langchain_openai import ChatOpenAI

llm = ChatOpenAI(model="gpt-4o")

# 개별 청크 요약 (Map)
map_template = """다음 내용을 3문장으로 요약: {docs}"""
map_chain = load_summarize_chain(llm, chain_type="map", prompt=map_template)

# 최종 통합 (Reduce)
reduce_template = """부분 요약들을 종합해 전체 문서의 핵심을 5문장으로 요약: {doc_summaries}"""
reduce_chain = load_summarize_chain(llm, chain_type="reduce", prompt=reduce_template)

final_summary = (map_chain | reduce_chain).invoke(splits)

 

(2) Refine 방식

  • 점진적 개선을 통한 정교화:
    refine_template = """
    기존 요약: {existing_answer}
    새로운 내용: {text}
    두 정보를 종합해 더 정확한 요약을 생성하세요.
    """
    refine_chain = load_summarize_chain(llm, chain_type="refine", prompt=refine_template)

 


 

3. 고급 정보 추출 기술

 

(1) 구조화된 데이터 추출 (Pydantic)

  • 법적 계약서에서 조항 추출:
from pydantic import BaseModel
from langchain_core.output_parsers import PydanticOutputParser

class ContractClause(BaseModel):
    clause_number: str
    effective_date: str
    obligations: list[str]

parser = PydanticOutputParser(pydantic_object=ContractClause)

prompt = ChatPromptTemplate.from_template(
    "계약서에서 다음 필드를 추출: {format_instructions}\n{input}"
)
chain = prompt | llm | parser
result = chain.invoke({"input": contract_text})

 

(2) 다국어 문서 처리

  • 영문-한글 자동 번역 요약:
translation_prompt = """
[영문 원본]
{text}

이 내용을 한국어로 번역한 후 핵심을 3문장으로 요약하세요.
"""

 


 

4. 실무 적용 사례

 

(1) 의료 기록 분석

  • 환자 진단서에서 키워드 추출:
    medical_template = """
    다음 진단 기록에서 주요 질병명, 처방 약물, 추적 검사 항목을 JSON 형식으로 추출:
    {text}
    """

 

(2) 재무 보고서 처리

  • 분기별 리포트 데이터 시각화:
    financial_prompt = """
    다음 재무 데이터를 분석해 주요 지표(매출 성장률, 순이익률, R&D 투자액)를 추출하고,
    이를 바탕으로 3개의 차트(막대/파이/라인)를 생성하기 위한 Python 코드를 작성하세요.
    """

 


 

5. 성능 최적화 팁

  • 청크 크기 조정: 문서 특성에 따라 500~2000자 범위에서 실험
  • LLM 선택:
    • 고품질 요약: GPT-4, Claude-3
    • 경제적 처리: Llama-3-70B, Mixtral
  • 캐싱 전략:
    from langchain.cache import SQLiteCache
    import langchain
    langchain.llm_cache = SQLiteCache(database_path=".langchain.db")

 


 

6. 문제 해결 가이드

  • 정보 누락 방지: chain_type="refine"으로 점진적 개선
  • 형식 오류 대응:
from langchain_core.output_parsers import RetryOutputParser

retry_parser = RetryOutputParser.from_llm(parser=parser, llm=llm)
chain = prompt | llm | retry_parser
  • OCR 결합:
from paddleocr import PaddleOCR
ocr = PaddleOCR()
result = ocr.ocr("scanned_doc.jpg")

 


 

이처럼 LangChain은 단순 요약을 넘어 사용자 정의 워크플로우 구축이 가능합니다. 문서 유형과 비즈니스 요구사항에 맞게 파이프라인을 설계하면, 법무팀의 계약 검토 시간을 70% 절약하거나 고객 피드백 분석 주기를 시간 단위로 단축하는 등 실질적인 생산성 향상을 달성할 수 있습니다.

 

 

[LangChain] 실무에서 활용 가능한 문서 요약 및 생성을 통한 문서 처리 자동화

LangChain은 대규모 언어 모델(LLM)을 다양한 도구 및 데이터 소스와 연결하여 문서 처리 작업을 자동...

blog.naver.com

 

 

LangChain과 외부 데이터 연결: API, 데이터베이스, 파일 시스템 통합 실전 가이드

LangChain은 언어 모델을 외부 시스템(API, 데이터베이스, 파일 시스템)과 연결해 실용적인 AI 애플리케이션을 구축할 수 있는 프레임워크입니다. 아래에 각 통합 방법을 상세히 설명합니다. 1. REST AP

hoosfa.tistory.com

 

반응형