주:

OpenSearch에서 Oracle Cloud Infrastructure Search를 사용하여 RAG 기반 챗봇 생성

소개

이 사용지침서에서는 OCI OpenSearch를 벡터 데이터베이스로, OCI Generative AI 서비스 모델(예: Cohere 및 Llama)을 사용하여 검색 증강 생성(RAG) 기반 챗봇을 생성하는 프로세스를 안내합니다. 이 자습서가 끝나면 문서를 처리하고 OpenSearch에 벡터 임베딩으로 저장하며 대화 중에 관련 정보를 검색할 수 있는 챗봇 솔루션을 구축하게 됩니다.

또한 Streamlit을 사용하여 직관적인 사용자 인터페이스를 생성하여 문서를 업로드하고 챗봇과 상호 작용하며 관련 정보에 손쉽게 접근할 수 있습니다. 이 자습서에서는 사용자 환경 설정부터 사용자 고유의 PDF 파일로 챗봇 테스트에 이르기까지 모든 것을 다룹니다.

목표

필요 조건

작업 1: OpenSearch를 사용하여 OCI로 OpenSearch 클러스터 설정

  1. 클러스터 생성. 자세한 내용은 OpenSearch를 사용하여 OCI Search로 OpenSearch 클러스터 생성을 참조하십시오.

  2. 클러스터가 생성되면 API 엔드포인트를 사용자 자격 증명과 함께 복사하여 앱에서 구성합니다.

    OpenSearch 클러스터 API EndPoint

    OpenSearch 클러스터 사용자 및 비밀번호

작업 2: Python 환경 구성

  1. OCI에서 Oracle Linux 이미지 및 기본 구성으로 인스턴스를 실행합니다. 자세한 내용은 Launching a Linux Instance을 참조하십시오.

  2. Oracle Linux에 Python 3.11을 설치합니다. 자세한 내용은 Installing Python를 참조하십시오.

  3. 다음 명령을 실행하여 Python 버전을 업데이트합니다.

    sudo update-alternatives  --set python /usr/bin/python3.11
    
  4. opensearch_rag_chatbot라는 프로젝트 폴더를 생성합니다.

  5. requirements.txt라는 파일을 만들어 만든 폴더로 이동하고 종속성을 설치합니다.

    python -m venv venv
    source ./venv/bin/activate
    pip install -r requirements.txt
    
  6. 다음 명령을 실행하여 Streamlit 설치를 테스트합니다.

    streamlit hello
    
  7. 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 인증 설정

  1. 홈 디렉토리에 .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: 챗봇 엔진 코드 작성

작업 5: 문서 업로드 및 챗봇 테스트

  1. 다음 명령을 실행하여 응용 프로그램을 실행합니다.

    cd opensearch_rag_chatbot
    python -m venv venv
    source ./venv/bin/activate
    streamlit run app.py
    
  2. 생성된 URL을 복사하여 Streamlit 앱에 액세스합니다. PDF 업로드를 시작하고 챗봇의 기능을 테스트합니다.

    업로드 및 테스트

문제 해결 및 팁

주: Streamlit 콘솔 출력에서는 작업 및 오류에 대한 자세한 정보를 제공하는 로그를 사용할 수 있습니다.

다음 단계

다음 단계에서는 Word 또는 HTML 파일과 같은 더 많은 문서 형식에 대한 지원을 추가하여 챗봇을 확장하고, 다양한 임베딩 모델을 실험하여 특정 도메인에서 챗봇의 응답 정확도를 높이는 것을 고려해 보십시오. 또한 여러 문서 업로드, 쿼리 기록 또는 장기 프로세스에 대한 실시간 피드백 지원과 같은 추가 기능을 통해 Streamlit UI를 향상시킬 수 있습니다.

감사의 글

추가 학습 자원

docs.oracle.com/learn에서 다른 실습을 탐색하거나 Oracle Learning YouTube 채널에서 더 많은 무료 학습 콘텐츠에 액세스하세요. 또한 Oracle Learning Explorer가 되려면 education.oracle.com/learning-explorer을 방문하십시오.

제품 설명서는 Oracle Help Center를 참조하십시오.