본문 바로가기
🤖 AI/AI 프로젝트

신촌 GPT - 🪺RAG 학습시키기 - test.ver

by 정람지 2024. 3. 27.

🪺 목표

- 신촌 구글 드라이브 문서 전부 rag로 던지기!!

 

+

- gpt - 3.5 터보 버전으로 테스트 / gpt 4로도 테스트해보기

- 창의성 등 LLM 세부사항 조정해보기 


🪺 테스트 버전

 

🥚 문서 하나

우선 문서 하나를 고른다

흠..

 

"2024 겨울 신촌지역 대학교 프로그래밍 동아리 연합 후원 기획서"로 결정 

테스트하기 좋은 정보들 함유~

files에 넣고,


🥚 로직 생각

- 이 파일을 가져와서

- split하고

- embedding하고

- 메모리 저장 (요금 방지)

 

- 모델 가져오고 

- 프롬프트 만들고

- 체인 만들기

 

- 디스코드 연결 


🥚 파일 가져오기

from langchain.document_loaders import UnstructuredFileLoader

loader = UnstructuredFileLoader("./files/chapter_one.txt")

UnstructuredFileLoader : 다양한 파일 형식 지원


🥚 split : 문자열 쪼개기

from langchain.text_splitter import CharacterTextSplitter

splitter = CharacterTextSplitter.from_tiktoken_encoder(
    separator="\n",
    chunk_size=600,
    chunk_overlap=100,
)

줄바꿈 기준으로 쪼개기 

문단 청크 600으로 쪼개기

잘리는 문맥이 발생하지 않게 앞 문단에서 100 정도 가져와서 붙임

 

로드된 문서 이 splitter로 자르기 

docs = loader.load_and_split(text_splitter=splitter)

🥚 메모리 저장

from langchain.storage import LocalFileStore 
cache_dir = LocalFileStore("./.cache/")

캐시 파일 생성 


🥚 임베딩

from langchain.embeddings import OpenAIEmbeddings, CacheBackedEmbeddings 

embeddings = OpenAIEmbeddings()
cached_embeddings = CacheBackedEmbeddings.from_bytes_store(embeddings, cache_dir)

임베딩 모듈 가져오고

캐시 저장소 연결


🥚 chroma

 

the AI-native open-source embedding database

the AI-native open-source embedding database

www.trychroma.com

임베딩 사용을 편리하게 만들어 주는 크로마

from langchain.vectorstores import Chroma 

vectorstore = Chroma.from_documents(docs, cached_embeddings)

쪼개진 문서와 임베딩해주는 애를 넘김!


🥚 모델 가져오기

from langchain.chat_models import ChatOpenAI

# 모델 가져오기
llm = ChatOpenAI(temperature = 0.1)

일단 3.5 터보,

창의력 노노


🥚 체인 만들기

from langchain.chains import RetrievalQA

chain = RetrievalQA.from_chain_type(
    llm=llm, 
    retriever = vectorstore.as_retriever(), 
)

RetrievalQA (Retrieval-Based Question Answering)

질문에 대한 답을 찾기 위해 관련 정보를 검색(retrieve)하여 활용하는 질문 답변 시스템의 한 형태

주어진 질문에 가장 적절한 답변을 생성하기 위해, 대규모의 데이터베이스나 문서 집합에서 관련 정보를 검색한 후, 그 정보를 기반으로 답변을 생성하거나 선택

 

Retriever

RetrievalQA (Retrieval-Based Question Answering) 시스템의 핵심 구성 요소

주어진 질문에 대한 정보를 찾기 위해 대량의 데이터 소스를 검색하는 역할


🥚 + gitignore

files랑 cache 추가

api 키랑 env


🥚 임시 개장 sinchonGPT!

잘한다!

할루시네이션도 업따!

 

 

우리아기...더 잘 키워야겠다


이제 구글 드라이브랑 연결해봐야겠다!