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 입력
- GPT 한계점
- 주요 기능
- 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, 첨부 문서를 기반으로 하는 챗봇)
- 문서 업로드(PDF, PyPDFLoader 활용)
- 문서 분할(text splitter) : 여러 텍스트(단락)로 분할
- 문서 임베딩(string to vector for. ML, cpu는 string data처리불가) : 저장소에 벡터(문장을 수치화)로 임베딩 → 임베딩을 저장하는 백터 스토어에 저장 by ChatGPT
- 임베딩 검색 : 사용자 프롬프트 입력 → 백터 스토어 검색(vectorstore retriever), 적합한 부분 텍스트 반환(질문과 연관성 높은 문서 추출)
- 답변 생성 : 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 서버 필요
- Closed Source
'새로워지기 > 마흔의 생활코딩' 카테고리의 다른 글
LLM | ollama 1부 - 로컬 터미널에서 실행하기 + 버전 업데이트하기 (0) | 2024.02.20 |
---|---|
LLM | Langchain - 02 유형/단계별 RAG 실습 (0) | 2023.12.17 |
cursor IDE_coding test 02 - Solid 프로토콜 (0) | 2023.12.13 |
cursor IDE_coding test01 - weather api (1) | 2023.12.08 |
MS(Code-OSS)에서 이번엔 cursor IDE를 내놓았다 (0) | 2023.12.03 |
댓글