생물.컴퓨터.통계

나만의 데이터로 GPT 활용: LangChain기반 AI 모델 구축 도전기 (1)

프로페서 H 2024. 1. 10. 06:52

 

나만의 데이터로 GPT 활용: LangChain기반 AI 모델 구축 도전기 (1)

1. 나의 컴퓨터가 말을 하기 시작하다!

만약 우리의 노트북, 컴퓨터가 단순한 학습 도구를 넘어서서 지식 파트너가 된다면 어떨까? 매일 지식를 정리하고, 리포트를 작성하고, 취미와 관심사, 전문학술지식을 탐색하는 동안 수집된 여러분의 데이터가 살아 움직이는 듯한 느낌을 준다고 상상해보자. 마치 아이언맨의 자비스가 나에게도 생긴 것처럼.

어떻게 그렇게 할 수 있을까? chatGPT가 좀더 내가 가진 전문지식이나 내 컴퓨터 어딘가에 저장되어 있는 고급 문서 정보들을 학습해서 알려줄 수 없을까? 이런 생각들이 자연히 가질 수 밖에 없다.

 

바로 LangChain과 GPT의 결합이 이를 가능하게 해줄 수 있다.

 

이 기술은 우리의 개인화된 데이터를 활용하여, 학업, 연구, 심지어 일상생활에서도 여러분을 지원하는 맞춤형 AI를 제공할 수 있는 것이다.

자신만의 AI는 우리의 학습방식과 전문지식활용을 혁신할 수 있다. 복잡한 연구 자료 분석에서부터 논문 작성, 심지어 그룹 프로젝트의 아이디어 구상까지 도와줄 수 있는 것이다. 또한 우리의 취미나 관심사에 대한 깊이 있는 대화를 나눌 수도 있다. 예를 들어, 관심 있는 분야의 최신 동향을 분석하거나, 새로운 취미 활동에 대한 아이디어를 제안할 수도 있는 것이다.

 

LangChain과 GPT를 통한 AI의 맞춤형 활용은 우리가 모으고, 작성하고 가지고 있는 지식을 더욱 풍부하고 생산적으로 만들어줄 것이다.

필자의 컴퓨터에 있는 모든 정보를 LangChain과 GPT의 결합을 통해 개인적인 데이터를 기반으로 한 지능적인 도우미와 함께, 지식활용의 새로운 가능성을 탐색하고자 한다. 그 혁신적인 변화를 직접 경험해보고 그 경험에 대한 내용을 글로 써보려고 한다.

 

*노트: 유명 기업이 제공하는 chatGPT와 같은 LLM의 경우 API를 통해 회사 서버에 접속하는 과정을 거치게 된다. 이때 회사측에 본인 개인의 정보들을 제공하는 문제도 있을 수 있고, API의 문제, 회사의 정책, 매 API를 접속할 때마다 비용(아직 비용이 있는지 잘 모름)도 발생할 수 있다. 따라서 opnesource LLM 모델을 이용하여 API를 거치지 않고 나의 컴퓨터 자체에서 동일한 작업을 시행하는 것이 향후 더 나을 수 있다.

능력과 기회가 되고, 나의 지식 데이터기반을 충분히 활용하려면 오픈소스 LLM 모델로 결국 가야하지 않을까 생각이 든다.

 

2. LangChain과 GPT의 만남: 새로운 가능성

 

LangChain의 정의

LangChain은 대규모 언어 모델(Large Language Models, LLM)과 애플리케이션을 통합하는 SDK로 강력한 프레임워크이다. 이는 LLM을 활용하는 툴 개발에 있어 여러 복잡한 작업(매개변수조정, 응답 조정 등)을 단순화하고, 효율적으로 처리할 수 있게 돕는다.

랭체인을 통해 chatGPT로 내 컴퓨터의 데이터 결과를 얻는 과정과 구성요소

우선 데이터를 벡터 임베딩을 하여 데이터베이스에 저장하고 chatGPT와 같은 언어모델을 통해 검색과 출력을 하게 되는 것이다. 주요 구성요소는 다음과 같다.

  1. 데이터 소스: LLM (여기서는 chatGPT)에 대한 컨텍스트를 구축하기 위해 필요한 (내 컴퓨터에 있는) 데이터(PDF, 웹 페이지, CSV, 엑셀, 워드, TXT 등)와 같은 소스를 검색한다.
  2. 단어 임베딩: 내 컴퓨터에 있는 모든 데이터들을 벡터로 변환시키고 임베딩을 시행하여 chatGPT와 같은LLM과 관련된 단어 임베딩 모델에 전달한다.
  3. 벡터 데이터베이스: 생성된 임베딩은 유사성 검색을 위해 벡터 데이터베이스에 저장된다. LangChain은 다양한 소스에서 벡터를 저장과 검색을 용이하게 할 수 있도록 지원한다.
  4. 언어 모델(LLM): LangChain은 내 컴퓨터에 사용할 chatGPT를 포함한 다양한 주요 LLM을 지원한다.

3. LangChain 모듈 개요

LangChain에는 다음과 같이 필수 모듈(LLM, Chains, Prompts, Document loader and utility, agents)이 있다:

 

LLM

LLM은 LangChain의 기본 구성 요소이며, 특정 대규모 언어 모델의 기능을 활용하는 데 도움이 되는 래퍼wrapper 역할을 한다.

 

Chains

LangChain 이름이 시사하듯, 사용자는 특정 작업을 수행하기 위해 LLM 호출을 연결할 수 있다. 예를 들어, 특정 URL에서 추출한 텍스트 데이터를 요약한 후 그 요약을 바탕으로 질문에 답변할 수 있다.

Prompts

프롬프트는 모든 LLM 응용 프로그램의 핵심이다. LangChain은 입력을 포맷하는 프롬프트 템플릿과 다양한 유틸리티를 제공하여 정확한 응답을 생성하는 데 도움을 준다.

 

문서 로더 및 유틸리티

LangChain의 문서 로더와 유틸리티 모듈은 데이터 및 계산 소스에 연결하는 데 도움이 되는 모듈이다. 문서 로더를 통해 PDF 문서, 이미지 등의 원시 데이터를 처리 가능한 텍스트로 변환할 수 있다. 유틸리티는 Bash 및 Python 인터프리터 세션을 제공하여 기본 시스템과 직접 상호 작용할 수 있게 한다.

 

에이전트

LLM 응용 프로그램에서 호출 순서는 종종 결정적이지 않으며, 다음 단계는 사용자의 입력과 이전 단계의 응답에 따라 달라질 수 있다. 이러한 경우, LangChain 라이브러리는 입력을 기반으로 행동을 결정하는 "에이전트"를 제공한다.

 

 

이상 대략적인 개요에 대한 글을 마치며 다음 글에서는 설치 과정, 실제 사용 경험에 대해 작성할 예정이다.