•
LangChain은 각 모듈에 대해 확장 가능한 표준 인터페이스와 외부 기능 통합을 제공한다.
Model I/O
•
언어모델과의 인터페이스
•
모든 언어 모델 애플리케이션의 핵심 요소
•
LangChain은 모든 언어 모델과 인터페이스할 수 있는 빌딩 블록을 제공한다.
◦
Prompt: 모델 입력을 템플릿화, 동적으로 선택 및 관리
◦
Language Models: 공통 인터페이스를 통해 언어 모델을 호출
◦
Output Parser: 모델 출력에서 정보 추출
Data Connection(or Index)
•
애플리케이션별 데이터와의 인터페이스
•
많은 LLM 애플리케이션에는 모델 훈련 세트의 일부가 아닌 사용자별 데이터가 필요
•
LangChain은 데이터를 로드, 변환, 저장 및 쿼리할 수 있는 빌딩 블록을 제공
◦
Document loaders: 다양한 소스에서 문서 불러오기
◦
Document transformers: 문서분할, Q&A형식으로 문서 변환, 중복 문서 작세 등 다양한 작업 수행
◦
Text Splitters: 문서가 너무 길어서 LLM에 한 번에 입력이 어려운 경우 사용
◦
Text embedding models: 비정형 텍스트를 float 숫자 목록으로 변환
◦
Vector stores: embedding된 데이터 저장 및 검색
◦
Retrievers: 문자열을 받아서 document 목록을 반환
LangChain에서 데이터를 처리하는 전체적인 흐름을 설명하는 도식
Chains
•
랭체인에서 가장 핵심적인 개념 중 하나
◦
Chain의 뜻 그대로 데이터 -> LLM1 -> LLM2 … -> plugin -> output 등 다양한 방식으로 사용자가 원하는대로 모듈들을 엮을 수 있다.
•
간단한 애플리케이션의 경우 LLM을 단독으로 사용할 수 있지만 더 복잡한 애플리케이션의 경우 서로 또다른 기능을 수행하는 컴포넌트와 함께 LLM을 연결해야 한다.
•
LangChain은 이러한 컴포넌트를 "chain"으로 연결할 수 있는 인터페이스를 제공하고 컴포넌트에 대한 호출 시퀀스로 정의한다.
Agents
•
Chain과 더불어 랭체인에서 가장 중요한 개념 중 하나
•
다양한 tool을 사용하여 사용자의 입력에 따라 상황에 맞게 다른 결과를 반환받을 수 있다.
•
이제까지 설명했던 component들이 모두 LLM과 text와의 상호 작용 위주였다면, agent는 외부 다른 리소스와 상호작용이 가능하게끔 도와준다.
•
기본적으로 agent에는 다양한 tool들이 있다.
•
구글 검색 결과를 활용할 수 있는 serpapi 부터 날씨 정보를 알 수 있는 openweather api 등 수많은 기능들을 제공하며 지금 현재도 계속 추가되고 있다.
LLM과 에이전트(Agent), 그리고 툴(Tools)이 상호작용하여 사용자 요청을 처리하는 과정을 설명한 흐름도
Memory
•
메모리는 LLM이 데이터를 저장하고 검색할 수 있게 도와준다.
•
메모리를 사용하면 단기, 장기 기억이 가능하며 연속적인 채팅이 가능하다.
•
Chain이나 Agent가 일종의 ‘기억’을 갖는 것처럼 만들어 준다고 할 수 있다.
•
다만 메모리라는 개념 자체가 기존 채팅 기록들을 prompt에 넣어 제공하도록 구성되어 있다.
Callbacks
•
모든 체인의 중간 단계 기록 및 스트리밍
•
LangChain은 LLM 애플리케이션의 다양한 단계에 연결할 수 있는 콜백 시스템을 제공한다.
•
이는 로깅, 모니터링, 스트리밍 및 기타 작업에 유용하며 API 전체에서 사용할 수 있는 콜백 인수를 사용하여 이러한 이벤트를 받을 수 있다.