ChatGPT is a natural language processing technology developed by OpenAI. This model is based on the GPT-3 architecture and can be applied to various language tasks by training on large-scale datasets. When applied to a search engine, ChatGPT enables the implementation of an AI-based conversational system that understands user questions or queries and provides relevant information.
ChatGPT takes user questions as input and generates appropriate responses based on them. Since this model considers the context of previous conversations, it can provide more natural dialogue. Moreover, ChatGPT has been trained on diverse information from the internet, allowing it to provide practical and accurate answers to user questions.
When applying ChatGPT to a search engine, the system searches for relevant information based on the user's search query and uses ChatGPT to generate answers to present along with the search results. To do this, the search engine provides an interface that connects with ChatGPT, allowing the user's questions to be passed to the model and the answers generated by the model to be presented alongside the search results.
7. 이제 챗GPT로 하고 싶은 것?
챗GPT는 기존 데이터셋으로 학습된 대규모언어모델 중 하나일 뿐이고 세상과 연결된 존재는 아닙니다.
챗GPT는 과거 데이터로 학습되어 새로운 정보를 모르고, 거짓말도 한다고 한다. 그럼...
내 문서(PDF)를 챗GPT에게 학습시키고 싶은데, 어떻게 하나요?
챗GPT가 인터넷 정보를 검색해서 알려줄 순 없나요?
다른 서비스와 연동할 수는 없을까요?
내가 정한 시나리오대로 챗GPT를 다루고 싶어요.
8. 🦜🔗 랭체인 (LangChain)
언어 모델을 API를 통해 호출하는 것 뿐만 아니라 외부 데이터를 인식하거나 타 시스템과의 상호작용하는 애플리케이션을 개발하고자 하는 노력
랭체인(LangChain)은 언어 모델을 기반으로 한 애플리케이션을 개발하기 위한 프레임워크
Ref. https://docs.langchain.com/docs/
데이터 인식
능동적 상호작용
언어 모델을 다른 데이터 소스에 연결
언어 모델이 환경과 상호작용할 수 있도록 함
https://www.facebook.com/groups/langchainkr
9. 🦜🔗 랭체인 (LangChain)
언어 모델을 API를 통해 호출하는 것 뿐만 아니라 외부 데이터를 인식하거나 타 시스템과의 상호작용하는 애플리케이션을 개발하고자 하는 노력
랭체인(LangChain)은 언어 모델을 기반으로 한 애플리케이션을 개발하기 위한 프레임워크
Ref. https://docs.langchain.com/docs/
컴포넌트 사용 사례
언어 모델과 함께 작업하는 데 필요한 컴포넌트에
대한 모듈식 추상화를 제공함
추상화에 대한 구현 컬렉션 제공
LangChain 프레임워크의 나머지 부분을 사용하든
아니든 사용하기 쉽게 설계됨
체인은 특정 사용 사례를 가장 잘 수행하는 데
필요한 컴포넌트를 특정한 방식으로 조합할 수 있음
특정 사용 사례를 쉽게 시작할 수 있는 고급
인터페이스 제공
체인도 커스터마이징 가능하게 설계됨
11. 🦜🔗 컴포넌트 - 스키마
텍스트, 채팅 메시지, Examples, 문서 타입이 있습니다.
랭체인에서 사용되는 기본적인 타입과 스키마 소개
Ref. https://docs.langchain.com/docs/
텍스트
Text
채팅 메시지
ChatMessages
언어모델과의 인터페이스는
주로 텍스트임
따라서 랭체인 또한 주요
인터페이스가 텍스트임
예시
Examples
문서
Document
채팅 인터페이스에서 사용하는
메시지
시스템 채팅 메시지
(SystemChatMessage)
AI 시스템에 대한 지시사항
사용자 채팅 메시지
(HumanChatMessage)
사용자 입력 정보
AI 채팅 메시지
(AIChatMessage)
AI 시스템 출력 메시지
함수에 대한 입력과 예상되는
출력을 나타내는 입력/출력
쌍이며, 모델의 훈련과 평가에
사용될 수 있음.
또한 모델 또는 체인에 대한
입력/출력이 될 수 있음
모델인 경우 모델을 미세
조정하는 데 사용됨
비구조화된 데이터 조각이며,
아래와 같이 구성됨
page_content
: 데이터의 내용
metadata
: 데이터의 속성을 설명하는
부가 정보
12. 🦜🔗 컴포넌트 - 모델
대규모언어모델, 채팅모델, 텍스트 임베딩 모델이 제공됩니다.
랭체인에서 다루는 다양한 모델
Ref. https://docs.langchain.com/docs/
대규모언어모델
LLMs
채팅 모델
Chat Models
텍스트 임베딩 모델
Text Embedding Models
텍스트 문자열
텍스트 문자열
채팅 메시지 목록
채팅 메시지
텍스트 입력
실수 목록
13. 🦜🔗 컴포넌트 - 프롬프트
프롬프트는 모델에 대한 입력을 의미합니다. 이를 통해 모델을 프로그래밍할 수 있도록 여러 구성이 가능하도록 기능을 제공합니다.
프로그래밍하는 새로운 방법!
Ref. https://docs.langchain.com/docs/
프롬프트 값
PromptValue
프롬프트 템플릿
Prompt Templates
모델에 대한 입력을 나타내는
클래스
예시 선택자
Example Selectors
출력 파서
Output Parsers
PromptValue를 구성하는
클래스
프롬프트에 예시를 포함 시킴 텍스트만 반환하는 것보다 더
구조화된 정보를 얻고 싶을 때
사용됩니다.
(1) 모델에 출력 형식 지시
(2) 원하는 포맷으로 출력을
파싱 (필요한 경우 다시 시도
포함)
14. 문서, 다양한 유형의 인덱스, 그리고 체인에서 인덱스를 사용하는 예시를 처리하는 유틸리티 함수가 포함되어 있습니다.
🦜🔗 컴포넌트 - 인덱스
문서를 구조화하고 모델과 상호작용
Ref. https://docs.langchain.com/docs/
문서 로더
Document Loaders
텍스트 분할기
Text Splitters
언어 모델과 사용자의 텍스트
데이터를 결합하는 방법 중
하나로 "문서"에서 텍스트
조각으로 로드하는 것임
Unstructured 패키지를
사용하여 텍스트, 파워포인트,
이미지, HTML, PDF 등 모든
유형의 파일을 텍스트 데이터로
변환함
벡터 저장소
VectorStores
검색기
Retrievers
긴 텍스트를 처리하려면 해당
텍스트를 여러 조각으로
나누어야 함. 이때
의미론적으로 관련된 텍스트
조각을 함께 유지해야 함
"의미론적으로 관련된"이
의미하는 바는 텍스트의 종류에
따라 다를 수 있기 때문에 이에
관한 분할/결합/생성 등이
이뤄짐
입력 텍스트를 임베딩을 통해
벡터를 생성하고, 생성된
벡터를 저장/관리/검색할 수
있는 기능을 제공하는 저장소
인터페이스는 문서를 언어
모델과 결합하기 쉽게 하는
일반적인 인터페이스임
이 인터페이스는 쿼리(문자열)
를 입력으로 받고 문서 목록을
반환하는
get_relevant_documents
메서드를 제공함
15. 🦜🔗 컴포넌트 - 체인
사용자 입력을 받아 적절한 형식으로 구성하고, 모델에 전달하여 응답을 받고, 모델 출력을 검증하고 필요한 경우 수정할 수 있도록 구성 가능
목적을 달성하기 위해 특정한 방식으로 결합된 모듈식 구성요소
Ref. https://docs.langchain.com/docs/
체인
Chain
LLM체인
LLMChain
여러 개별 구성 요소를 둘러싼
종단 간 래퍼(wrapper)
인덱스 연관 체인
Index-related chains
프롬프트 선택자
Prompt Selector
인덱스에 저장된 고유한
데이터와 LLM을 결합하여
인덱스와 상호작용 수행
예시: 직접 작성한 문서에서
질문에 대한 답변을 찾음
가장 일반적인 체인 유형임
PromptTemplate, 모델(LLM
또는 ChatModel 중 하나),
그리고 선택적인 출력 파서로
구성됨
1. 여러 입력 변수를 사용하여
PromptTemplate를 통해
프롬프트로 형식을 지정
2. 모델에 전달
3. 출력파서를 사용하여 LLM의
출력을 최종 형식으로 파싱
문제는 하나의 모델에 잘
작동하는 프롬프트가 다른
모델에서는 그렇지 않을 수
있음
PromptSelector는 전달된
모델에 따라 기본 프롬프트를
선택하는 역할을 담당
16. 🦜🔗 컴포넌트 - 인덱스 연관 체인 (Index-related chains)
사용자 입력을 받아 적절한 형식으로 구성하고, 모델에 전달하여 응답을 받고, 모델 출력을 검증하고 필요한 경우 수정할 수 있도록 구성 가능
목적을 달성하기 위해 특정한 방식으로 결합된 모듈식 구성요소
Ref. https://docs.langchain.com/docs/
스터핑
Stuffing
맵 리듀스
Map Reduce
관련 데이터를 모두 프롬프트에
지문으로 집어넣어 언어 모델에
전달
StuffDocumentsChain으로
구현
리파인
Refine
맵-리랭크
Map-Rerank
1. 첫 번째 데이터 청크에서
초기 프롬프트를 실행한 후
2. 나머지 문서에 대해 그
출력과 함께 새 문서를
전달하여 출력을 개선하도록
요청함
1. 각 데이터 청크에서 초기
프롬프트를 실행한 다음
2. 초기 출력을 모두 결합하는
데 사용되는 다른 프롬프트를
실행합니다.
MapReduceDocumentsChain
으로 구현
1. 각 데이터 청크에서 초기
프롬프트를 실행하여 작업을
완료하고
2. 답변에 대한 확신 수준을
나타내는 점수를 부여함
3. 이 점수에 따라 응답이
순위를 매겨, 가장 높은 점수를
반환
17. 🦜🔗 컴포넌트 - 메모리
메모리를 활용하여 단기 및 장기 기억하는 어플리케이션 생성 제작
대화 과정에서 데이터를 저장하고 검색하는 메모리(memory) 개념
Ref. https://docs.langchain.com/docs/
채팅 메시지 히스토리
Chat Message History
이전의 모든 채팅 상호작용을
기억하는 역할 담당
이를 모델에 직접 다시
전달하거나, 어떤 방식으로
요약하거나, 또는 두 가지를
조합할 수 있음
입력을 기반으로 데이터 조각을 가져옴
입출력을 기반으로 상태 업데이트 장기 메모리
단기 메모리
단일 대화의 맥락에서
데이터를 전달하는 방법
대화 사이에 정보를
가져오고 업데이트하는
방법을 다룹
18. 🦜🔗 컴포넌트 - 에이전트
. 사용자 입력에 따라 에이전트는 이러한 도구 중 어떤 것을 호출할지 결정
미리 정해진 체인뿐만아니라 사용자 입력에 따라 달라지는 체인을 구성하고자 할 때
Ref. https://docs.langchain.com/docs/
도구
Tools
툴킷
Toolkits
언어 모델이 다른 리소스와
상호 작용하는 방법
특정 기능 주변의 구체적인
추상화로, 언어 모델이 쉽게 상호
작용할 수 있도록 합니다.
구체적으로, 도구의 인터페이스는
단일 텍스트 입력과 단일 텍스트
출력을 갖습니다.
에이전트
Agents
에이전트 실행기
Agent Executor
함께 사용할 때 특정 작업을
수행할 수 있는 도구 세트
특정 문제를 해결하는 데
사용되거나 필요한 도구 그룹
결정을 내리는 데 사용되는
언어 모델
에이전트(Agent)는 사용자 입력을
받아들이고 취할 "액션(action)"
과 해당 "액션 입력(action input)"
에 대한 응답을 반환하는 모델
주변의 래퍼(wrapper)입니다.
도구와 함께 에이전트를
실행하는 로직
1. 에이전트를 호출
2. 액션(action)과 액션 입력
(action input)을 받아온 다음
3. 해당 입력과 함께 액션이
참조하는 도구를 호출하고
4. 도구의 출력을 얻어내어 모든
정보를 다시 에이전트에 전달하여
5. 다음에 취해야 할 액션을 얻는
역할을 담당
23. RLHF 목적
‘AI가 생성한 글'의 점수를 매겨 인공지능 학습을 위해 필요한 loss function을
재정의하여 사람이 직접 피드백 준 부분을 성능의 척도로 하고 사람이 매긴 점수를
loss function으로 활용하자
❏ RLHF(Reinforcement Learning from Human Feedback)
❏ 사람이 직접 GPT에 이렇게 대답하라고 가르침
❏ 모델은 작지만 성능이 더 좋음
❏ 1.3B(RLHF) > 175B(GPT3)
❏ InstructGPT는 40명의 레이블러 투입
❏ ChatGPT는 InstructGPT와 데이터 수집 단계를 제외하면 거의 유사함
25. RLHF 학습방법
❏ (step 1) SFT(Supervised Fine Tuning Model)
❏ 기존의 GPT-3(1750억 파라미터)를 지시문에 따라 생성할 수 있도록 supervised fine-tuning
수행
❏ 먼저 사람이 지시에 대한 대답을 직접 작성(데이터 13,000개)하고, 이 데이터셋으로
supervised fine-tuning
❏ 사람의 선호를 보상 신호로 활용해 모델을 사전학습
❏ (step 2) RM(Reward Model)
❏ 모델이 생성한 대답 데이터셋(한 번에 4~6개 세트)에 대해 점수를 매기는 보상 모델을 학습
(모델2 : RM, reward model, 6억 파라미터)
❏ 사람이 4~6개의 생성된 텍스트에 대해 순위를 매김(데이터 33,000개)
❏ 텍스트에 대해 바로 점수를 매기게 되면 사람마다 그 기준이 다를 수 있기 때문에 순위 활용
❏ (step 3) PPO
❏ 모델1의 복사본 모델1*를 모델2(RM) 기반 PPO로 fine-tuning 수행(데이터 31,000개)
❏ 모델1*를 최종 모델로 fine-tuning해가는 과정에서 모델1과 너무 다르지 않도록 penalty를 줌
(Reward Model에 bised되지 않도록 함)
26.
27. 강화학습
❏ Agent : 학습하려는 모델 → GPT
❏ Environment : 주변 환경 → User의 input
❏ Action : 모델이 할 수 있는 행동 → 답변 생성
❏ Policy : 모델이 어떻게 행동할지 결정하는 알고리즘 → GPT의 파라미터
❏ Reward : 모델이 한 행동에 따라, 환경에 따라 주는 보상 → Reward 모델의
예측 점수
❏ Interpreter : 리워드를 결정하는 사람 또는 시스템 → Reward 모델
❏ RL은 Agent가 Environment와 Action과 Reward를 통해 소통하며 최적의
Policy를 찾는 것이라고 생각하면 된다.
28. RLHF Summary
❏ Step 1) 먼저 사람이 지시에 대해 올바른 대답을 완성하는 모델 학습
❏ Step 2) feedback(지시에 대한 모델의 대답을 사람이 점수로 매김)을 모사하는
보상모델(reward model) 학습
❏ Step 3) 이 reward model을 기반으로 강화학습을 사용하여 1) 모델이 사람이
더 선호하는 결과로 대답하도록 fine-tuning
32. GPT의 Prompt Engineering
GPT 프롬프트 엔지니어링은 GPT모델을 활용하여 주어진 프롬프트(prompt)에 대한 자동완성을 수행하는 기술
프롬프트는 입력된 시작 문장을 의미하며, GPT 모델은 주어진 프롬프트를 기반으로 자연어 생성을 수행
GPT 프롬프트 엔지니어링은 대표적으로 OpenAI에서 공개한 GPT-3모델을 활용하여 이뤄짐
GPT-3 모델은 대규모 데이터셋을 학습한 후, 주어진 프롬프트에 대한 다양한 자연어 생성을 수행할 수 있음
GPT 프롬프트 엔지니어링은 다양한 분야에서 활용 가능
- GPT-3 모델을 사용하여 자동으로 이메일을 작성
- 문서를 요약하는 등 다양한 자연어 처리 작업을 자동화
GPT 프롬프트 엔지니어링은 새로운 문장 생성에 대한 자동화를 제공하며, 이를 통해 자연어 처리 분야에서의 생산성을 높일
수 있음
또한, GPT 모델을 활용하여 프롬프트에 대한 자연어 생성을 수행하는 과정에서 생성된 결과물들은 자연스러운 문장으로
이루어져 있어, 다양한 자연어 처리 작업에서 사용하기에 매우 유용함
33. GPT 프롬프트 엔지니어지링의 단점과 보완책
첫째, GPT 모델은 학습 데이터에 따라 생성 결과가 크게 달라짐
따라서, 학습 데이터의 질과 양이 중요한 역할을 함. 또한, 학습 데이터에 포함되어 있지 않은 문장에 대해서는 정확한
생성이 어려움
→ 대규모의 고품질 데이터셋이 필요. 따라서, 데이터셋 구축 및 데이터 전처리 기술의 발전이 필요
둘째, GPT 모델은 학습 데이터에서 발견되는 편향성(bias)을 반영할 수 있음.
이는 생성된 결과물이 특정 인종, 성별, 지역 등에 대한 편견을 반영할 수 있다는 것을 의미
→ 학습 데이터의 다양성을 고려하고 생성된 결과물을 사람이 검수하는 등의 방법을 통해 편향성을 줄여 나가야 함
셋째, GPT 프롬프트 엔지니어링은 생성된 결과물이 항상 일관성 있는 의미를 갖지는 않음.
이는 모델이 문맥을 제대로 이해하지 못하는 경우에 발생할 수 있습니다.
→ 문맥을 이해하고 일관성 있는 의미를 갖도록 모델을 개선해야 함
GPT 모델의 다양한 구조 개선 및 pre-training 방법론 등을 연구.
마지막으로, GPT 프롬프트 엔지니어링은 모델의 크기와 연산량이 매우 크기 때문에, 모델을 학습하고 사용하는 데에
많은 컴퓨팅 자원과 시간이 필요하다.
→ 모델의 크기와 연산량을 줄일 수 있는 경량화(lightweight) 기술 등을 연구하여, 모델의 효율성을 개선해야 함
34. 프롬프트 엔지니어링의 명령문 형식
Generate [숫자] [텍스트] - "Generate 5 I love to" : "I love to dance.", "I love to cook.", "I love to travel." 등 5개의 문장을 생성합니다.
Complete [텍스트] - "Complete I enjoy listening to" : "I enjoy listening to music.", "I enjoy listening to podcasts.", "I enjoy listening to audiobooks."
등과 같이 텍스트를 자동완성
Answer [질문] - "Answer What is the capital of Japan?" : "The capital of Japan is Tokyo."와 같은 답변을 생성합니다.
Translate [텍스트] to [언어] - "Translate Good morning to Spanish" : "Buenos dias"와 같이 입력한 텍스트를 지정한 언어로 번역합니다.
Explain [개념] - "Explain What is artificial intelligence?" : 입력한 개념을 자세히 설명하는 문장을 생성합니다.
Paraphrase [텍스트] - "Paraphrase This book is very interesting." : "This book is quite fascinating."와 같이 입력한 텍스트를 다른 표현으로 변형합니다.
Summarize [텍스트] - "Summarize the article about climate change" : 입력한 텍스트에 대한 간략한 요약문을 생성합니다.
Compare [개념1] and [개념2] - "Compare democracy and dictatorship" : 두 개념에 대한 비교 문장을 생성합니다.
Convert [숫자1] [단위1] to [단위2] - "Convert 100 kilometers to miles" : 입력한 단위를 다른 단위로 변환하는 문장을 생성합니다.
Predict [데이터] - "Predict the stock price of Apple for the next month" : 입력한 데이터를 분석하여 예측 결과를 생성합니다.
35. 기존에 질의에 대한 최상의 응답 제공
(API 호출 비용 절감)
Prompt Engineering
ChatGPT Service Architecture
Pre-Process AI
chunk strategy
Feature Engineering
Feature Store
ChatGPT
General AI
DownStream Task
Domain Adaptation
Specific AI
Business RDB
Cache DB
Evaluation
Hallucination 제거
Validation
Cache DB
사용자
질의 응답 셋 검색
비즈니스 도메인에 적합한 응답 제공
Input Traffic Control