휴먼 피드백 알고리즘- 프롬프트에 대한 답변에 대해 사람이 개입, 인터넷에 있는 텍스트 프로포스를 수집해서 이를 기반으로 점수 부여해서 법, 정치적 문제가 되는 발언들에 낮은 리워드를 줘서 생성하지 않도록 다시 한번 필터링 → 답변 자체가 사람들이 선호하는 답변으로 제공될 수 있도록 파인 튜닝하는 과정
대량의 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, 첨부 문서를 기반으로 하는 챗봇)
문서 업로드(PDF, PyPDFLoader 활용)
문서 분할(text splitter) : 여러 텍스트(단락)로 분할
문서 임베딩(string to vector for. ML, cpu는 string data처리불가) : 저장소에 벡터(문장을 수치화)로 임베딩 → 임베딩을 저장하는 백터 스토어에 저장 by ChatGPT
임베딩 검색 : 사용자 프롬프트 입력 → 백터 스토어 검색(vectorstore retriever), 적합한 부분 텍스트 반환(질문과 연관성 높은 문서 추출)