Project/SYU

[SYU] - SYU_Chat_Bot_2 (LLM 설정, 벡터 데이터베이스 통합 및 질의응답 체인 구현)

ro-jun 2024. 11. 17. 23:03
728x90
반응형
.env 파일 생성
  • 프로젝트 루트 디렉토리에 .env 파일을 생성하여 아래 내용을 추가
  • Git에 업로드되지 않도록 .gitignore에 추가
OPENAI_API_KEY=your_openai_api_key
PINECONE_API_KEY=your_pinecone_api_key
필요한 패키지 설치
pip install langchain-openai
pip install pinecone-client 
pip install langchain-community
LLM 설정
  • llm_setup.py 파일을 생성하고 아래 코드를 작성
from langchain_openai.chat_models import ChatOpenAI
from dotenv import load_dotenv
import os

# 환경 변수 로드
load_dotenv()

# LLM 초기화
llm = ChatOpenAI(
    model="gpt-4o-mini",  # GPT 모델 이름
    temperature=0,  # 결정론적 답변을 위한 설정
    openai_api_key=os.getenv("OPENAI_API_KEY")  # API 키
)
print("LLM 설정 완료:", llm)
  • 아래 명령어로 실행하여 LLM 설정을 확인
python llm_setup.py
벡터 데이터베이스 설정
  • vector_db_setup.py 파일을 생성하고 아래 코드를 작성
import pinecone
from langchain_openai.embeddings import OpenAIEmbeddings
from langchain_community.vectorstores import Pinecone
from dotenv import load_dotenv
import os

# 환경 변수 로드
load_dotenv()
PINECONE_API = os.getenv('PINECONE_API_KEY')
openai_api = os.getenv("OPENAI_API_KEY")

# Pinecone 설정 및 연결
pinecone_client = pinecone.Pinecone()
indexes = pinecone_client.list_indexes()
# print(indexes)
index = indexes[1].name
# print(index)
print("Pinecone 설정 완료.")

# OpenAI Embeddings 설정
embeddings = OpenAIEmbeddings(
    openai_api_key=openai_api
    )
print("embeddings 설정 완료.")

# VectorStore 초기화
vectorstore = Pinecone.from_existing_index(index, embeddings)
# print(vectorstore)
print("벡터 데이터베이스 설정 완료.")
  • 아래 명령어를 실행하여 벡터 데이터베이스 설정을 확인
python vector_db_setup.py
Q&A 체인 설정
  • qa_setup.py 파일을 생성하고 아래 코드를 작성
from vector_db_setup import vectorstore  # 벡터 DB 설정 가져오기
from llm_setup import llm  # 이미 설정된 LLM 가져오기
from langchain.chains import ConversationalRetrievalChain

# Retriever 설정
retriever = vectorstore.as_retriever(
    search_type="similarity",
    search_kwargs={"k": 3}  # 상위 3개의 유사한 결과 반환
)
print("Retriever 설정 완료.")

# Q&A 체인 설정
qa_chain = ConversationalRetrievalChain.from_llm(
    llm=llm,  # llm_setup.py에서 가져온 LLM
    retriever=retriever
)
print("Q&A 체인 설정 완료.")
  • 아래 명령어를 실행하여 Q&A 체인 설정을 확인
728x90
반응형