LangChain4j 소개

LangChain4j 소개 (Introduction)

Java 애플리케이션에 LLM을 통합하는 일은 생각보다 수다한 작업이에요. 공급자마다 제각각인 API를 배우고, 임베딩 저장소까지 붙이려면 반복되는 연결 코드가 쌓이죠. LangChain4j는 이런 번거로움을 줄이려고 만든 Java용 LLM 통합 프레임워크예요. 통합 API와 재사용 가능한 도구 모음을 제공해서, 채팅봇부터 RAG까지 다양한 LLM 기반 앱을 Java 관례에 맞게 빠르게 만들 수 있어요.

출처: 공식문서

이름 때문에 LangChain(Python)을 Java로 포팅한 것으로 착각하기 쉬운데, LangChain4j는 LangChain의 Java 포트가 아니에요. Java 관례(타입 안전성, POJO, 애노테이션, 인터페이스, 의존성 주입, 플루언트 API)에 맞춰 처음부터 설계된 순수 Java 라이브러리이고, API·내부·릴리스 주기는 LangChain 프로젝트와 무관하게 독립적으로 운영돼요.

왜 LangChain4j인가

LLM 공급자(OpenAI, Google Vertex AI 등)와 임베딩(벡터) 저장소(Pinecone, Milvus 등)는 각자 전용 API를 가지고 있어요. LangChain4j는 이를 하나의 통일된 API로 감싸서, 코드를 다시 쓰지 않고도 다른 LLM이나 임베딩 저장소로 쉽게 전환할 수 있게 해 줘요. 현재 20개 이상의 인기 LLM 공급자와 30개 이상의 임베딩 저장소를 지원해요.

2023년 초부터 커뮤니티가 쌓아온 추상화·패턴·기법을 재사용 가능한 패키지로 정리한 것도 핵심이에요. 프롬프트 템플릿, 채팅 메모리 관리, 함수 호출 같은 저수준 도구부터 에이전트(Agents)와 RAG 같은 고수준 패턴까지, 각 추상화마다 인터페이스와 여러 구현을 함께 제공해요.

두 가지 추상화 레벨

LangChain4j는 두 레벨의 추상화로 동작해요.

  • 저수준: ChatModel, UserMessage, AiMessage, EmbeddingStore, Embedding 같은 개별 컴포넌트에 직접 접근해요. 자유도가 가장 높지만, 직접 조립해야 하는 연결 코드가 더 필요해요.
  • 고수준: AI Services 같은 고수준 API로 LLM과 대화해요. 복잡성과 보일러플레이트는 숨겨지고, 동작은 선언적인 방식으로 조정해요.

라이브러리 구조

모듈형 설계를 갖추고 있어요.

  • langchain4j-core: ChatModel, EmbeddingStore 같은 핵심 추상화와 API를 정의해요.
  • 메인 langchain4j: 문서 로더, 채팅 메모리 구현, AI Services 같은 고수준 기능을 담아요.
  • langchain4j-{integration}: 각종 LLM 공급자·임베딩 저장소 연동 모듈. 단독으로도 사용할 수 있고, 추가 기능이 필요하면 메인 langchain4j 의존성을 가져오면 돼요.

주요 기능

  • 20+ LLM 공급자, 30+ 임베딩(벡터) 저장소, 20+ 임베딩 모델, 5+ 채팅 메모리 저장소, 5+ 이미지 생성 모델, 5+ 스코어링(리랭킹) 모델 연동
  • 텍스트·이미지 입력 지원(멀티모달)
  • AI Services(고수준 LLM API), 에이전트(Agents), 스킬(Skills)
  • 프롬프트 템플릿, 영구/인메모리 채팅 메모리(메시지 윈도우·토큰 윈도우)
  • LLM 응답 스트리밍, 공통 Java 타입·커스텀 POJO용 출력 파서
  • 도구(함수 호출), 동적 도구(동적 생성 LLM 코드 실행)
  • RAG(검색증강생성): 문서 수집(파일시스템·URL·GitHub·Azure Blob·Amazon S3 등), 청크 분할, 임베딩, 저장 · 조회(쿼리 변환·라우팅·벡터 검색·리랭킹·Reciprocal Rank Fusion), RAG 흐름의 각 단계 커스터마이즈
  • 텍스트 분류, 토큰화·토큰 수 추정 도구
  • Kotlin 확장(코루틴 기반 비동기 채팅 처리)

저장소·예제

더 알아보기