LangChain의 핵심 개념들
LangChain은 언어 모델을 사용하는 응용 프로그램을 위한 다양한 도구와 기능을 제공합니다. 여기에는 Model I/O, Retrieval Augmented Generation (RAG), Agents, Chains 등이 포함되어 있습니다. 이러한 각각의 개념들은 언어 모델을 효과적으로 활용하는 데 중요한 역할을 합니다.
Model I/O
Model I/O는 언어 모델 응용 프로그램의 핵심 요소입니다. 이는 입력 변수에서 구조화된 출력으로의 변환을 다룹니다.
포맷 (Format): 입력 데이터를 언어 모델이 이해할 수 있는 형식으로 변환합니다.
예측 (Predict): 변환된 데이터를 기반으로 언어 모델이 예측을 수행합니다.
파싱 (Parse): 모델의 출력을 구조화된 데이터로 변환합니다.
쉬운 설명 : Model I/O는 LLM모델(GPT, 바드, llama2 등등)의 입력과 출력을 쉽게 도와주는 역할을 합니다.
단순히 입력 출력을 쉽게 하는 것에서 더 나아가 모델이 이해하기 쉽도록 변환하거나 반대로 출력된 결과를 우리가 사용하기 쉽도록 변환하는 역할을 합니다.
Retrieval Augmented Generation (RAG)
RAG는 사용자 특화 데이터를 처리하기 위한 방법으로, 외부 데이터를 검색한 후 이를 언어 모델에 전달하는 과정입니다.
문서 로더 (Document Loaders): 다양한 출처에서 문서를 로드합니다.
텍스트 분할 (Text Splitting): 큰 문서를 작은 조각으로 나눕니다.
텍스트 임베딩 (Text Embedding): 문서의 의미를 포착하는 임베딩을 생성합니다.
벡터 저장소 (Vector Stores): 임베딩의 효율적인 저장 및 검색을 위한 데이터베이스를 제공합니다.
검색기 (Retrievers): 데이터베이스에서 필요한 데이터를 검색합니다.
추가설명 :
1. 문서 로더 (Document Loaders)
목적: 다양한 출처에서 문서를 로드합니다.
작업: 웹사이트, 데이터베이스, 파일 시스템 등에서 텍스트 데이터를 가져옵니다.
결과: 원시 텍스트 데이터가 준비됩니다.
2. 텍스트 분할 (Text Splitting)
목적: 큰 문서를 작은 단위로 나눕니다.
작업: 긴 문서를 문장이나 문단 같은 작은 단위로 분할합니다.
결과: 관리하기 쉽고 분석에 적합한 크기의 텍스트 조각들이 생성됩니다.
3. 텍스트 임베딩 (Text Embedding)
목적: 텍스트를 벡터 형태로 변환하여 의미를 수치화합니다.
작업: GPT와 같은 언어 모델을 사용하여 각 텍스트 조각의 임베딩을 생성합니다.
결과: 텍스트의 의미적, 문맥적 정보가 포함된 고차원 벡터가 생성됩니다.
4. 벡터 저장소에 저장
목적: 생성된 임베딩을 효율적으로 저장하고 검색할 수 있는 환경을 마련합니다.
작업:
벡터 값 저장: 임베딩된 벡터들을 벡터 데이터베이스에 저장하고 인덱싱합니다.
원본 텍스트 저장: 각 벡터와 연관된 원본 텍스트도 데이터베이스에 함께 저장합니다.
결과: 임베딩된 벡터들과 원본 텍스트가 함께 저장되어, 추후 검색 시 텍스트 내용의 접근이 가능합니다.
5. 검색
목적: 필요한 정보를 찾기 위해 저장된 임베딩을 검색합니다.
작업: 특정 쿼리에 대한 임베딩을 생성하고, 이를 사용하여 데이터베이스 내에서 유사한 임베딩을 가진 텍스트를 찾습니다.
결과: 쿼리와 가장 유사한 텍스트들이 검색 결과로 반환됩니다. 이때, 사용자는 벡터 값과 함께 연관된 원본 텍스트도 볼 수 있습니다.
이 과정을 통해, 대량의 텍스트 데이터에서 의미적으로 관련된 정보를 효율적으로 찾아낼 수 있으며, 검색 결과로 얻은 텍스트는 원본 내용과 그 의미를 모두 확인할 수 있습니다.
Agents
Agents는 언어 모델을 사용하여 수행할 행동의 순서를 결정하는 시스템입니다.
기본 개념
행동 결정: LangChain의 에이전트는 언어 모델을 사용하여 취할 행동의 순서를 결정합니다. 이 는 복잡한 작업이나 문제 해결 과정에서 어떤 단계를 밟아야 할지를 모델이 판단하게 합니다.
유연성: 에이전트는 특정 상황에 맞게 행동을 조정하고, 다양한 시나리오에 대응할 수 있도록 설계되었습니다.
구성 요소
에이전트 (Agents): 다양한 행동을 결정하고 실행합니다.
AgentExecutor: 에이전트의 행동을 실행합니다.
도구 (Tools): 에이전트가 사용하는 다양한 도구들입니다.
툴킷 (Toolkits): 도구들을 모아둔 키트입니다.
쉬운 설명 : 에이전트는 혼자서 하기 힘든 복잡하고 다양한 일을 여러 툴과 역할을 나눈 모델에게 배분하여 복합적으로 문제를 처리하기 위해 고안된 개념입니다. 행동을 결정하는 메인 에이전트와 결정된 사항을 직접 행동하는 툴 혹은 모델로 나뉘어 있습니다.
Chains
LangChain에서 '체인(Chains)'은 여러 단계의 호출이 순차적으로 이루어지는 프로세스를 의미합니다. 이러한 체인은 언어 대규모 모델(LLM), 다양한 도구, 데이터 전처리 단계 등을 포함할 수 있으며, 복잡한 작업을 단계별로 나눠 처리하는 데 사용됩니다. LangChain의 체인에 대해 설명하자면 다음과 같습니다:
기본 개념
일련의 호출: 체인은 하나 이상의 작업이나 함수 호출을 순차적으로 연결하는 방식으로 구성됩니다. 이는 특정 작업을 수행하기 위해 여러 단계를 거치는 과정을 표현합니다.
LCEL 사용: LangChain에서는 LangChain Chain Expression Language(LCEL)를 사용하여 체인을 구성합니다. LCEL은 체인 을 쉽게 구성하고 관리할 수 있는 방법을 제공합니다.
체인 유형
LCEL 체인: LangChain은 LCEL을 사용하여 다양한 체인을 구성합니다. 이러한 체인은 LCEL 표현을 사용하여 정의되며, 사용자가 자신의 요구에 맞게 체인을 맞춤 설정할 수 있습니다.
레거시 체인 (Legacy Chains): 이전 버전의 체인으로, LCEL을 사용하지 않고 독립적인 클래스로 구성됩니다. LangChain은 이러한 레거시 체인과 LCEL 체인을 모두 지원합니다.
체인의 활용
스트리밍 지원: LCEL 체인은 스트리밍, 비동기 실행, 배치 처리를 지원합니다. 이는 대규모 데이터 처리 및 실시간 작업에 유용합니다.
각 단계의 관찰 가능성: 체인을 사용하면 각 단계에서 발생하는 일을 추적하고 관찰할 수 있어, 프로세스의 투명성과 관리 용이성이 향상됩니다.
#9기 #랭체인 #9기랭체인