반응형
이 글에서는 랭체인(LangChain)의 RAG 문서를 참고하여 RAG 시스템을 구현하는 방법을 소개합니다.
필요한 패키지 설치하기
아래의 명령어를 사용하여 필요한 패키지를 설치합니다. 이러한 패키지들은 검색-증강 생성 과정을 구현하는 데 필요한 도구와 라이브러리를 제공합니다.
pip install --upgrade --quiet langchain faiss-cpu tiktoken langchain-google-genai
패키지 가져오기
다음으로, 구현에 필요한 패키지들을 Python 코드 내로 가져옵니다. 이 과정에서 각각의 모듈에서 필요한 클래스와 함수를 임포트합니다.
from langchain_community.vectorstores import FAISS
from langchain_core.output_parsers import StrOutputParser
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.runnables import RunnablePassthrough
from langchain_community.embeddings import HuggingFaceEmbeddings
from langchain_google_genai import ChatGoogleGenerativeAI
한국어 임베딩 모델 구성하기
임베딩 과정에는 jhgan/ko-sroberta-multitask
모델을 사용하여 한국어 텍스트의 벡터 표현을 생성합니다. 이 모델은 한국어 문장을 임베딩하는데 효과적입니다.
hf = HuggingFaceEmbeddings(model_name='jhgan/ko-sroberta-multitask')
다음으로, 임베딩 모델을 사용하여 벡터 저장소를 생성하고, 이를 통해 검색 기능을 구현합니다.
docs = [
"오늘은 정말 바쁜 하루였다. 아침에 일찍 일어나서 친구와 만나기로 한 약속을 지켰다.",
"최근 인공지능 기술의 발전으로 많은 산업 분야에서 혁신이 일어나고 있다. 특히 자연어 처리 기술의 진보가 눈부시다.",
"제주도는 한국에서 가장 인기 있는 관광지 중 하나다. 아름다운 해변과 푸른 자연이 매력적인 곳이다.",
"한국의 김치는 세계적으로 유명한 발효 음식이다. 매콤하고 시원한 맛이 특징이며 다양한 요리에 활용된다.",
"정기적인 운동과 균형 잡힌 식단은 건강을 유지하는 데 필수적이다. 매일 조금씩이라도 몸을 움직이는 습관을 들이자.",
"온라인 학습 플랫폼의 발전으로 어디서나 다양한 지식을 접할 수 있게 되었다. 평생교육의 중요성이 점점 더 커지고 있다.",
"지속 가능한 생활을 위해서는 일회용품 사용을 줄이고 재활용을 적극적으로 실천해야 한다.",
"축구는 전 세계적으로 사랑받는 스포츠 중 하나다. 팀워크와 개인 기술이 조화를 이루어야 승리할 수 있다.",
"한국의 전통 문화 중 하나인 한복은 그 아름다움으로 많은 사람들에게 사랑받고 있다. 특별한 날에 한복을 입는 것은 큰 의미가 있다.",
"최근 글로벌 경제는 여러 도전에 직면해 있다. 변동성이 큰 시장에서 기업과 개인은 더욱 신중한 결정을 내려야 한다."
]
vectorstore = FAISS.from_texts(docs, embedding=hf)
retriever = vectorstore.as_retriever()
프롬프트 구성하기
사용자의 질문에 답하기 위해 고려할 문맥을 정의하는 프롬프트를 설정합니다
template = """Answer the question based only on the following context:
{context}
Question: {question}
"""
prompt = ChatPromptTemplate.from_template(template)
모델 설정하기
Google Generative AI를 사용하여 Gemini Pro 모델을 설정합니다. 이 모델은 RAG 과정에서 AI 답변 생성을 담당합니다.
model = ChatGoogleGenerativeAI(model="gemini-pro")
실행 체인 구성하기
마지막으로, 위에서 설정한 구성요소들을 연결하여 전체 실행 체인을 구성합니다. 이 체인은 사용자의 질문을 입력으로 받아, 검색-증강 생성 과정을 통해 답변을 생성합니다.
chain = (
{"context": retriever, "question": RunnablePassthrough()}
| prompt
| model
| StrOutputParser()
)
체인 실행하기
구성된 체인을 사용하여 실제 질문에 대한 답변을 생성해 봅시다.
chain.invoke("건강을 유지하려면 어떻게 해야하나요?")
'정기적으로 운동하고 균형 잡힌 식단을 유지하는 것이 필수적이다.'
참고
or
반응형
'개발 > AI 개발' 카테고리의 다른 글
AI 임베딩 모델 한국어 성능 비교 (2) | 2024.05.05 |
---|---|
옵시디언 노트와 랭체인을 이용한 RAG 시스템 만들기 (0) | 2024.02.21 |
GPT 스토어가 오픈했습니다! (0) | 2024.01.11 |
오픈소스 Code Interpreter API를 활용한 데이터 시각화, 주식 차트 그리기, 이미지 편집 방법 (0) | 2023.07.24 |
GPT Engineer를 활용한 프로젝트 생성과 실행 (0) | 2023.07.22 |