주:
- 이 자습서에서는 Oracle Cloud에 액세스해야 합니다. 무료 계정에 등록하려면 Oracle Cloud Infrastructure Free Tier 시작하기를 참조하십시오.
- Oracle Cloud Infrastructure 자격 증명, 테넌시 및 구획에 예제 값을 사용합니다. 실습을 완료했으면 이러한 값을 자신의 클라우드 환경과 관련된 값으로 대체하십시오.
OpenSearch에서 Oracle Cloud Infrastructure Search를 사용하여 RAG 기반 챗봇 생성
소개
이 사용지침서에서는 OCI OpenSearch를 벡터 데이터베이스로, OCI Generative AI 서비스 모델(예: Cohere 및 Llama)을 사용하여 검색 증강 생성(RAG) 기반 챗봇을 생성하는 프로세스를 안내합니다. 이 자습서가 끝나면 문서를 처리하고 OpenSearch에 벡터 임베딩으로 저장하며 대화 중에 관련 정보를 검색할 수 있는 챗봇 솔루션을 구축하게 됩니다.
또한 Streamlit을 사용하여 직관적인 사용자 인터페이스를 생성하여 문서를 업로드하고 챗봇과 상호 작용하며 관련 정보에 손쉽게 접근할 수 있습니다. 이 자습서에서는 사용자 환경 설정부터 사용자 고유의 PDF 파일로 챗봇 테스트에 이르기까지 모든 것을 다룹니다.
목표
-
문서 포함을 저장하기 위해 OCI에서 OpenSearch 클러스터를 설정합니다.
-
Conda 및 필수 종속성으로 개발 환경을 구성합니다.
-
원활한 통합을 위해 OCI 인증을 설정합니다.
-
챗봇 엔진 코드를 작성하고 구성합니다.
-
Streamlit을 사용하여 문서를 업로드하고 챗봇을 쿼리하는 대화형 UI를 구축합니다.
-
문서(PDF)를 업로드하고 챗봇과 상호 작용하여 문서를 쿼리합니다.
필요 조건
-
OpenSearch 클러스터를 생성하는 데 필요한 권한이 있는 OCI 계정입니다.
-
Python이 설치된 VM(가상 머신)입니다.
-
벡터 데이터베이스 및 대규모 언어 모델에 대한 기본적인 이해
-
API(Application Programming Interface) 및 챗봇 엔진 개발에 대한 기본적인 이해
-
OpenSearch IAM 정책으로 검색 및 OCI 생성형 AI 정책을 생성합니다.
작업 1: OpenSearch를 사용하여 OCI로 OpenSearch 클러스터 설정
-
클러스터 생성. 자세한 내용은 OpenSearch를 사용하여 OCI Search로 OpenSearch 클러스터 생성을 참조하십시오.
-
클러스터가 생성되면 API 엔드포인트를 사용자 자격 증명과 함께 복사하여 앱에서 구성합니다.
작업 2: Python 환경 구성
-
OCI에서 Oracle Linux 이미지 및 기본 구성으로 인스턴스를 실행합니다. 자세한 내용은 Launching a Linux Instance을 참조하십시오.
-
Oracle Linux에 Python 3.11을 설치합니다. 자세한 내용은 Installing Python를 참조하십시오.
-
다음 명령을 실행하여 Python 버전을 업데이트합니다.
sudo update-alternatives --set python /usr/bin/python3.11
-
opensearch_rag_chatbot
라는 프로젝트 폴더를 생성합니다. -
requirements.txt
라는 파일을 만들어 만든 폴더로 이동하고 종속성을 설치합니다.python -m venv venv source ./venv/bin/activate pip install -r requirements.txt
-
다음 명령을 실행하여 Streamlit 설치를 테스트합니다.
streamlit hello
-
Streamlit 및 OpenSearch 포트(
8501
/9200
)가 방화벽에서 열려 있지 않은 경우 다음 명령을 사용하여 추가합니다.sudo firewall-cmd --list-all sudo firewall-cmd --permanent --add-port=8501/tcp sudo firewall-cmd --permanent --add-port=9200/tcp sudo firewall-cmd --reload
작업 3: OCI 인증 설정
-
홈 디렉토리에
.oci
폴더를 생성하고config
파일을 설정합니다.[DEFAULT] user=ocid1.user.oc1.. fingerprint=40:02:56: key_file=/path/to/oci_api_key.pem tenancy=ocid1.tenancy.oc1.. region=us-region-1
주: 자세한 내용은 Oracle Date a Science에 대한 구성 파일 생성을 참조하십시오.
작업 4: 챗봇 엔진 코드 작성
-
코드베이스에 대해 이 프로젝트 구조를 따릅니다.
opensearch_rag_chatbot/ ├── app.py # Main Streamlit app ├── chat_engine.py # Logic for RAG and GenAI integration ├── config.py # Config file for secrets and settings ├── ingest_data_opens.py # Script for processing and indexing PDFs in OpenSearch ├── oci_utils.py # Utility for OCI configurations
-
다음 예제 코드 파일을 작업 예제로 다운로드합니다.
주: 이러한 샘플 프로그램은 특정 사용 사례 및 추가 오류 처리를 위해 사용자 정의가 필요할 수 있습니다. 또한 샘플에서 사용자 주체는 OpenSearch 클러스터와의 연결을 설정하는 데 사용됩니다. 그러나 보안 강화를 위해 암호 및 자격 증명과 같은 중요한 정보를 OCI Vault에 저장하는 것이 좋습니다. 그런 다음 런타임 시 이러한 암호를 동적으로 인출할 수 있습니다. 암호의 안전한 관리 및 검색에 대한 자세한 내용은 Keep Your Data Secure Using the Vault를 참조하십시오.
작업 5: 문서 업로드 및 챗봇 테스트
-
다음 명령을 실행하여 응용 프로그램을 실행합니다.
cd opensearch_rag_chatbot python -m venv venv source ./venv/bin/activate streamlit run app.py
-
생성된 URL을 복사하여 Streamlit 앱에 액세스합니다. PDF 업로드를 시작하고 챗봇의 기능을 테스트합니다.
문제 해결 및 팁
-
접속 오류: OpenSearch 클러스터 URL 및 인증서를 확인합니다.
-
인덱스 문제:
config.py
의 OpenSearch 구성이 올바른지 확인합니다. -
PDF 처리 오류: PDF 형식 호환성을 확인합니다.
-
구성 검사:
config.py
파일이 정확한지 다시 확인합니다.
주: Streamlit 콘솔 출력에서는 작업 및 오류에 대한 자세한 정보를 제공하는 로그를 사용할 수 있습니다.
다음 단계
다음 단계에서는 Word 또는 HTML 파일과 같은 더 많은 문서 형식에 대한 지원을 추가하여 챗봇을 확장하고, 다양한 임베딩 모델을 실험하여 특정 도메인에서 챗봇의 응답 정확도를 높이는 것을 고려해 보십시오. 또한 여러 문서 업로드, 쿼리 기록 또는 장기 프로세스에 대한 실시간 피드백 지원과 같은 추가 기능을 통해 Streamlit UI를 향상시킬 수 있습니다.
관련 링크
감사의 글
- Authors - Pavan Upadhyay(Principal Cloud Engineer), Saket Bihari(Principal Cloud Engineer)
추가 학습 자원
docs.oracle.com/learn에서 다른 실습을 탐색하거나 Oracle Learning YouTube 채널에서 더 많은 무료 학습 콘텐츠에 액세스하세요. 또한 Oracle Learning Explorer가 되려면 education.oracle.com/learning-explorer을 방문하십시오.
제품 설명서는 Oracle Help Center를 참조하십시오.
Create RAG based Chatbot using Oracle Cloud Infrastructure Search with OpenSearch
G20429-01
November 2024