-
LangChain이란?

- 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 서버 운영에 대한 기타 편의 제공