본문 바로가기
  • think normal
새로워지기/마흔의 생활코딩

LLM | Langchain - 01 개요

by 청춘만화 2023. 12. 17.
LLM | Langchain

👉  01 개요
 - 02 유형/단계별 RAG 실습

 

 

 

 

LM과 LLM에 대해 

  • 아키텍쳐 - 트랜스포머 Transformer( Decoder, Encorder)
  • 학습 알고리즘 - 랭기지 모델 LM
  • LM 워크 플로 : 파운데이션 모델* > RLHF 기법**
    • 대규모 컴퓨터 리소스와 데이터를 통해 프리 트레이닝 되어 있는 모델
    • 오픈ai나 구글과 달리, 페북의 라마2는 상업적으로도 오픈

파운데이션 모델*
  • 대규모 컴퓨터 리소스와 데이터를 통해 프리 트레이닝 되어 있는 모델
  • 오픈ai나 구글과 달리, 페북의 라마2는 상업적으로도 오픈
RLHF 기법**
  • 휴먼 피드백 알고리즘- 프롬프트에 대한 답변에 대해 사람이 개입, 인터넷에 있는 텍스트 프로포스를 수집해서 이를 기반으로 점수 부여해서 법, 정치적 문제가 되는 발언들에 낮은 리워드를 줘서 생성하지 않도록 다시 한번 필터링 → 답변 자체가 사람들이 선호하는 답변으로 제공될 수 있도록 파인 튜닝하는 과정
  • 대량의 corpus 데이터셋으로 pre-training된 모델을 → (페북의 라마2를 이용해서) 나의 목적에 맞춰 fine-tuning함으로써 나의 도메인과 데이터에 맞는 더 네로우한 모델을 만들 수 있다

 

 

 

 

LLM 학습 과정에 포함되지 않은 (새로운 외부)지식을 포함하는 방법

  • fine-tuning( RLHF 기법 등)
    • 새로운 지식에 대한 텍스트 소스를 이용해 기존에 pre-training된 모델의 파라미터에 새로운 텍스트 소스에 해당하는 LLM 파라미터를 갱신해주는 fine-tuning 과정을 진행 -
    • 과거에는 방대한 데이터로 인해 진행이 어려웠지만 최근에는 PEFT를 통해 일부만 갱신하는 형태로 해도 충분한 fine-tuning 성능 가능
  • RAG retrieval검색 - augmented generation
    • 새로운 지식에 대한 텍스트 소스를 embeding해서 vector stores에 저장하고 프로프트를 구성할 때, 외부 데이터 소스로부터 가져온 텍스트 데이터와 함께 응용해서 프롬프트를 구성한 뒤 LLM으로부터 답변을 얻어낸다
    • work-flow : 사용자 프롬프트 + 외부 테이터 지식 저장, 검색 → 프롬프트 재구성 → LMM 질의 응답(별도의 fine-tuning과정이 필요없다)
    • LangChain : RAG를 구현하는데 필요한 모듈을 제공하는 프레임워크(예. chat pdf)
      • 문서 업로드 → 문서 분할 → 문서 임베딩 → 임베딩 검색 → 답변 생성

 

 

 

Langchain

  • 개요
    • LM으로 구동되는 앱 개발을 위한 프레임워크
    • 데이터 인식(언어 모델 api 호출) + 에이전트 기능(부가 정보 탐색 등 외부 환경과의 상호작용)
  • 활용 방안
    • GPT 한계점
      • 정보 접근 제한 - 일정 기간까지 학습된 정보 기반
      • 토튼 제한 - 4096(gpt3.5), 8192(gpt4.0) 토큰
      • 환각 현상 - 엉뚱한 답
    • 개량 방법
      • fine-tuning - 기존 딥러닝 모델의 weight 조정하여 원하는 용도로 업뎃해서 출력 결과를 개선하는 방식( 고비용과 시간 필요)
      • n-shot learning - 내가 원하지 않는 방식으로는 대답하지 않도록 n개의 출력 예시를 제시해서 용도에 맞게 출력을 통제하는 방식( 새로운 외부 정보가 반영된 답변을 기대하기는 어려움)
      • in-context learning - 문맥을 제시하고, 이 문맥 기반으로 모델을 출력하도록 조정하는 방식( ex.langchain)
    • langchain 활용 모듈
      • 정보 접근 제한 → vectorStore기반 정보 탐색 또는 agent 활용 검색 결합
      • 토튼 제한 → textSplitter를 활용한 문서 분할
      • 환각 현상 - 주어진 문서에 대해서만 답하도록 prompt 입력
  • 주요 기능
    • Engine : 다양한 LLM 생성 모델(GPT, PALM, LLAMA, StableVicuna..등)의 엔진 역할 수행
    • Prompts : 다양한 LLM에게 지시하는 Prompts template, Chat Prompt template( 챗봇 템플릿), example selectors( n-shot learning과 같은 답변의 예시 제공)과 output patsers( 상황과 용도에 맞게 답변의 형식 구성) 제공
    • Index : 문서를 쉽게 탐색할 수 있도록 구조화 하는 모듈( Document Loaders, Text Splitters, Vectorstores, Retrievers, ..)
    • Memory : 이전 채팅 이력을 기억하도록해서 이전 내용을 기반으로 대화가 가능하도록 하는 모듈( ConversationBufferMemory, Entity Memory, Conversation Knowledge, Graph Memory, ..)
    • Chain : LLM 사슬을 형성하여 연속적인 LLM 호출이 가능하도록 하는 모듈( LLM Chain, Question Answering, Summarization, Retrieval Question/Answering, ..)
    • Agents : 기존 Prompt Templeate으로 수행할 수 없는 작업( 웹 검색이나 SQL 쿼리를 작성해서 정보를 빼내기)과 관련된 여러가지 툴 들을 LLM이 알아서 판단해서 수행하도록 하는 기능( Custom Agent, Custom MultiAction Agent, Conversation Agent, ..)
  • 주요 기능 활용 예( chat pdf, 첨부 문서를 기반으로 하는 챗봇)
    1. 문서 업로드(PDF, PyPDFLoader 활용)
    2. 문서 분할(text splitter) : 여러 텍스트(단락)로 분할
    3. 문서 임베딩(string to vector for. ML, cpu는 string data처리불가) : 저장소에 벡터(문장을 수치화)로 임베딩 → 임베딩을 저장하는 백터 스토어에 저장 by ChatGPT
    4. 임베딩 검색 : 사용자 프롬프트 입력 → 백터 스토어 검색(vectorstore retriever), 적합한 부분 텍스트 반환(질문과 연관성 높은 문서 추출)
    5. 답변 생성 : QA Chain(Q + relevant text) → LLM 제출01(프롬프트 재구성by ChatGPT) → LLM 제출02(by ChatGPT) → 답변 회신( 참조 링크 클릭 → 원본 소스에서 출처 열람)

 

 

 

Transformer

  • 구성
    • Decoder 말을 잘하는 부분( GPT4, Bard, LLaMa)
    • Encorder 말을 이해하는 부분( LLM)
  • 경향
    • evolution tree https://github.com/Mooler0410/LLMsPracticalGuide
    • Type of Usage
      • Closed Source
        • 뛰어난 성능, 편리한 api 사용
        • 보장할 수 없는 보안, api 비용
      • Open Source
        • 뛰어난 성능, 높은 보안과 낮은 비용
        • 높은 개발 난이도, GPU 서버 필요

(뇌피셜)후려쳐서 요약?하면, 디코딩은 LLM, 인코딩은 RAG( 외부 지식 에 대한 문맥 을 주입하여 생성하는 기법)로 처리하는 느낌적인 느낌

 

댓글