>  기사  >  백엔드 개발  >  나만의 AI RAG 챗봇 만들기: LangChain을 사용한 Python 가이드

나만의 AI RAG 챗봇 만들기: LangChain을 사용한 Python 가이드

Patricia Arquette
Patricia Arquette원래의
2024-10-20 14:15:30348검색

문서에서 즉각적인 답변을 원하지 않는 사람이 어디 있겠습니까? 이것이 바로 RAG 챗봇이 하는 일입니다. 빠르고 정확한 응답을 위해 검색과 AI 생성을 결합합니다!

이 가이드에서는 LangChainStreamlit과 함께 RAG(Retrieval-Augmented Generation)를 사용하여 챗봇을 만드는 방법을 보여 드리겠습니다. 이 챗봇은 지식 기반에서 관련 정보를 가져오고 언어 모델을 사용하여 응답을 생성합니다.

OpenAI, Gemini, Fireworks 중 무엇을 사용하든 응답 생성을 위한 다양한 옵션을 제공하면서 각 단계를 안내해 드립니다. 비용 효율적인 솔루션입니다.

검색 증강 생성(RAG)이란 무엇입니까?

RAG검색세대를 결합하여 보다 정확하고 상황에 맞는 챗봇 응답을 제공하는 방법입니다. 검색 프로세스는 지식 기반에서 관련 문서를 가져오는 반면, 생성 프로세스는 언어 모델을 사용하여 검색된 콘텐츠를 기반으로 일관된 응답을 생성합니다. 이를 통해 언어 모델 자체가 해당 정보에 대해 특별히 교육받지 않은 경우에도 챗봇이 최신 데이터를 사용하여 질문에 답할 수 있습니다.

귀하의 질문에 대한 답을 항상 알지 못하는 개인 비서가 있다고 상상해 보십시오. 그래서 질문을 하면 책을 뒤져 관련 정보를 찾아보고(검색), 그 정보를 요약해서 자신의 말로 다시 알려준다(세대). 이것이 본질적으로 두 가지 장점을 결합한 RAG의 작동 방식입니다.

순서도에서 RAG 프로세스는 다음과 같습니다.

Create Your Own AI RAG Chatbot: A Python Guide with LangChain

이제 시작해 보세요. 나만의 챗봇을 만들어보세요!


프로젝트 환경 설정

이 TUTO에서는 주로 Python을 사용할 것입니다. JS 헤드라면 설명을 따르고 langchain js의 문서를 살펴볼 수 있습니다.

먼저 프로젝트 환경을 설정해야 합니다. 여기에는 프로젝트 디렉토리 생성, 종속성 설치, 다양한 언어 모델에 대한 API 키 설정이 포함됩니다.

1. 프로젝트 폴더 및 가상 환경 생성

프로젝트 폴더와 가상 환경을 만드는 것부터 시작하세요.

mkdir rag-chatbot
cd rag-chatbot
python -m venv venv
source venv/bin/activate

2. 종속성 설치

다음으로 필요한 모든 종속성을 나열하는 요구 사항.txt 파일을 만듭니다.

langchain==0.0.329
streamlit==1.27.2
faiss-cpu==1.7.4
python-dotenv==1.0.0
tiktoken==0.5.1
openai==0.27.10
gemini==0.3.1
fireworks==0.4.0
sentence_transformers==2.2.2

이제 다음 종속 항목을 설치하세요.

pip install -r requirements.txt

3. API 키 설정

챗봇의 응답 생성을 위해 OpenAI, Gemini 또는 Fireworks를 사용할 예정입니다. 귀하의 선호도에 따라 이들 중 하나를 선택할 수 있습니다.

실험 중이라면 걱정하지 마세요. Fireworks는 1달러 상당의 API 키를 무료로 제공하며, gemini-1.5-flash 모델도 어느 정도 무료입니다!

원하는 모델의 API 키를 저장할 .env 파일을 설정하세요.

mkdir rag-chatbot
cd rag-chatbot
python -m venv venv
source venv/bin/activate

이러한 서비스에 가입하고 API 키를 받으세요. GeminiFireworks는 모두 무료 등급을 제공하는 반면, OpenAI는 사용량에 따라 요금을 부과합니다.


문서 처리 및 청킹

챗봇에 컨텍스트를 제공하려면 문서를 처리하고 관리 가능한 덩어리로 분할해야 합니다. 삽입 및 색인화를 위해 큰 텍스트를 분할해야 하기 때문에 이는 중요합니다.

1. document_processor.py 생성

문서 처리를 처리하기 위해 document_processor.py라는 새 Python 스크립트를 만듭니다.

langchain==0.0.329
streamlit==1.27.2
faiss-cpu==1.7.4
python-dotenv==1.0.0
tiktoken==0.5.1
openai==0.27.10
gemini==0.3.1
fireworks==0.4.0
sentence_transformers==2.2.2

이 스크립트는 텍스트 파일을 로드하고 청크 간에 컨텍스트가 손실되지 않도록 약간의 겹치는 부분을 포함하여 약 1000자의 작은 청크로 분할합니다. 처리가 완료되면 문서를 삽입하고 색인화할 수 있습니다.


임베딩 및 인덱싱 생성

이제 문서를 청크화했으므로 다음 단계는 이를 임베딩(텍스트의 숫자 표현)으로 변환하고 빠른 검색을 위해 색인을 생성하는 것입니다. (기계는 말보다 숫자를 더 쉽게 이해하기 때문이죠)

1. embedding_indexer.py 생성

embedding_indexer.py라는 또 다른 스크립트를 만듭니다.

pip install -r requirements.txt

이 스크립트에서는 포옹 얼굴 모델(all-MiniLM-L6-v2)을 사용하여 임베딩을 생성합니다. 그런 다음 이러한 임베딩을 FAISS 벡터 저장소에 저장하여 쿼리를 기반으로 유사한 텍스트 청크를 빠르게 검색할 수 있습니다.


검색 및 응답 생성 구현

여기서 흥미로운 부분이 나옵니다. 검색과 언어 생성을 결합하는 것입니다! 이제 벡터 저장소에서 관련 청크를 가져오고 언어 모델을 사용하여 응답을 생성하는 RAG 체인을 만듭니다. (벡터스토어는 숫자로 변환된 데이터를 벡터로 저장한 데이터베이스입니다)

1. rag_chain.py 생성

rag_chain.py 파일을 생성해 보겠습니다:

# Uncomment your API key
# OPENAI_API_KEY=your_openai_api_key_here
# GEMINI_API_KEY=your_gemini_api_key_here
# FIREWORKS_API_KEY=your_fireworks_api_key_here

여기에서는 귀하가 제공한 API 키에 따라 OpenAI, Gemini 또는 Fireworks 중에서 선택할 수 있습니다. RAG 체인은 가장 관련성이 높은 상위 3개 문서를 검색하고 언어 모델을 사용하여 응답을 생성합니다.

예산이나 사용 환경에 따라 모델을 전환할 수 있습니다. GeminiFireworks는 무료이고, OpenAI는 사용량에 따라 요금이 부과됩니다.


챗봇 인터페이스 구축

이제 RAG 체인을 사용하여 사용자 입력을 받고 응답을 생성하는 간단한 챗봇 인터페이스를 구축하겠습니다.

1. chatbot.py 만들기

chatbot.py라는 새 파일을 만듭니다.

mkdir rag-chatbot
cd rag-chatbot
python -m venv venv
source venv/bin/activate

이 스크립트는 사용자 입력을 지속적으로 수신하고 이를 RAG 체인을 통해 처리한 후 생성된 응답을 반환하는 명령줄 챗봇 인터페이스를 생성합니다.


Streamlit UI 만들기

이제 Streamlit을 사용하여 웹 인터페이스를 구축하여 챗봇을 더욱 사용자 친화적으로 만들 차례입니다. 이를 통해 사용자는 브라우저를 통해 챗봇과 상호 작용할 수 있습니다.

1. app.py 생성

app.py 만들기:

langchain==0.0.329
streamlit==1.27.2
faiss-cpu==1.7.4
python-dotenv==1.0.0
tiktoken==0.5.1
openai==0.27.10
gemini==0.3.1
fireworks==0.4.0
sentence_transformers==2.2.2

2. Streamlit 앱 실행

Streamlit 앱을 실행하려면 다음을 사용하세요.

pip install -r requirements.txt

텍스트 파일을 업로드하고, 질문하고, 챗봇으로부터 답변을 받을 수 있는 웹 인터페이스가 실행됩니다.


성능 최적화

더 나은 성능을 위해 텍스트를 분할할 때 청크 크기와 겹침을 실험해 볼 수 있습니다. 청크가 클수록 더 많은 컨텍스트를 제공하지만 청크가 작을수록 검색 속도가 빨라질 수 있습니다. 스트림라이트 캐싱을 사용하면 임베딩 생성과 같은 비용이 많이 드는 작업을 반복하지 않아도 됩니다.

비용을 최적화하려면 쿼리 복잡성에 따라 OpenAI, Gemini 또는 Fireworks 간에 전환할 수 있습니다. OpenAI 복잡한 질문에는 Gemini 또는 불꽃놀이를 사용하여 비용을 절감하세요.


마무리

축하합니다! 자신만의 RAG 기반 챗봇을 성공적으로 만들었습니다. 이제 가능성은 무궁무진합니다.

    나만의 맞춤형 스터디 파트너를 만들어보세요.
  • 더 이상 긴 문서를 작성할 필요가 없습니다. "RAG it out"만 하면 빠르고 정확한 답변을 얻을 수 있습니다!
여기서 여행이 시작되며 잠재력은 무한합니다!


GitHub에서 내 작업을 팔로우할 수 있습니다. 언제든지 연락주세요. 제 DM은 X와 LinkedIn에서 항상 열려있습니다.

위 내용은 나만의 AI RAG 챗봇 만들기: LangChain을 사용한 Python 가이드의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.