코딩하는코알라/AI

Langchain 이란 무엇일까?

룰루랄라코알라 2023. 12. 29. 15:12

 

간단하게 대규모 언어 모델(LLM) 과 애플리케이션의 통합을 간소화 하는 SDK 

LLM 기반 애플리케이션을 구축하려면 단순히 프롬프트를 보내고 응답을 기다리는 것 이상의 작업이 필요

 

LLM은 상태를 저장하지 않고 대화의 이전 메시지를 기억하지 못한다! 

기록을 유지하고 LLM에 컨텍스트를 제공하는것 개발자 몫 그래서 메모리 관리도 필요

 

Langchain은 간단하게 백엔드 데이터베이스의 구현 세부정보를 요약하는 JDBC 드라이버와 비슷하다.

 

 

데이터 소스
애플리케이션이 LLM에 대한 컨텍스트를 구축하기 위해 PDF, 웹 페이지, CSV, 관계형 데이터베이스와 같은 외부 소스에서 데이터를 검색해야 하는 경우가 있다. 랭체인은 서로 다른 소스에서 데이터에 액세스하고 검색할 수 있는 모듈과 원활하게 통합된다.

단어 임베딩
일부 외부 소스에서 검색된 데이터는 벡터로 변환되어야 한다. 그래야 텍스트를 LLM과 관련된 단어 임베딩 모델에 전달하게 된다. 실제로 오픈AI의 GPT-3.5 모델은 컨텍스트를 전송하는 데 사용해야 하는 단어 임베딩 모델과 관련되어 있다. 랭체인은 선택한 LLM을 기반으로 최적의 임베딩 모델을 선택한다.

벡터 데이터베이스
생성된 임베딩은 유사성 검색을 위해 벡터 데이터베이스에 저장된다. 랭체인은 메모리 내 배열부터 파인콘(Pinecone)과 같은 호스팅 벡터 데이터베이스에 이르기까지 다양한 소스에서 벡터를 쉽게 저장하고 검색할 수 있도록 지원한다.

여러 대규모 언어 모델(LLM)
랭체인은 오픈AI, 코히어(Cohere), AI21에서 제공하는 주류 LLM과 허깅페이스(Hugging Face)에서 제공되는 오픈소스 LLM을 지원한다. 지원되는 모델과 API 엔드포인트 목록은 빠르게 증가하고 있다.

여러 대규모 언어 모델(LLM)
랭체인은 오픈AI, 코히어(Cohere), AI21에서 제공하는 주류 LLM과 허깅페이스(Hugging Face)에서 제공되는 오픈소스 LLM을 지원한다. 지원되는 모델과 API 엔드포인트 목록은 빠르게 증가하고 있다.



위의 이미지는 랭체인 프레임워크의 핵심을 나타낸다. 스택 상단의 애플리케이션은 파이썬 또는 자바스크립트 SDK를 통해 여러 랭체인 모듈 중 하나와 상호 작용한다. 여러 모듈의 역할을 살펴보면 다음과 같다.

모델 I/O
모델 I/O 모듈은 LLM과의 상호 작용을 다룬다. 이는 기본적으로 효과적인 프롬프트를 생성하고, 모델 API를 호출하고, 결과 해석을 돕는다. 생성형 AI의 핵심인 프롬프트 엔지니어링이 랭체인에서 잘 처리된다. 이 모듈은 LLM 제공자가 노출하는 인증, API 매개변수, 엔드포인트를 요약한다. 이 모듈은 마지막으로, 모델에서 보낸 응답을 애플리케이션서 사용할 수 있는 원하는 형식으로 해석하는 작업을 돕는다.

데이터 연결
데이터 연결 모듈을 LLM 애플리케이션의 
ETL 파이프라인에 해당한다. 이 모듈은 PDF 또는 엑셀 파일과 같은 외부 문서를 로드하고, 이를 처리하기 위해 일괄적으로 단어 임베딩으로 변환한 다음, 임베딩을 벡터 데이터베이스에 저장하고, 마지막으로 쿼리를 통해 검색한다. 앞서 설명한 바와 같이, 이는 랭체인의 가장 중요한 구성 요소이다.

체인
LLM과 상호 작용하는 것은 유닉스 파이프라인을 사용하는 것과 많은 면에서 유사하다. 한 모듈의 출력이 다른 모듈에 입력으로 전송된다. 개발자는 종종 원하는 결과를 얻을 때까지 LLM을 사용해 응답을 명확하게 하고 요약해야 한다. 

랭체인의 체인은 구성 요소와 LLM을 활용하여 예상되는 응답을 얻는 효율적인 파이프 라인을 구축하도록 설계됐다. 간단한 체인에는 프롬프트와 LLM이 포함될 수 있지만 재귀와 같이 LLM을 여러 번 호출하여 결과를 얻는 등 매우 복잡한 체인을 구축할 수도 있다. 예를 들어, 체인은 문서를 요약한 다음 이에 대한 감정 분석을 수행하는 프롬프트가 포함될 수 있다.

메모리
LLM은 상태 비저장형이지만 정확한 응답을 위해 컨텍스트가 필요하다. 랭체인의 메모리 모듈은 모델에 단기 및 장기 메모리를 쉽게 추가할 수 있도록 도와준다. 단기 메모리는 간단한 메커니즘을 통해 대화의 기록을 유지한다. 메시지 기록은 레디스(Redis)와 같은 외부 소스에 저장되어 장기 메모리를 유지할 수 있다.

콜백
랭체인은 개발자에게 LLM 애플리케이션의 다양한 단계에 연결할 수 있는 콜백 시스템을 제공한다. 이는 로깅, 모니터링, 스트리밍 및 기타 작업에 유용하다. 파이프라인 내에서 특정 상황이 발생할 때 호출되는 사용자 지정 콜백 핸들러를 작성할 수 있게 해준다다. 랭체인의 기본 콜백은 모든 단계의 출력을 콘솔에 간단히 인쇄하는 stdout을 가리킨다.

에이전트
에이전트는 랭체인에서 아주 강력한 모듈이다. LLM은 추론과 행동이 가능한데, 이는 ReAct 프롬프트 기법이라고 불린다. 랭체인의 에이전트는 LLM을 사용하여 프롬프트를 행동 계획으로 추출하는 ReAct 프롬프트 제작을 단순화한다. 

에이전트는 일종의 동적 체인으로 생각할 수 있다. 에이전트의 기본 일련의 동작을 선택하기 위해 LLM을 사용하는 것이다. 동작의 순서는 체인(코드)으로 하드 코딩 된다. 언어 모델은 에이전트 내에서 추론 엔진으로 사용되어 어떤 순서로 어떤 동작을 취할지 결정한다.

어느덧 랭체인은 생성형AI 기반 애플리케이션에서 중요한 구성 요소로 빠르게 자리 잡고 있다. 계속해서 발전 중인 환경 덕분에 다양한 구성 요소를 지원할 수 있다. 오픈소스 및 상용 LLM, 벡터 데이터베이스, 데이터 소스 및 임베딩에 대한 지원은 랭체인을 개발자에게 필수적인 도구로 만들고 있다.

 

Langchain은 이걸로 설명이 잘되있어서 여러번 읽어보기 좋은거같다.

원문보기:
https://www.ciokorea.com/column/305341#csidx8630c18a06a7b15939afa05ce76faae 

 

반응형