안녕하세요 Simon 입니다.
오늘부터 랭체인 하나는 정복하자 느낌으로 쭉 글을 올려보려고 합니다.
랭체인의 개요, 기초 부터 천천히 하나씩 올리겠습니다.
LangChain 이란?
• Langchain 은 LLM 기반의 서비스를 구축하기 위한 다양한 모듈과 기능을 제공하는 프레임워크입니다.
• 랭체인의 주요 목적은 대화형 AI 시스템을 구축하고 연구하는 데 있어 유용한 도구를 제공하는 것입니다.
LangChain 구조
LangChain 라이브러리: 파이썬과 자바스크립트 라이브러리. 다양한 컴포넌트의 인터페이스 및 통합, 이러한 컴포넌트를 체인과 에이전트로 결합하기 위한 기본 런타임, 그리고 체인과 에이전트의 오프더셀프 구현을 포함합니다.
LangChain 템플릿: 다양한 작업을 위한 쉽게 배포 가능한 참조 아키텍처 모음입니다.
LangServe: LangChain 체인을 REST API로 배포하기 위한 라이브러리입니다.
LangSmith: 어떤 LLM 프레임워크에서도 구축된 체인을 디버그, 테스트, 평가, 모니터링할 수 있는 개발자 플랫폼으로, LangChain과 원활하게 통합됩니다.
LangGraph: 최근에 랭체인에서 발표한 라이브러리로 Agent 나 빌드 관리 Ops 를 도와주는 것 같다? 자세히는 안봐서 모르겠다.
https://python.langchain.com/docs/langgraph
LangChain 의 특징
🤖 Chatbot : LangChain을 사용하면 사용자가 자신만의 챗봇과 대화형 AI 시스템을 쉽게 만들 수 있습니다.
📝 NLP Task : 텍스트 생성, 요약, 번역 등 다양한 자연어 처리 기능을 포함하고 있어 다양한 언어 작업에 활용할 수 있습니다.
🔌 Plug & Plug : 기존 NLP 모델이나 시스템과의 쉬운 통합을 통해 다양한 언어 모델과 기능을 손쉽게 결합할 수 있습니다.
🛠️ Custom : 사용자가 자신의 요구사항에 맞게 시스템을 커스터마이징 하고 확장할 수 있어 연구자나 개발자들에게 유용합니다.
🔍 Research : 연구자와 개발자들이 새로운 대화형 AI 모델을 실험하고 개발하는 데 도움을 줍니다.
LangChain은 대화형 AI와 관련된 연구 및 개발에 관심 있는 개발자, 연구자, 학생들에게 이상적인 도구입니다. 이를 통해 복잡한 NLP 시스템 구축과 실험을 보다 쉽게 진행할 수 있습니다.
LangChain 의 모듈
핵심기능을 설명하면 RAG 아키텍처를 수행하기 위한 모듈들이 구성되어있다.
프롬프트 : 사용자 프롬프트와, 시스템 프롬프트를 블록화 구조로 사용 할 수 있기 떄문에 프롬프트 엔지니어링이나 파이프라인이 필요한 구조에 적합하게 사용 할 수 있음
벡터스토어 : Chroma DB, Faiss, Finecon 과 같은 임베딩 된 데이터들을 저장 할 수 있는 벡터디비들을 지원한다.
다큐멘트로더 : 다양한 형태의 데이터를 로드 할 수 있도록 도와주는 모듈 ex) csv, pdf, txt, 크롤링 다양한 형태를 지원한다.
텍스트스플리터: 다큐멘트로더에서 로드한 데이터를 청크단위로 분할해주는 모듈
아웃풋파서 : 원하는 형태의 Output 으로 나오게끔 도와주는 모듈
왜 LangChain 인가?
라마3 학습 H100 GPU 1장당 약 6천만원 x 35만 = ???
천문학적인 금액과 파인튜닝도 리소스가 너무 많이 든다.
빅테크의 전유물이 되어버렸다 PLM은 놓아주어야한다.
LLM에 학습 과정에 포함되지 않은 지식을 주입하는 방법은 크게 2가지가 있다.
1. Fine-Tuning : 새로운 지식에 관한 텍스트 데이터셋트를 이용해서 LLM의 파라미터를 Fine-Tuning합니다. 데이터셋을 따로 구축을 해야하고, 파인튜닝 역시 GPU 소모 리소스가 많이 든다. AI 엔지니어의 주기적인 관리 MLops 가 필요하다.
2. Retrieval-Augmented Generation (RAG) : 새로운 지식에 관한 텍스트 데이터 소스를 Embedding해서 Vector stores에 저장하고, 프롬프트 구성을 진행할때 외부 데이터 소스로부터 가져온 텍스트 데이터를 함께 이용해서 프롬프트를 구성한뒤 LLM으로 부터 답변을 얻어냅니다.
현업에서의 예로
스케터 랩스와 같은 캐릭터 페르소나가 있어야하는 챗봇을 개발해야한다면? 파인튜닝을 해야한다. 분명 프롬프트엔지니어링으로는 한계가 있을거라고 생각한다. 그러나 그냥 기술지원 정보지원 챗봇을 만드는 회사라면 문어체로 RAG 검색증강 컨텍스트 기반의 챗봇을 구성한다면 충분 할 것이다. 본인의 회사에 규모와 역할에 맞게 운영하는것이 중요하다
랭체인을 활용한 서비스
ex) ChatPDF, ChatGPT - WebPilot
RAG 의 예시(ChatPDF) - 이력서
ex) 내가 인사팀인데 이력서를 수없이 많이 검토를 해야하는데, 중요하게 보는 항목이 있다? PDF 를 넣어보고 물어본다
Retrieval-augmented generation (RAG)
Retrieval-augmented generation (RAG)는 외부 텍스트 데이터 소스와 LLM에게 주어진 질문을 결합해서 질문에 대한 답변을 생성해내는 방법론
랭체인을 활용한 RAG 구현
랭체인(LangChain)은 RAG 구현을 위한 모듈을 지원
- Document
- Splitter
- Vector Store
- Memory
- Retrieval
- Output
- Prompt Template
LangChain 장점 / 단점
장점:
- 🔧 손쉬운 구현: 복잡한 LLM을 몇 줄의 코드로 간단하게 구현할 수 있습니다.
- 📖 긴 컨텍스트 지원: GPT-3.5의 토큰 제한 문제를 해결하고, GPT-4turbo 16k를 지원하여 LLM과의 상호작용을 향상시킵니다.
- 🔍 출처 확인 가능: LLM이 생성한 텍스트의 출처를 명확하게 확인하여 정확성과 신뢰성을 높입니다.
- 🌐 다양한 언어모델 호환: Gemini, Claude, HuggingFace, LLaMA 등 다양한 언어 모델과 호환됩니다.
- 👥 많은 유저: 참고할 만한 레퍼런스 자료가 많고, 많은 유저들이 사용하고 있습니다.
단점:
- 💰 비용 및 사용성 문제: 비용이 많이 들며, 소규모 프로젝트에는 적합하지 않을 수 있습니다.
- 🤯 복잡성과 편파성: AI 생태계에 불필요한 복잡성을 추가하며, 초보자에게는 접근하기 어렵습니다.
- 📚 문서화와 통합 문제: 문서화가 충분치 않고, 시스템 프롬프트와의 통합이 제대로 되지 않아 사용하기 어려울 수 있습니다.
- 🔄 오버헤드와 복잡성 증가: 대부분의 인기 있는 사용 사례에서 오버헤드와 복잡성이 증가합니다.
- 🆕 대안 개발: Sementic Kernel, LLaMA index, Simpleaichat 과 같은 대안이 있음.
LangChain Chat
랭체인 공식독스 홈페이지에 있는 Langchain Chat이다. 자기들이 만들어놓고 ChatGPT , Mixtral 모델을 활용해서 챗봇을 구축해놓았다. Langchain Docs의 전반적인 내용이 들어가 있다. 그러나 완벽하진 않다. 너무 Docs가 광범위해서 알아보기 힘들때 추천하고, 간단한 코드생성 긁어올때 유용하다.
이렇게 랭체인의 기본이되는 RAG와 개요에 대해 알아보았다. 이프레임워크만 마스터해도 RAG 기반의 Service Application 을 만드는데 큰 도움이 되지 않을까 생각한다. 다음은 조금 더 딥하게 내용을 구성해보겠습니다.
'AI > Contents' 카테고리의 다른 글
Ollama를 활용한 아이폰으로 Ondevice AI 같은 서비스 구축하기 (1) | 2024.02.15 |
---|---|
Fine-tune Mixtral 8x7B (MoE) on Custom Data 코드 리뷰 (2) | 2024.02.13 |
라즈베리파이와 GPT-4-VISION Few-shot을 통한 예제 메인페이지 게재 (1) | 2024.01.18 |
LLM 데이터셋 관련 정리 - 대규모 원시 말뭉치 (3) | 2024.01.17 |
프롬프트 엔지니어링의 새로운 방법 : PAL(Program-Aided Language Models) 의 원리와 실제 적용 사례 (1) | 2024.01.17 |