문서에서 즉각적인 답변을 원하지 않는 사람이 어디 있겠습니까? 이것이 바로 RAG 챗봇이 하는 일입니다. 빠르고 정확한 응답을 위해 검색과 AI 생성을 결합합니다!
이 가이드에서는 LangChain 및 Streamlit과 함께 RAG(Retrieval-Augmented Generation)를 사용하여 챗봇을 만드는 방법을 보여 드리겠습니다. 이 챗봇은 지식 기반에서 관련 정보를 가져오고 언어 모델을 사용하여 응답을 생성합니다.
OpenAI, Gemini, Fireworks 중 무엇을 사용하든 응답 생성을 위한 다양한 옵션을 제공하면서 각 단계를 안내해 드립니다. 비용 효율적인 솔루션입니다.
검색 증강 생성(RAG)이란 무엇입니까?
RAG는 검색과 세대를 결합하여 보다 정확하고 상황에 맞는 챗봇 응답을 제공하는 방법입니다. 검색 프로세스는 지식 기반에서 관련 문서를 가져오는 반면, 생성 프로세스는 언어 모델을 사용하여 검색된 콘텐츠를 기반으로 일관된 응답을 생성합니다. 이를 통해 언어 모델 자체가 해당 정보에 대해 특별히 교육받지 않은 경우에도 챗봇이 최신 데이터를 사용하여 질문에 답할 수 있습니다.
귀하의 질문에 대한 답을 항상 알지 못하는 개인 비서가 있다고 상상해 보십시오. 그래서 질문을 하면 책을 뒤져 관련 정보를 찾아보고(검색), 그 정보를 요약해서 자신의 말로 다시 알려준다(세대). 이것이 본질적으로 두 가지 장점을 결합한 RAG의 작동 방식입니다.
순서도에서 RAG 프로세스는 다음과 같습니다.
이제 시작해 보세요. 나만의 챗봇을 만들어보세요!
프로젝트 환경 설정
이 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 키를 받으세요. Gemini와 Fireworks는 모두 무료 등급을 제공하는 반면, 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개 문서를 검색하고 언어 모델을 사용하여 응답을 생성합니다.
예산이나 사용 환경에 따라 모델을 전환할 수 있습니다. Gemini와 Fireworks는 무료이고, 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

Python은 엄격하게 라인 별 실행이 아니지만 통역사 메커니즘을 기반으로 최적화되고 조건부 실행입니다. 통역사는 코드를 PVM에 의해 실행 된 바이트 코드로 변환하며 상수 표현식을 사전 컴파일하거나 루프를 최적화 할 수 있습니다. 이러한 메커니즘을 이해하면 코드를 최적화하고 효율성을 향상시키는 데 도움이됩니다.

Python에는 두 개의 목록을 연결하는 방법이 많이 있습니다. 1. 연산자 사용 간단하지만 큰 목록에서는 비효율적입니다. 2. 효율적이지만 원래 목록을 수정하는 확장 방법을 사용하십시오. 3. 효율적이고 읽기 쉬운 = 연산자를 사용하십시오. 4. 메모리 효율적이지만 추가 가져 오기가 필요한 itertools.chain function을 사용하십시오. 5. 우아하지만 너무 복잡 할 수있는 목록 구문 분석을 사용하십시오. 선택 방법은 코드 컨텍스트 및 요구 사항을 기반으로해야합니다.

Python 목록을 병합하는 방법에는 여러 가지가 있습니다. 1. 단순하지만 큰 목록에 대한 메모리 효율적이지 않은 연산자 사용; 2. 효율적이지만 원래 목록을 수정하는 확장 방법을 사용하십시오. 3. 큰 데이터 세트에 적합한 itertools.chain을 사용하십시오. 4. 사용 * 운영자, 한 줄의 코드로 중소형 목록을 병합하십시오. 5. Numpy.concatenate를 사용하십시오. 이는 고성능 요구 사항이있는 대규모 데이터 세트 및 시나리오에 적합합니다. 6. 작은 목록에 적합하지만 비효율적 인 Append Method를 사용하십시오. 메소드를 선택할 때는 목록 크기 및 응용 프로그램 시나리오를 고려해야합니다.

CompiledLanguagesOfferSpeedSecurity, while InterpretedLanguagesProvideeaseofusEandportability

Python에서, for 루프는 반복 가능한 물체를 가로 지르는 데 사용되며, 조건이 충족 될 때 반복적으로 작업을 수행하는 데 사용됩니다. 1) 루프 예제 : 목록을 가로 지르고 요소를 인쇄하십시오. 2) 루프 예제 : 올바르게 추측 할 때까지 숫자 게임을 추측하십시오. 마스터 링 사이클 원리 및 최적화 기술은 코드 효율성과 안정성을 향상시킬 수 있습니다.

목록을 문자열로 연결하려면 Python의 join () 메소드를 사용하는 것이 최선의 선택입니다. 1) join () 메소드를 사용하여 목록 요소를 ''.join (my_list)과 같은 문자열로 연결하십시오. 2) 숫자가 포함 된 목록의 경우 연결하기 전에 맵 (str, 숫자)을 문자열로 변환하십시오. 3) ','. join (f '({fruit})'forfruitinfruits와 같은 복잡한 형식에 발전기 표현식을 사용할 수 있습니다. 4) 혼합 데이터 유형을 처리 할 때 MAP (str, mixed_list)를 사용하여 모든 요소를 문자열로 변환 할 수 있도록하십시오. 5) 큰 목록의 경우 ''.join (large_li

PythonuseSahybrideactroach, combingingcompytobytecodeandingretation.1) codeiscompiledToplatform-IndependentBecode.2) bytecodeistredbythepythonvirtonmachine, enterancingefficiency andportability.


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

PhpStorm 맥 버전
최신(2018.2.1) 전문 PHP 통합 개발 도구

SublimeText3 영어 버전
권장 사항: Win 버전, 코드 프롬프트 지원!

mPDF
mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

MinGW - Windows용 미니멀리스트 GNU
이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

드림위버 CS6
시각적 웹 개발 도구