Skip to content
ML감자
Go back

나만의 Chatbot APP 만들어보기: OPLS 활용

Summary:

OPLS stack: OpenAI, Pinecone, Lanchain, Streamlit 활용한 문서 기반 챗봇 Assistance입니다.


요즘은 LLM의 전성시대라고 과언이 아닐 만큼 대규모 언어 모델이 쏟아져 나오고 있습니다. 특히 GPT-4가 공개된 이후에는 일반 사용자뿐만 아니라, 기업에서도 이를 적용하겠다고 줄을 잇고 있습니다. 그만큼 AI에 대한 관심도와 ChatGPT를 이용한 서비스에 관심이 커지고 있습니다.

그래서 이번 포스팅에서는 OpenAI, Pinecone, LangChain Framework(이하 OPLS stack)를 활용하여 나만의 Chatbot을 만드는 방법을 알려드리고자 합니다. ChatGPT는 일반적인 질문에는 제법 그럴싸한 대답을 하지만, 자세히 살펴보면 아직 한계가 존재합니다. 이 때문에 프롬프트 엔지니어링과 거짓 답변을 판단해야 하는 확인 절차가 필요합니다. 특히나 일반 질문이 아닌, 최신성과 신뢰성이 있어야 하는 전문적인 답변이 필요할 때는 검증 과정이 필수적입니다.

위에서 언급한 OPLS stack으로 ChatGPT에 정보를 제공할 수 있다면, 이전보다 훨씬 신뢰도 높고 최신의 정보를 기반으로 답변을 얻을 수 있을 것입니다. 지금부터 OPLS stack에 대한 자세한 정보과 활용 방법, 그리고 예시 코드까지 차근차근 설명하겠습니다.

목차

  1. OPLS stack이란?
  2. OPLS stack 활용 프로젝트 소개
  3. 마무리

1. OPLS stack이란?

Image

ChatGPT는 이제 없어서는 안 될 서비스 중 하나가 되었습니다. 저도 코딩하거나 문서 작업을 할 때 정말 많은 도움을 받고 있습니다. 하지만 ChatGPT에서 나온 결과물을 그대로 사용하기엔 아직 한계가 존재합니다. 위의 짤과 같이 실제 어려운 코딩을 맡기면 안 돼서 완성해 주지만, 해당 코드를 실제 사용할 수 있는 코드로 바꾸는 과정이 더욱 오래 걸립니다. 이와 같은 문제로 ChatGPT는 인사이트를 주는 도구 이상으로는 사용하지 못하고 있습니다. 특히 다음 두 가지 문제가 가장 큰 숙제라고 생각이 됩니다.

OPLS stack을 활용하면 GPT에게 정보를 추가로 제공하여 문제를 해결할 수 있습니다. LLM(대규모 언어모델) 위에 **Vector Stores(정보 저장소)**를 추가하고 Langchain이라는 프레임워크를 사용하여 전체 프로세스를 구축하는 방식입니다. 각 Framework에 대한 설명을 간략하게 하면 아래와 같습니다.

image-20230416223012614

OpenAI

ChatGPT를 개발한 기업으로 잘 알려진 OpenAI는 GPT-3.5와 GPT-4을 포한한 고성능의 챗봇 모델를 제공합니다. 또한 텍스트를 임베딩으로 변환하는 임베딩 모델도 제공합니다. (생각보다 사용방법이 간단해서 놀랐습니다.) 물론 Bard와 LLaMA와 같은 chatbot LLM이 존재하지만, 이번 포스팅에서는 OpenAI만을 다룰 예정입니다.

Pinecone

Pinecone은 임베딩 벡터 저장, Similarity 비교 및 빠른 검색 기능을 제공합니다. 아마 구글에 Pinecone을 검색하면 솔방울만 나올겁니다. 그만큼 아직 잘 알려진 프레임워크는 아니지만, 사용법이 간단하고 무료로 사용할 수 있는 Vector Stores 프레임워크입니다.

LangChain

LangChain은 Models, Prompts, Memory, Indexes, Chains, Agents의 총 6개의 모듈로 구성되어 있고, 이 모듈을 결합하여 파이프라인 구조를 만들어줍니다. 올해 초에 공개되었음에도, 다양한 예제와 코드가 공개되어 있어서 발 빠르게 LLM ecosystem을 구축하고 있습니다. LangChain에서는 OpenAI 모델뿐만 아니라, Hugging Face 등의 모델도 사용하는 등 다양한 모델을 수용할 수 있는 확산성까지 가지고 있습니다.

Streamlit

Python으로 Web을 개발하는건 무척이나 어렵습니다. 그러나 Streamlit은 파이썬의 한계를 극복하고 웹 애플리케이션을 만들 수 있는 Powerful 한 프레임워크입니다. 데이터 분석 혹은 딥러닝 모델 등을 만들 때 데이터를 시각화하여 보기 쉽게 만들거나, 간단한 웹 페이지 데모 사이트를 개발할 수 있습니다.

2. OPLS stack 프로젝트 소개

image-20230417222338042

OPLS stack을 활용하여 **“원하는 맛집의 정보를 알려주는 챗봇”**을 만들 예정입니다. 위의 그림은 챗봇의 개략도를 나타낸 그림입니다.

PDF을 임베딩으로 변환

질문 입력 및 답변 생성

데이터 구조

image-20230417225238945

위의 데이터는 공공 데이터 포털에서 다운로드 받은 “인천관광공사 맛집 메뉴설명정보(다국어)” 데이터셋입니다. 해당 데이터에는 식당명, 도로명 주소, 식당 소개, 식당 위치 등이 포함되어 있습니다. 식당 소개 내용을 Pinecone을 활용하여 벡터 스토어에 저장 후에 Top 5의 식당을 사용자에게 추천해줄 예정입니다.

3. 마무리

이번 포스팅에서는 ChatGPT의 한계와 이를 커버하기 위한 OPLS stack에 대해서 알아보았습니다. OpenAI, Pinecone, Lanchain, Streamlit을 적절하게 활용한다면 저희가 원하는 프로덕트를 손쉽게 만들 수 있을 것입니다. 다음 포스트에서는 실제 프로젝트를 구현하는 과정을 코드와 함께 설명드리겠습니다. 코드를 차근차근 따라하면 누구든 자신의 챗봇을 만들 수 있을 것 입니다.


Share this post on:

Previous Post
LLaMA-Factory 초보자 가이드: 쉽게 시작하는 LLM 파인튜닝
Next Post
2022년 회고: 밀도있는 성장