뒤로
김정래
김정래 ·

내가 가진 데이터로 AI 챗봇이 만들어지나? - [Gemini API + Rag]

비용 : 무료

준비물 : Gemini 계정, 챗봇에 넣을 텍스트 데이터

예상시간 : 10분 내외?

안녕하세요.

오랜만에 글을 씁니다. 마지막 글로부터 8개월 만이네요. 디스콰이엇에 쓴 글들 덕분에 AI에 대한 자문이 많이 들어왔습니다. 덕분에 정신없이 AI를 만들고 보니 어느새 8개월이 지났네요. 디스콰이엇에 무한한 감사 인사를 드립니다.

AI에 대한 자문을 하면서, 비싼 비용과 어려운 난이도로 인해 실제 업무에 AI를 적용하지 못하는 분들을 많이 봤었습니다. 심지어 가볍게라도 AI 테스트를 해보고 싶지만, 이마저도 어려워하시는 분들이 많았습니다. 그래서 이러한 분들을 위해서 싸게 그리고 쉽게 써볼 수 있는 챗봇 AI 코드를 소개할까 합니다.

AI 챗봇이 어느 정도 성능을 보이는지, 자기가 가지고 있는 데이터로 AI 챗봇을 만들 수 있는지 궁금하신 분들께서 따라 하시면 좋을 거 같습니다. 해당 글에서 사용하는 기술은 RAG 기법 중, Dense Retrieval이라는 기술입니다. AI에게 문서를 주고, 해당 문서 내용을 바탕으로 답변을 하도록 하는 기술입니다.

1. Gemini api키를 생성합니다.

https://ai.google.dev/gemini-api

Gemini 사용 이유

- 성능 좋은 gemini-1.5-flash api를 무료로 제공해 준다.

- 속도 향상을 위해 유료 버전으로 바꿔도 매우 저렴하다.

- Embedding 모델로 OpenAI를 쓰면 더 빠르고 좋은데, OpenAI api를 가져오라고 하면 매우 귀찮기 때문에 gemini 하나만 쓸 예정입니다.

gemini_api_key.png

2. chatgpt에 가서 내 데이터를 영어로 번역해달라고 합니다.

여러 gpt 모델 중 아래 adobe-express가 pdf를 제일 잘 읽고, 번역도 깔끔하게 해줍니다.

https://chatgpt.com/g/g-pcoHeADVw-adobe-express

openai 회원가입만 해도 무료로 사용하실 수 있습니다.

translate.png

번역하는 이유

- 한글을 그대로 밀어 넣으면 성능이 제대로 안 나옵니다.

- 한글은 영어보다 Token을 많이 잡아먹기 때문에, 영어로 번역하여 사용하는 것이 여러모로 유리합니다.

저는 Cornell 고양이 건강 센터의 자료를 가지고 만들 예정입니다. 모든 데이터를 넣으면 속도가 느려서, 행동 문제(Behavioral Issues) 부분만 넣을 예정입니다.

https://www.vet.cornell.edu/departments-centers-and-institutes/cornell-feline-health-center/health-information/feline-health-topics

* 무료버전일 경우, 워드 파일 기준 10페이지 이하로 테스트하는 것을 추천드립니다.


3. 번역한 파일 저장하기

위에서 번역해 준 내용을 메모장에 저장합니다. pdf로 만들어도 상관없습니다.

여러 개를 넣어도 상관없습니다.

다만 그만큼 느려집니다.

* gemini는 똑같은 말을 반복하면 작동을 멈추는 이슈가 있습니다. 그래서 데이터를 이쁘게 넣어도 에러가 날 수 있습니다.

4. 코드 실행하기

* 제가 최대한 간단하게 만들다 보니 조금 안 이쁠 수 있습니다.

코렙 링크 :

1) 드라이브로 복사 클릭

colab-1.png

2) Gemini api key를 넣은 후에 my_data 폴더에 데이터를 넣어주라는 문구가 나올 때까지 실행 버튼을 쭉 죽 눌러주세요. 세션 다시 시작 멘트가 나오는데, 세션 다시 시작 버튼을 누르신 후에, 처음부터 다시 실행 버튼을 누르시면 됩니다.

ex) os.environ["GOOGLE_API_KEY"] = "12345678910"

실행버튼.png

3) my_data 폴더가 생성 완료되면, 왼쪽 폴더 버튼을 누른 후 my_data에 앞에서 만든 데이터를 넣어주세요. 파일을 드래그해서 폴더에 파일을 넣으시면 됩니다.

- 안 보이면, 새로고침 버튼을 눌러주세요

my_data.pngmy_data2.png

4) 이제 챗봇에게 data를 학습 시키는 코드입니다. 이어서 코드를 실행하세요. 학습 속도가 느리다 싶으시면, OpenAI api key를 입력하시고, embed_model을 지우시면 됩니다. 기본 설정이 OpenAI로 되어 있어서 코드에서 embed_model부분만 지우면 바로 적용됩니다. 최대한 무료로 간단하게 하려고 Gemini만 쓰다 보니 속도가 다소 느립니다.

model_학습.png

5) 학습이 완료되면, 질문을 넣고 코드를 실행해 보세요.
- 학습이 영어로 되어 있기 때문에, 되도록 영어로 번역해서 넣는 것이 더 좋은 결과치를 보여줍니다.
- 위 데이터는 워드 기준 약 30페이지 정도 되는 데이터입니다. 학습에 약 10분 정도 걸렸네요.

학습결과 및 출력.png

6) 다른 질문도 넣어서 테스트해 보세요.
- 질문만 바꿔서 넣은 후에 다시 실행 버튼을 누르시면 됩니다.

다시질문.png

이상 내 데이터로 ai챗봇을 만드는 방법이었습니다.

내 학습 데이터를 가지고 이것저것 테스트해 본 후 오 꽤 괜찮다 싶으면, 이제 챗봇을 만들면 되는데요, streamlit이라는 서비스를 이용하여 아래 링크처럼 매우 간단한 챗봇도 만드실 수 있습니다.

* gemini는 규제가 많아서, "고양이가 똥을 싸요?","고양이가 당뇨가 있나요?"와 같은 몇몇 질문은 자체적으로 막아버립니다.. ㅠㅠ

데모 링크 : https://aichatbot-test-carillon.streamlit.app/

demo.png

AI를 활용한 서비스에 대해 이야기를 나누고 싶으시면 언제든 환영입니다.

10X AI Club 그룹의 글
8

댓글

로그인 후 댓글을 남길 수 있습니다.

아직 댓글이 없습니다.