• LangChain이란?

    image.png

    • LangChain은 LLM(대규모 언어 모델)을 중심으로 하는 애플리케이션을 만들기 위한 오픈소스 프레임워크/생태계
    • llm활용·RAG·메모리·워크플로우를 “컴포넌트”로 제공하고, 이를 조합해 확장 가능한 시스템의 생성을 지원
  • LangChain의 사용이유

    • 생산성
      • 각종 툴 호출, 프롬프트 템플릿, 출력 파싱, RAG 요소구성 등 반복구현 작업 감소
    • 유지보수성
      • 각 작업의 단계를 컴포넌트화하고 표준화하여 테스트 및 교체의 용이
      • 예시)모델 변경(OpenAI → Gemini), vectorDB변경(pgvector → pinecone) 등
    • 복잡한 프로젝트에서의 효율성
      • 매우 단순한 프로젝트에서는 LangChain 불필요
      • 현대의 ai agent들의 복잡성(각종도구/RAG/워크플로우)에서 LangChain 필요
  • LangChain의 핵심 구성요소

    • 다양한 LLM(Model) 공통 인터페이스 제공
      • LLM 인터페이스 제공
        • OpenAi, GooGle, Anthorpic 등 LLM 모델별 연동 라이브러리 지원
      • 프롬프트 템플릿(LCEL-LangChain Expression Language)
        • 파이프라인으로 간결하게 llm에 연동하고 출력값을 간편하게 처리하는 langchain 문법
    • RAG 파이프라인 구축(문서 로딩 → 문서분해(청킹, split) → 임베딩 → 저장 → 검색 등)
      • 문서로딩
        • PDF, HTML, Notion 등 다양한 소스를 로딩
      • Text Splitter(청킹)
        • 적절한 크기와 문장 단위로 문서를 split
        • 줄바꿈, “.”, 띄어쓰기 등 최적의 split 알고리즘을 적절히 실행
      • Embeddings
        • 모델(LLM)별 라이브러리 지원
        • 세부모델, 차원 등 모델의 속성 및 임베딩 작업 지원
      • Vector DB(저장)
        • VectorDB 모델별 클래스를 제공(PGVector 등)
        • 벡터 테이블 자동 생성 및 데이터 간편 저장
      • Retriever(검색)
        • 벡터 유사도 검색 기능 지원, BM25 검색 기능 지원
        • 벡터유사도/BM25를 섞은 하이브리드 검색 가능
    • 대화 상태 이력 관리(Memory & State )
      • 이전 대화를 db에 저장하고, 문맥을 고려한 응답을 생성하기 위한 LangChain 활용
      • 메모리 관련 LangChain 라이브러리
        • MessagesPlaceholder : 이전에 나눈 메시지를 처리해줄수 있는 클래스
        • HumanMessage : 사용자가 보낸 질의 메시지
        • AIMessage : AI(LLM)의 응답 메시지
      • 메시지 이력(메모리)관리 방식의 종류
        • Window memory 방식
          • 최근 k개 메시지만 조회한 후 llm에 응답 요청시 k개 메시지도 함께 전달
          • 가장 일반 적인 방식
        • BufferMemory 방식
          • 전체이력 메시지를 llm에 모두 전달
          • 토큰의 큰 소모로 비효율이 발생하므로, 일반적으로 사용되지 않음
        • Summary 방식
          • 이전 메시지에 대해 요약을 하여 별도 저장
          • 요약 메시지를 llm에 함께 전달하여 토큰 절약
          • 긴 문장이 발생되는 법률상담, 의료상담의 경우에 사용
    • 관측/평가/배포 등 ai agent 서버 운영에 대한 기타 편의 제공