이번에 데이터사이언스 캡스톤 디자인을 하면서 LLM을 사용하게 되었는데, LLM에 외부 데이터 소스를 연동하는 방법으로 RAG를 주로 쓰게 될 것 같아 관련 내용을 공부하고 정리해보았다.
- LLM에 외부 데이터 소스 연동하는 이유?
ex) 2021 data 가지고 있고, 이를 통해 LLM 학습 시킬 때, 아무리 성능이 좋은 모델이더라도 2022년 정보 등등 학습과정에서 보여주지 않은 정보들에 대해서는 제대로 답변할 수 없음
- LLM에 외부 데이터 소스를 연동하는 법
LLM에 학습과정에 포함되지 않은 지식을 주입하는 방법은 크게 2가지이다.
1. Fine-tuning
: 새로운 지식에 관한 텍스트 데이터 소스를 이용해서 LLM의 파라미터를 fine-tuning 함.
새로운 데이터 모아서 -> 기존의 pre-trained 파라미터를 새로운 거에 맞게 갱신 -> 요즘은 PEFT 통해 전체 파라미터 말고 일부만 갱신 가능
2. Retrieval Augmented Generation (RAG)
: 새로운 지식에 관한 텍스트 데이터 소스를 Embedding해서 Vector stores에 저장하고, 프롬프트 구성을 진행할 때 외부 데이터 소스로부터 가져온 텍스트 데이터를 함께 이용해서 프롬프트를 구성한 뒤 LLM으로부터 답변을 얻어냄.
=> 외부 텍스트 데이터 소스와 LLM에게 주어진 질문을 결합해서 질문에 대한 답변을 생성해내는 방법론
- 랭체인을 이용한 RAG 구현
: 랭체인은 RAG 구현을 위한 다양한 모듈들을 지원함
ex) chatPDF
-> PDF 파일 업로드 하면, 그 안에 있는 내용 기반으로 질문할 수 있고, PDF 파일 안의 내용을 토대로 질문에 답변해줌.
Document Loading : 저출산 관련 PDF
↓
Splitting : 부분 텍스트로 나누고
↓
Storage : 임베딩 해서 vector store에 저장
↓
Retrieval : question하면, vector store에서 적합한 부분 text 찾아주고
↓
Output : 그걸 토대로 답변
=> 주입한 외부 text 정보 source를 토대로, LLM이 답변할 수 있도록 만들어준다.
-> 참조해야하는 정보 넣어서, 명확하고 사실적인 답변 해야할 때는 RAG가 유용함!!
(+ chat PDF는 chat gpt 4.0에서도 사용 가능함)
- 랭체인(LangChain)이란?
: - NLP 관련 다양한 기능을 제공하는 파이썬 라이브러리
- 대화형 AI 시스템을 구축하고 연구하는 데 있어 유용한 도구 제공
- 랭체인의 특징들
1. 챗봇 구축
: 랭체인은 챗봇과 대화형 AI 시스템을 구축하기 위한 도구를 제공함. 이를 통해 사용자는 자신만의 챗봇을 쉽게 만들 수 있음 (나에게 특화된 챗봇 만들기 가능)
2. 다양한 NLP 기능
: 이 라이브러리는 텍스트 생성, 요약, 번역과 같은 다양한 자연어 처리 기능을 포함하고 있음
3. 플로그 앤 플레이 아키텍처
: 사용자는 랭체인을 사용하여 기존의 NLP 모델이나 시스템과 쉽게 통합할 수 있음. 이를 통해 다양한 언어 모델과 기능을 손쉽게 결합할 수 있음 (ex. 허깅페이스)
4. 확장성 및 커스터마이징
: 랭체인은 사용자가 자신의 요구사항에 맞게 시스템을 커스터마이즈하고 확장할 수 있도록 설계됨. 이는 연구자나 개발자들에게 매우 유용한 특징임.
5. 연구 및 개발 지원
: 랭체인은 연구자와 개발자들이 새로운 대화형 AI 모델을 실험하고 개발하는 데 도움을 줌
=> 이 라이브러리는 대화형 AI와 관련된 연구 및 개발에 관심이 있는 개발자, 연구자, 학생들에게 매우 유용한 도구임.
(랭체인을 통해 사용자는 복잡한 NLP 시스템을 보다 쉽게 구축하고 실험할 수 있음)
- 랭체인의 장점
1. 손쉬운 구현
: 복잡한 LLM을 간단한 몇 줄의 코드로 손쉽게 구현 가능
2. 긴 컨텍스트의 지식 주입 가능
: GPT - 3.5dml 4096 토큰 제한으로 인해 긴 컨텍스트의 내용을 처리하기 힘들다는 문제점이 있는데 랭체인을 이용하면 더 긴 컨텍스트의 정보로 LLM과 상호작용할 수 있음 (필요한 부분만 retrieval로 뽑아와서 처리) (DB 형태로 vector stores에 저장하고 있는거니까 긴 컨텍스트 가능한 것 !!)
3. 출처 확인 가능
: LLM의 많은 부분이 블랙박스와 확률적으로 동작하기 때문에 LLM이 만들어낸 텍스트가 왜 그렇게 생성되는지 확인하기 어렵고 할루시네이션(Hallucination, 자기가 모르는 상태인데 마치 아는 것처럼 대답) 문제가 발생할 위험성이 있지만, 랭체인을 이용하면 명확한 출처와 함께 LLM이 텍스트를 생성할 수 있음 (+디버깅하기도 좋음. 왜 이런 답변 했는지 출처 확인 가능하니까)
'Deep Learning & AI > NLP' 카테고리의 다른 글
카카오톡 챗봇 만들기 - 스킬 서버 연결(ngrok 이용) (0) | 2024.05.18 |
---|