Data Science/LLM

[LLM] LangChain의 모든 것

희스레저 2024. 2. 16. 10:33

 

출처: https://www.youtube.com/watch?v=WWRCLzXxUgs&list=PLQIgLu3Wf-q_Ne8vv-ZXuJ4mztHJaQb_v

 


 

정의

언어모델로 구동되는 애플리케이션을 개발하기 위한 프레임 워크

→ 데이터 소스를 기반으로 이야기할 수 있도록 함, 구체적인 툴과 방법론을 제시하지 않아도 다양한 환경과 상호작용이 가능함

 

ex) 최근 LLM 동향을 알고 싶다면? 에이전트 기능을 이용해 어떤 요청을 넘겼을 때, 그것을 기반으로 어떤 툴을 활용해야할지 랭체인이 결정하여 인터넷 검색을 한다던가 등 함으로써 정제된 답변을 제공할 수 있음

  • 데이터 인식: 언어 모델을 다른 데이터 소스에 연결
  • 에이전트 기능: 언어 모델이 환경과 상호 작용할 수 있도록 함

 

 

왜 써야할까?

1) 정보 접근 제한

최근에 일어난 사건을 아는 척하며 대답하지만 사실 모름

왜? 2022년 정보에 대해서는 학습이 안되었기 때문

→ vectorstore 기반 정보 탐색 or agent 활용한 검색 결합

 

2) 토큰 제한

chatgpt 3.5와 4는 각각 4096, 8192 토큰이라는 입력 토큰 제한이 존재함

→ TextSplitter를 활용한 문서 분할

 

3) 환각현상(Hallucination)

fact에 대해 질문했을 때, 거짓말을 하거나 엉뚱한 대답을 제공함

→ 신뢰성이 중요한 부분에서 치명적 문제로 작용할 수 있음

→ 주어진 문서에 대해서만 대답하도록 prompt 입력

 

 

 

문제 해결(개량)

1) Fine-tuning

기존 딥러닝 모델의 weight를 조정하여 모델 업데이트

ex) 블룸버그의 Bloom 거대언어모델: 금융전문가 타이틀을 줄 수 있을 만큼 관련 데이터를 제공하여 미세 조정 학습

필요한 시간과 하드웨어로 인해 고비용의 방법론

 

2) N-shot Learning

0~n개 출력 예시를 제시하여 용도에 알맞은 출력을 하도록 조정

대답을 통제하는 개념

어떤 정보를 기반으로 대답하게 할 수는 없음

 

3) In-context Learning: 이걸 도와주는게 바로 LangChain

문맥을 제시하고 그걸 기반으로 모델이 출력하도록 조정

출력 예시가 아니라 문맥 즉, 개념을 제시함

 

 

 

4. LangChain의 구조

1) LLM

: 초거대 언어모델로, 생성 모델의 엔진과 같은 역할을 하는 핵심 구성 요소

예시: GPT-3.5, PALM-2, LLAMA 등

 

2) Prompt

: 초거대 언어모델에게 지시하는 명령문

요소: prompt templates, chat prompt template, example selectors(n-shot 러닝을 한다고 했을 때, 원하는 출력 예시를 자동으로 정해줌), output parsers(원하는 형식으로 대답으로 말하게끔. 예를 들어 '오늘 날씨는 맑습니다'를 '맑음'으로)

 

3) Index

LLM이 문서를 쉽게 탐색할 수 있도록 구조화하는 모듈, 즉 어떤 경로를 기반으로 대답하게끔 도와주는 것

예시: document loaders, text splitters, retrievers 등

 

4) Memory

: 채팅 이력(결과물)을 기억하도록 하여, 이를 기반으로 대화가 가능하도록 하는 모듈

예시: ConversationBufferMemory, Entity memory 등

 

5) Chain

: LLM 사슬을 형성하여, 연속적인 LLM 호출이 가능하도록 하는 핵심 구성 요소

여러 프롬프트들이 개별적으로 존재하지 않고 결과를 바탕으로 이어져서 생성됨. 프로픔트들이 chain 형식으로 연결되어 내가 원하는 결과물 퀄리티와 비슷하게 내게끔 만드는 구조

예시: LLM Chain, Quesiton Answering 등

 

6) Agents

: LLM이 기존 prompt template으로 수행할 수 없는 작업을 가능케하는 모듈

에이전트 내 툴이 다양함. 예를 들어 웹검색, sql 쿼리를 작성해서 정보를 빼내던가 등

예시: custom agent, custom multiaction agent 등

 

 

 

5. LangChain의 구조

문서분할: 내가 이야기한 부분과 가장 유사한 파트를 pdf 내에서 찾아야함.

 

문서를 업로드했다고 해서 LLM이 전부 이해하고 있는게 아니라, 필요할 때 마다 써먹게 문서를 LLM에 주는 것임

내 질문과 가장 유사한 텍스트를 가져와서 함께 프롬프트로 만들어 넘겨주면 LLM이 이해하게 될 것