목록AI & ML/사용하기 (9)
Ssul's Blog
1. 챗봇의 주요기능 및 구조①RAG에 사용할 참고도서, 문헌, 웹자료를 적절히 쪼개서 임베딩 합니다.- RAG에 사용할 자료를 적절히 쪼개고- 임베딩 모델을 결정(필자는 openai의 "text-embedding-3-small"모델 사용)하여, 해당 모델로 쪼갠 자료를 임베딩 진행(N차원 공간에 1개의 점들로)- 해당 임베딩 정보를 csv파일 또는 chromadb, faiss로 저장 ②채팅창에서 사용자의 채팅 입력을 받습니다.- 화면에 채팅입력창을 출력하고, 사용자의 채팅을 입력받습니다.- 입력받은 채팅을 백엔드 api.py로 보냅니다. ③사용자의 입력내용을 RAG진행- 사용자의 입력내용을 임베딩(N차원의 공간에 1개의 점으로)- 이미 임베딩 해놓은 파일/db에서, 가장 유사한(근처에 있는) 데이터3개..
RAG의 구동 개념이 궁금하면 우선 아래글 확인하시고, https://issul.tistory.com/441 [ChatGPT] openai 임베딩 사용해서 RAG구현(생코딩,csv파일) 0. RAG란? Retrieval-Augmented Generation의 약자로 한글로 표현하면, 검색증강생성? 뭔가 알듯 모르는 단어 느낌? 간단하게 말하면, ai가 응답을 하기 전에, 질문받은 내용과 유사한 자료(텍스트 또는 문장 issul.tistory.com 이번 글에서는 Langchain과 벡터DB를 활용해서, RAG를 구현하는 실전 진행 #1. 기획(계획) - RAG에 사용할 주요 저서를 pdf파일이 있다 - 해당 pdf 본문을 500개 단위로 끝어서 > openai임베딩을 하여 > 벡터DB에 저장한다. - 사..
0. RAG란? Retrieval-Augmented Generation의 약자로 한글로 표현하면, 검색증강생성? 뭔가 알듯 모르는 단어 느낌? 간단하게 말하면, ai가 응답을 하기 전에, 질문받은 내용과 유사한 자료(텍스트 또는 문장) 찾아서, 찾은 문서와 질문을 함께 AI에게 보내는 것이다. gpt한테 최철수씨 나이를 물으면 다음과 같은 대답을 한다. 하지만, 최철수씨에 대한 정보를 알려주고, 나이를 물으면 잘 알려준다. "최철수는 30살이고, 서울에 살아"가 바로 RAG를 통해서 가져오는 정보이며, 이 정보를 질문과 함께 보내는 것이 RAG의 간단한 맥락으로 이해하면 되겠다. 1. 어떻게 질문과 유사한 정보(자료)를 가져올까?(임베딩) 기존의 gpt는 프롬프트 튜닝만 해서 사용하는 구조이다. 적절한 ..
2024. 02월 버전으로 작업해 보자 #0. openai 셋팅 pip install openai pip install langchain pip install python-dotenv #.env파일 환경변수 가져올려고 - 주요 라이브러리 설치합니다 # 0. openai 셋팅 import os from dotenv import load_dotenv import openai load_dotenv() openai.api_key = os.getenv("OPENAI_API_KEY") - openai의 api키를 설정합니다. - .env에 넣고, 불러오기 #1. Langchain으로 시스템메세지 셋팅하고, 질문하고 응답받기 from langchain.chat_models import ChatOpenAI from l..
1. 스팸문자 여부를 판단하는 모델 만들기 지난 글들을 통해서, - 도메인특화 챗봇 만들기(https://issul.tistory.com/417) - 허깅페이스 사용법(https://issul.tistory.com/429) PLM모델들을 어떻게 파인튜닝하고, 활용할수 있는지에 대한 이론적인 개념을 알았다. 실제 이 개념을 어떤 프로젝트에 활용할 수 있을까? 매일 5개 이상 오는 스팸문자를 보면서, AI가 스팸여부를 판단하고 걸러주면 좋겠다는 생각을 했다. 키워드 기반의 기계적인 필터링이 아닌, 인간인 내가 봤을때 직관적으로 스팸이다 아니다를 판단하는 것처럼... 직관성이 있는 모델. 이런 것은 알고리즘보다는 LLM이 잘 할수 있기에 딱 인것 같다.(물론 뒤에서 언급하겠지만, 배보다 배꼽이 더 커지기 때문..
0. 들어가며, 앞전 글(https://issul.tistory.com/430)에서 function_call로 반말하기 챗봇을 작성하였는데, 여전히 헤깔리는 부분이 있어서, 내 머리속에서도 정리할겸 제대로 어떻게 돌아가는지 이해해보고자 한다. 내가 원하는 상황은 이런 것이다. ChatGPT가 평소 대화하는 것처럼 대화하다가, - 오늘 서울 날씨를 물어보면, 정확하게 대답을 해주고, - 특정 대답결과를 파일로 저장하기도 해주는 것이다. 그러면 평소처럼 대화도 가능해야 하고, 특정 상황이 되었을때는 function_call이 호출되는 구조이다. 그럼 차근차근 어떻게 function_call이 작동하는지 알아보자. 순서1. 일반대화를 하다가, 특정상황이 되었을때 function_call작동 이게 기존의 개발과..
0. 챗봇의 기본구조 class ChatLogCreate(generics.CreateAPIView): queryset = ChatLog.objects.all() serializer_class = ChatLogSerializer permission_classes = [AllowAny] def post(self, request, *args, **kwargs): client_id = request.data.get('client') client = Client.objects.get(id=client_id) if client.chat_counter >= 20: return Response({"detail": "대화 횟수가 20회를 초과하였습니다."}, status=status.HTTP_400_BAD_REQUEST..
0. 허깅페이스는 무엇인가?(huggingface.co) 허깅페이스(Hugging Face)는 인공 지능(AI) 분야에서 자연어 처리(NLP)를 중심으로 한 다양한 딥러닝 모델과 도구들을 제공하는 회사. 오픈소스 라이브러리인 'Transformers'를 통해 유명해짐. 이 라이브러리는 다양한 전처리 방법, 모델 아키텍처(BERT, GPT, T5 등), 그리고 후처리 방법을 포함하여 NLP 분야에서 광범위하게 사용. - AI관련 깃허브 느낌 - 내가 만든 모델/데이터셋을 Public, private로 올릴수 있고, Public일 경우 누구나 내가 올려놓은 데이터셋, 모델을 사용할수 있음 - 당연히 다른 사람이 만든 언어모델이 Public으로 공개되어 있다면, 나는 해당 모델을 기반으로 파인 튜닝이 가능함..
0. GPT, ChatGPT차이점 GPT는 다음 단어를 귀신 같이 예측하는 모델이다. 우리가 이용하고 있는 모델은 이 GPT를 파인튜닝해서 만든 ChatGPT. ChatGPT는 gpt라는 다음단어를 아주 잘 예측하는 Pretrained된 모델을 파인튜닝하여서, 대화를 잘하게 만든 모델 그럼 어떻게 GPT에서 ChatGPT가 될수 있을까? Llama2모델을 파인튜닝하여, 나만의 ChatGPT를 만드는 방법을 알아보자 1. ChatGPT만들기 전체구조 우선 ChatGPT를 만들기 위해서, OpenAI에서 공개한 학습구조를 정리해보자. 1-1. SFT(Superviesed Fine-Tuning)을 통한 응답모델 만들기 SFT는 기존의 다음단어를 예측하는 gpt모델을 파인튜닝해서, 대화형 모델로 변화시키는 것이..