본문 바로가기

728x90

AI

(41)
가상의 Function Calling 함수를 이용한 실습 pip install openai gradioimport osimport jsonimport pandas as pdfrom datetime import datetimefrom typing import Dict, List, Optional, Unionfrom openai import OpenAIimport gradio as gr# 샘플 데이터 (실제 구현에서는 DB나 API에서 가져올 것입니다)products_data = [    {"상품ID": "P001", "상품명": "프리미엄 강아지 간식 세트", "물류창고ID": "W02", "카테고리": "반려용품", "재고수량": 36, "가격": 32417, "입고일자": "2022-01-14"},    {"상품ID": "P002", "상품명": "고양이 캣..
Function Calling 에이전트 !pip -q install langchain openai tiktoken yfinance langchain_community langchain_openaiimport osos.environ["OPENAI_API_KEY"] = "본인 open api Key 값"Function Calling 함수 명세 예시 간단 예시Function Calling을 하기 위해서는 함수의 명세를 아래와 같은 형식으로 작성해야 합니다.functions = [   {       "name": "get_current_weather",       "description": "현재 날씨 정보 가져오기",       "parameters": {           "type": "object",           "properties":..
Function Calling 예시 - 행거 챗봇 예시 펑션 콜링을 학습하기 위해서 공부한 흔적입니다.아래 내용은 실제 Function Calling 이 아니라 Function Calling 이 왜 필요한가를 설명하는 예시 내용에 가깝다라고 생각하면 됩니다.사용자의 대화를 이해하고 (멀티턴 포함) 충족하는 함수의 호출 조건이 되면 LLM은 어떤 함수를 어떤 파라미터로 호출해야하는지 제안합니다.우리의 코드는 LLM이 함수 호출을 제안하는 순간 실제로 함수를 호출하면, 호출 결과를 LLM에게 전달하면 LLM은 호출 결과를 바탕으로 다시 답변하는 것 입니다.!pip install openai 1. 정보 수집import osos.environ['OPENAI_API_KEY'] =  "본인 openai Key 값"from openai import OpenAIclient..
여러 문서에서 찾아서 답변하는 챗봇 만들기 !pip install -q langchain langchain-openai openai tiktoken chromadb langchain-community!wget https://github.com/chatgpt-kr/chatgpt-api-tutorial/raw/main/ch05/data.zip!unzip dataArchive: data.zip inflating: 1.txt inflating: 10.txt inflating: 11.txt inflating: 12.txt inflating: 13.txt inflating: 14.tx..
LoRA Tuning LLM이 있을 때 모델 전체를 파인 튜닝하는 것은 Full Fine Tuning기존 LLM은 고정해두고 일부 파라미털르 추가하여 학습하는 것이 LoRA Tuning학습 시 LoRA Tuning 은 더 적은 리소스로 학습 가능하며 상황에 따라서 Full Fine Tuning 보다 성능이 우수함vLLM으로 Multi LoRA Serving 을 사용하면 하나의 LLM으로 다수의 모델 Serving 효과를 얻을 수 있음 LoRA TuningLoRA Tuning은 기존 LLM 파라미터는 고정하고, 아래의 그림에서 초록색 박스와 같이 A, B 행렬만 학습한다.파라미터 W(d x d)가 LLM이라고 한다면, LoRA Tuning은 W는 학습하지 않는다.LoRA Tuning은 행렬 A(d, r)과 행렬 B(r, d)를..
RAG를 위한 파인 튜닝 데이터셋 실습 EDA RAG를 위한 파인 튜닝 데이터셋 실습https://huggingface.co/datasets/iamjoon/klue-mrc-ko-rag-dataset iamjoon/klue-mrc-ko-rag-dataset · Datasets at Hugging Face[ "블리자드 엔터테인먼트(Blizzard Entertainment, Inc.)의 인기 디지털 카드 게임 하스스톤(Hearthstone®) e스포츠를 대표하는 세계 최고의 선수들 여덟 명이 챔피언의 전당에 이름을 올리기 위해 벌이는huggingface.copip install datasetsimport numpy as npimport matplotlib.pyplot as pltfrom datasets import load_datasetdataset = ..
Fine-tuning For RAG RAFT: Adapting Language Model to Domain Specific RAGUC Berkeley 논문사용자의 질문과 연관된 문서와 정답과 연관이 없는 문서를 섞어서 검색 결과로 가정하고 데이터셋을 구축이 때 연관이 없는 문서들을 negative documents라고 하며 학습에 도움을 주게 된다.이는 Fine-tuning 시 답변과 관련 없는 정보를 식별하는 능력을 향상시키기 때문이다. 파인 튜닝 전, 후 LLAMA2의 RAG 성능 차이는 매우 크게 나는 것을 볼 수 있음LLAMA2-7B를 파인 튜닝한 것이 GPT-3.5 에 RAG 를 한 것보다 성능이 더 좋음  원문을 인용하여 답변하게 하면 성능 Up원문을 인용해야 하므로 할루시네이션 억제일종의 Chain of Thought 프롬프트..
MultipleNegativesRankingLoss를 활용한 임베딩 파인 튜닝 MultipleNegativesRankingLoss는 문장 임베딩 모델을 파인 튜닝하는 데 매우 효과적인 손실 함수로. 이 방법에 대해 더 자세히 공부해 보겠습니다. 손실 함수(Loss function): 오차를 계산하는 함수로. AI를 학습할 때는 학습 중인 AI의 예측값과 실제 정답간의 오차를 계산해서 해당 오차를 줄이는 식으로 AI 모델을 학습합니다. 포지티브 샘플과 네거티브 샘플포지티브 샘플(Positive Sample): 의미적으로 관련이 있는 문장 쌍을 의미합니다.예: (문서1: "서울의 인구는?", 문서2: "서울의 인구는 약 970만 명입니다.")네거티브 샘플(Negative Sample): 의미적으로 관련이 없거나 관련성이 낮은 문장 쌍을 의미합니다.예: (문서1: "서울의 인구는?", ..
RAG 실습 이후 + LLM 추천 위에서 RAG 실습과, 서울 청년 정책 챗봇을 만들어보면서 관련 내용들을 학습했는데, 추가적으로 더 성장하기 위해서는 어떤것을을 학습해야할지 생각해 보았다. 멀티모달 RAG에이전트 RAG (멀티턴 Function Calling / ReACT Agent / Plan and Execute Agent / Corrective RAG 등)키워드 기반 검색 : BM-25 와 앙상블 리트리버 (바이인코더) 임베딩 파인튜닝 (+ 검색 성능 Metric (NDGC, MAP 등 ...))크로스인코더 임베딩 모델 파인튜닝을 이용한 ReRankingRAG 답변 성능 향상을 위한 LLM 파인 튜닝 (LLaMA, Qwen, Gemma) 위 모든 것들을 구현하기 위한 Langchain, LangGraph, Huggingface T..
RAG 서울 청년 정책 챗봇 실습 여러 문서에서 찾아서 답변하는 챗봇 만들기!pip install -q langchain langchain-openai openai tiktoken chromadb langchain-community!wget https://github.com/chatgpt-kr/chatgpt-api-tutorial/raw/main/ch05/data.zip!unzip dataArchive: data.zip inflating: 1.txt inflating: 10.txt inflating: 11.txt inflating: 12.txt inflating: 13.txt inflating: 14.txt inflating: 15.txt inflating: 16.txt inflating: 17.txt inflating: 18.txt i..
벡터 스토어와 RAG 실습 우선적으로 실습에 앞서 해야할 일PDF 파일을 다운로드Langchain의 PyPDFLoader로 PDF 파일을 읽어서 페이지 별로 저장.예를 들어 368페이지의 PDF 파일이라면 368개의 문서를 얻게 된다.368개의 문서들은 길이가 제각각입니다. 특정 길이(여기서는 2000)로 제한하고 더 잘라준다.총 378개의 문서가 나오게 됩니다. 378개의 문서를 전부 임베딩(Embedding)하여 벡터 데이터베이스에 적재한다.벡터 데이터베이스는 Chroma 또는 Faiss를 사용함질문을 입력하면 378개의 문서 중 가장 유사도가 높은 문서 4개를 출력필요한 패키지 다운로드 랭체인, 벡터 데이터베이스, 임베딩 모델, PDF 파일을 읽는 도구!pip install langchain langchain_openai c..
랭체인을 이용한 RAG 랭체인을 이용한 RAG 임베딩 파인튜닝 실습 임베딩과 검색기 임베딩(Embedding)텍스트를 AI를 이용해 숫자, 특히 벡터로 변환하는 것이 임베딩이다.여기서 벡터란 숫자들이 나열된 형태를 의미하고 있다.'사과' -> 단어 임베딩 -> 벡터 : [0.12, 0.34, 0.75, -0.12]'안녕하세요' -> 문장 임베딩 -> 벡터 : [0.57, 0.25, 0.85, 3.24]'서울 청년 정책이 ... ' -> 문장 임베딩 -> 벡터 : [0.54, 0.84, 0.28, 0.59] 임베딩 지나는것이 벡터로 변환하는 과정임임베딩 모델은 직접 공개된 모델을 다운로드하여 사용하는 것과 API로 제공받는 것 총 두 가지가 존재공개된 모델을 다운로드 하여 사용하는 경우 '보안', '직접 도메인에 맞게 학습하여 ..

728x90