附註:
- 此教學課程需要存取 Oracle Cloud。若要註冊免費帳戶,請參閱 Oracle Cloud Infrastructure Free Tier 入門。
- 它使用 Oracle Cloud Infrastructure 證明資料、租用戶及區間的範例值。完成實驗室時,請將這些值取代為您雲端環境特定的值。
使用 Oracle Cloud Infrastructure Search 搭配 OpenSearch 建立以 RAG 為基礎的聊天機器人
簡介
在本教學課程中,我們將指導您使用 OCI OpenSearch 作為向量資料庫和 OCI Generative AI 服務模型 (例如 Cohere 和 Llama),建立檢索增強生成 (RAG) 型聊天機器人。在本教程結束後,您將建立一個聊天機器人解決方案,能夠處理文件,將其儲存為向量嵌入 OpenSearch,並在對話期間擷取相關資訊。
此外,我們將使用 Streamlit 建立直觀的使用者介面,讓您上傳文件、與聊天機器人互動,並輕鬆存取相關資訊。本教學課程涵蓋從設定環境到使用自己的 PDF 檔案測試聊天機器人的所有內容。
目標
-
在 OCI 上設定 OpenSearch 叢集以儲存文件內嵌。
-
設定您的開發環境與所需的相依性。
-
設定 OCI 認證以進行無縫整合。
-
撰寫並設定聊天機器人引擎程式碼。
-
使用 Streamlit 建立互動式 UI 以上傳文件和查詢聊天機器人。
-
上傳文件 (PDF) 並與聊天機器人互動以進行查詢。
必要條件
-
具備建立 OpenSearch 叢集所需權限的 OCI 帳戶。
-
已安裝 Python 的虛擬機器 (VM)。
-
熟悉向量資料庫和大型語言模型。
-
對應用程式設計介面 (API) 和聊天機器人引擎開發的基本瞭解。
工作 1:使用 OpenSearch 設定 OpenSearch 叢集
-
建立叢集。如需詳細資訊,請參閱使用 OpenSearch 搭配 OCI Search 建立 OpenSearch 叢集
-
建立叢集之後,請複製 API 端點以及使用者證明資料,以便在應用程式中加以設定。
工作 2:設定 Python 環境
-
啟動 OCI 中具有 Oracle Linux 映像檔和基本資源配置的執行處理。如需詳細資訊,請參閱啟動 Linux 執行處理。
-
在 Oracle Linux 上安裝 Python 3。11。如需詳細資訊,請參閱安裝 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 保存庫中,以增強安全性。接著,您可以在程式實際執行時動態擷取這些加密密碼。如需安全地管理和擷取加密密碼的詳細資訊,請參閱使用保存庫保護您的資料安全。
工作 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,例如支援多個文件上傳、查詢歷史記錄,或長期處理的即時意見回饋。
相關連結
致謝
- 作者 - Pavan Upadhyay (Principal Cloud Engineer)、Saket Bihari (Principal Cloud Engineer)
其他學習資源
探索 docs.oracle.com/learn 上的其他實驗室,或存取 Oracle Learning YouTube 頻道上的更多免費學習內容。此外,請造訪 education.oracle.com/learning-explorer 以成為 Oracle Learning Explorer。
如需產品文件,請造訪 Oracle Help Center 。
Create RAG based Chatbot using Oracle Cloud Infrastructure Search with OpenSearch
G20432-01
November 2024