본문 바로가기
AI/NLP

[LLM] 어떤 소스든, Embedchain으로 나만의 챗봇 만들기!

by didi0di 2023. 10. 11.
728x90

Embedchain 이란? 

쉽게 말하면, 어떤 종류의 데이터셋이든 LLM 기반 봇 (Bot)을 쉽게 만들수 있게 도와주는 프레임워크 입니다.

 

- Embedchain 공식 깃헙 :  https://github.com/embedchain/embedchain

 

GitHub - embedchain/embedchain: Data platform for LLMs - Load, index, retrieve and sync any unstructured data

Data platform for LLMs - Load, index, retrieve and sync any unstructured data - GitHub - embedchain/embedchain: Data platform for LLMs - Load, index, retrieve and sync any unstructured data

github.com

 

지원하는 데이터셋

  • Youtube video
  • PDF file
  • Web page
  • Sitemap
  • Doc file
  • Code documentation website loader
  • Notion and many more.

Embedchain은 YouTube 동영상, PDF 형식의 책, 블로그 게시물, 질문과 답변 쌍 등 모든 데이터셋을 입력으로 받습니다.

데이터 세트를 로드하고, 청크하고, 임베딩을 생성하고, 벡터 데이터베이스에 저장하는 전체 프로세스를 추상화합니다.

 

 

사용법

 

설치도 아주 간단합니다.

pip install --upgrade embedchain # 프레임워크 설치

 

사용법을 예시와 함께 알아보겠습니다.

일론 머스크와 관련된 답변을 생성하는 챗봇을 만들어 본다고 가정하겠습니다.

 

import os
from embedchain import App

# Create a bot instance
os.environ["OPENAI_API_KEY"] = "YOUR API KEY"
elon_bot = App()

# Embed online resources
elon_bot.add("https://en.wikipedia.org/wiki/Elon_Musk")
elon_bot.add("https://www.forbes.com/profile/elon-musk")
elon_bot.add("https://www.youtube.com/watch?v=RcYjXbSJBN8")

# Query the bot
elon_bot.query("How many companies does Elon Musk run and name those?")
# Answer: Elon Musk currently runs several companies. As of my knowledge, he is the CEO and lead designer of SpaceX, the CEO and product architect of Tesla, Inc., the CEO and founder of Neuralink, and the CEO and founder of The Boring Company. However, please note that this information may change over time, so it's always good to verify the latest updates.

 

위 예시 코드처럼

.add 메서드를 사용하여 단일 또는 여러 데이터셋을 추가할 수 있습니다.

그런 다음 .query 메서드를 사용하여 추가된 데이터 집합에서 답을 찾으면 됩니다.

 

 

챗봇을 구현하기 위해서는

먼저, OpenAI에서 API키를 발급받아 본인의 키를 입력해야 합니다.

 

그 다음 input으로 

2개의 웹사이트 URL과 1개의 유튜브 동영상으로 일론 머스크에 관련된 봇을 만들려면  각 링크를 추가하기만 하면 됩니다.

나머지는 Embedchain이 알아서 처리하여 봇을 생성합니다.

 

이제 본인이 원하는 URL, PDF, text file, Q&A쌍 등을 입력으로 넣어서

편리하게 LLM 기반 챗봇을 만들 수 있습니다. 

 

 

How to use GPT-4 as the LLM model

 

만약 LLM 모델로 GPT-4를 사용하고 싶다면, config에 LlmConfig model 인자값으로 "gpt-4"을 넘겨주면 됩니다!

 

from embedchain import App
from embedchain.config import LlmConfig

app = App()
app.add("https://en.wikipedia.org/wiki/Elon_Musk")
app.query("How many companies does Elon Musk run and name those?", config=LlmConfig(model="gpt-4"))

 

LlmConfig에는 이밖에도 다양한 option을 지원하고 있습니다. 

 

자세한 내용은 공식 문서를 참조하세요 :)

 

https://docs.embedchain.ai/get-start/quickstart

 

🚀 Quickstart - Embedchain

Install embedchain python package: pip install --upgrade embedchain Creating a chatbot involves 3 steps: ⚙️ Import the App instance 🗃️ Add Dataset 💬 Query or Chat on the dataset and get answers (Interface Types) Run your first bot in python usi

docs.embedchain.ai

 

나만의 챗봇 만들어보기

 

 

저는 초보 등린이에게 등산로를 추천해주는 챗봇을 만들어보고 싶었는데요,

간단하게 구현을 해봤습니다.

 

import os
from embedchain import App

# Create a bot instance
os.environ["OPENAI_API_KEY"] = "" # 본인이 발급받은 OPENAI API 키
mountain_bot = App()

# Embed online resources
mountain_bot.add("https://www.millim.in/magazine/view/50")
mountain_bot.add('https://www.tourtoctoc.com/news/articleView.html?idxno=811')
mountain_bot.add('https://korean.visitkorea.or.kr/detail/rem_detail.do?cotid=5001a5a6-8806-4982-b9f2-ead4ce996dc9')
mountain_bot.add('https://m.blog.naver.com/my50cent/222862765624')


# Query the bot
# mountain_bot.query("초보자가 꼭 가봐야 할 서울 등산코스는?")
query = input("질문을 입력하세요 : ")
answer = mountain_bot.query(query)
print(answer)

 

os.environ["OPENAI_API_KEY"] 부분에 제가 발급 받은 OpenAI API키를 넣어줬구요!

 

만약 App이나 웹서비스의 프론트엔드 단에 이 API 키값이 그대로 노출되게 되면, 위험합니다.

다른 사람들이 이를 악용할 경우 추가 비용 문제가 발생할 수 있어요.

따라서 서비스 구현시에는 이런 부분을 함께 고려해서 처리해줘야 합니다.

 

 

인풋 소스는 아래 4개 사이트 URL 주소를 넣어줬습니다.

우선 "초보 등산코스 추천" 키워드로 구글 검색시 상위에 나오는 웹사이트들로 간단하게 구현해봤습니다.

 

https://www.millim.in/magazine/view/50

 

초보자가 꼭 가봐야 할 서울 등산코스!

등산 초보자들은 어디로 등산하지? 밀림이 추천하는 핫한 서울 초보자 등산코스! 안녕하세요! 뉴비입니다 :) 지난 주에 소개해드렸던 ‘등산 입문자를 위한 서울 등산코스’ 반응이 뜨거웠는데

www.millim.in

https://www.tourtoctoc.com/news/articleView.html?idxno=811 

 

초보도 가기 좋은 서울 등산 추천 BEST6 (+추천 코스, 맛집) - 여행톡톡

한국은 국토의 70%가 산인만큼 다양한 하이킹 코스의 산들이 있는데요. 다이어트에도, 체력 증진에도 큰 효과가 있다고 알려진 등산은 사계절 언제 가도 다른 자연을 만날 수 있어 전연령층이 즐

www.tourtoctoc.com

https://m.blog.naver.com/my50cent/222862765624

 

서울 등산 추천! 초보자 코스 베스트 4

등산을 시작하기 전까지 서울에 이렇게 많은 산이 있는 줄 몰랐는데요. 서울 등산의 매력이라고 하면 지하...

blog.naver.com

https://korean.visitkorea.or.kr/detail/rem_detail.do?cotid=5001a5a6-8806-4982-b9f2-ead4ce996dc9 

 

초보자부터 프로 등산러까지! 미리 찜해보는 전국 등산 코스> 여행기사 :대한민국 구석구석

4한반도의 70%를 차지하는 산! 산은 우리나라에서 빼놓을 수 없는 여행코스인데요. 산린이도, 등산을 즐기는 사람도 모두 즐길 수 있는 산들을 소개합니다. 여행 버킷리스트에 꼭 추가해두어요~!

korean.visitkorea.or.kr

 

질문에 해당하는 쿼리는 input 함수로 유저에게 직접 입력받게 수정했구요.

 

실제로 위 코드를 실행하면 아래와 같이

벡터 DB에 잘 저장했다는 메세지가 함께 청크 갯수가 출력되어 나오고, 

 

제가 입력한 질문 "초보자가 꼭 가봐야 할 서울 등산코스는? 에 대한 답으로 

"초보자가 꼭 가봐야 할 서울 등산코스는 안산(무악산) 이라고 답변해주고 있습니다. 

 

첫번째 웹사이트에서 정답을 확인할 수 있었습니다.

 

 

다른 질문도 해봤어요. 

- 질문 : "등산화가 꼭 필요할까?"

- 답변 : "등산할 때에는 꼭 등산화를 준비하는 것이 안전하고 좋습니다.~~"

이건 꼭 제가 인풋으로 넣어준 소스에서 보고 대답한 게 아니라,

ChatGPT에서 답변을 생성한 것 같기도 하네요 ㅎㅎ

 

등산화 관련 질문을 좀 더 구체적으로 해봤습니다.

 

 네번째 블로그에 나와있는 답변을 보니, 이번 답변도 그럴싸 하군요!

이렇게 테스트용으로 몇개 쿼리를 넣고 답변을 확인해 봤습니다.

 

dry_run 

 

다만 매번 API call을 하면 비용이 발생하기 때문에, dry_run 옵션을 활용하는 것도 좋은 방법인데요!

 

가치 있는 토큰을 사용하기 전에 데이터 청크가 제대로 생성되었는지, 임베딩이 제대로 작동하는지, 데이터베이스에서 올바른 문서를 수신하고 있는지 확인해야 합니다.

 

드라이런은 add, query 및 chat 메서드의 옵션으로, 사용자가 LLM으로 전송되지 않는 데이터 청크와 구성된 프롬프트를 표시하여 비용을 절약할 수 있습니다. 테스트에 사용됩니다.

 

드라이 런에서는 쿼리를 삽입하는 데 여전히 토큰이 사용되지만, 이는 프롬프트의 약 1/15에 불과합니다.

 

query = input("질문을 입력하세요 : ")
answer = mountain_bot.query(query, dry_run=True)
print(answer)

>>질문을 입력하세요 : 등산화없이도 갈만한 산은?

  Use the following pieces of context to answer the query at the end.
  If you don't know the answer, just say that you don't know, don't try to make up an answer.

  것만으로도 스트레스가 날아가는 쾌감을 느낄 수 있을 거예요!​불암산 후기 자세히 보기 ▶​ 기온은 선선해지고 하늘은 맑아서 걷기 좋은, 등산하기 좋은 날인데요. 정말 정말 등산을 처음 해 보는 분이라면 안산부터 하나씩 정복하는 재미도 있을 것 같아요! 마지막으로 안산자락길 영상도 즐겨주시고요! 다음에는 중급과 고급 등산 코스를 소개해 드릴게요. 모두 곤데이 되세요 :)​ ​ 서울등산  등산코스  초보등산  서울등산코스  초보등산추천  안산자락길  안산  아차산  용마산  아용마  도봉산  불암산  서울산  서울등산추천​ 안산자락길 서울특별시 서대문구 봉원동 산1 아차산 경기도 구리시 아천동 불암산 서울특별시 노원구 상계동 도봉산 서울특별시 도봉구 도봉동 ​  서울등산  등산코스  초보등산  서울등산코스  초보등산추천  안산자락길  안산  아차산  용마산  아용마  도봉산  불암산  서울산  서울등산추천 공감한 사람 보러가기 댓글 13 공유하기 곤 국내여행 일상의 순간이 모여서

  Query: 등산화없이도 갈만한 산은?

  Helpful Answer:

임베딩이 예상대로 작동하는 것으로 확인되었습니다.

질문이 약간 다르더라도 올바른 문서를 반환합니다. 프롬프트 토큰이 소비되지 않았습니다.

 

 

여러분도 나만의 챗봇을 한번 만들어 보세요 :)

 

 

728x90

댓글