注意:
- 本教程需要访问 Oracle Cloud。要注册免费账户,请参阅开始使用 Oracle Cloud Infrastructure 免费套餐。
- 它对 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) 和聊天机器人引擎开发有基本了解。
任务 1:使用 OCI 使用 OpenSearch 设置 OpenSearch 集群
-
创建集群。有关详细信息,请参阅使用 OCI Search 使用 OpenSearch 创建 OpenSearch 集群
-
创建集群后,复制 API 端点以及用户身份证明以在应用程序中配置它们。
任务 2:配置 Python 环境
-
在 OCI 中启动具有 Oracle Linux 映像和基本配置的实例。有关更多信息,请参见 Launching a Linux Instance 。
-
在 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 Vault 中,以增强安全性。然后,您可以在运行时动态提取这些密钥。有关安全管理和检索机密的详细信息,请参阅使用 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(首席云工程师)、Saket Bihari(首席云工程师)
更多学习资源
浏览 docs.oracle.com/learn 上的其他实验室,或者访问 Oracle Learning YouTube 渠道上的更多免费学习内容。此外,请访问 education.oracle.com/learning-explorer 成为 Oracle Learning Explorer。
有关产品文档,请访问 Oracle 帮助中心。
Create RAG based Chatbot using Oracle Cloud Infrastructure Search with OpenSearch
G20431-01
November 2024