RAG 机器人#
这是一个示例聊天机器人,展示了 RAG(检索增强生成)。此机器人与 RAG 链服务器的 /generate
端点交互,使用插件服务器根据摄取的文档回答问题。
RAG 机器人展示了以下 ACE Agent 功能
集成来自 NVIDIA 的 Generative AI Examples 的 RAG 示例
使用 ASR 2 次传递语句结束 (EOU) 实现低延迟
始终开启的 Barge-In 支持
处理插件中的对话历史记录
流式传输来自插件服务器的 JSON 响应
支持使用 事件架构 进行部署
查看教程 构建低延迟语音 RAG 机器人 以深入了解机器人实现。
RAG 示例机器人在 快速入门目录 的 ./samples/rag_bot/
中。
RAG 链服务器部署
此示例机器人需要部署来自 NVIDIA 的 Generative AI Examples 的 RAG 示例之一作为先决条件。如果您想使用任何自定义 RAG 解决方案,您需要在 ./samples/rag_bot/plugins/rag.py
中进行更新。您可以利用以下三个选项中的任何一个来试用示例机器人。
使用 NIM 托管的
meta/llama3-8b-instruct
LLM 和嵌入模型端点部署 RAG。获取您的 NVIDIA API 密钥。
转到 NVIDIA API 目录。
选择任何模型。
单击获取 API 密钥。
导出所需的环境变量。
export DOCKER_VOLUME_DIRECTORY=$(pwd) export MODEL_DIRECTORY=$(pwd) export NVIDIA_API_KEY=...
更新
samples/rag_bot/RAG/basic_rag/docker-compose.yaml
以不使用本地 LLM 和嵌入端点。要使用 NIM 托管的模型,请在chain-server
服务环境变量中将APP_LLM_SERVERURL
和APP_EMBEDDINGS_SERVERURL
设置为空字符串。APP_LLM_SERVERURL: "" APP_EMBEDDINGS_SERVERURL: ""
部署
rag-application
和vector-db
容器。docker compose -f samples/rag_bot/RAG/basic_rag/docker-compose.yaml up -d --build
使用本地托管的
meta/llama3-8b-instruct
LLM 和嵌入模型端点部署 RAG。本地部署 LLM 和嵌入模型将需要单独的 A100 或 H100 GPU 设备。
导出所需的环境变量。
export DOCKER_VOLUME_DIRECTORY=$(pwd) export MODEL_DIRECTORY=$(pwd)export NGC_CLI_API_KEY=...
更新
samples/rag_bot/RAG/basic_rag/docker-compose.yaml
以不使用本地 LLM 和嵌入端点。在chain-server
服务环境变量中,分别将APP_LLM_SERVERURL
和APP_EMBEDDINGS_SERVERURL
设置为nemollm-inference:8000
和nemollm-embedding:8000
。APP_LLM_SERVERURL: "nemollm-inference:8000" APP_EMBEDDINGS_SERVERURL: "nemollm-embedding:8000"
部署
rag-application
和vector-db
容器以及 NIM LLM 和嵌入微服务。docker compose -f samples/rag_bot/RAG/basic_rag/docker-compose.yaml --profile local-nim --profile milvus up -d
使用 NIM 托管的小型语言模型
nvidia/nemotron-mini-4b-instruct
和嵌入模型端点部署 RAG。获取您的 NVIDIA API 密钥。
转到 NVIDIA API 目录。
选择任何模型。
单击获取 API 密钥。
导出所需的环境变量。
export DOCKER_VOLUME_DIRECTORY=$(pwd) export NVIDIA_API_KEY=...
部署
rag-application
和vector-db
容器。docker compose -f samples/rag_bot/RAG/slm_rag/docker-compose.yaml up -d --build
有关部署步骤的更多信息,请参阅 GenerativeAIExamples。
通过访问 http://<your-ip>:3001/kb
,根据您的用例按需摄取文档。
如果您遇到任何问题或错误,请参阅 故障排除 部分。
基于 Docker 的机器人部署
为 Docker Compose 命令准备环境。
export BOT_PATH=./samples/rag_bot/ source deploy/docker/docker_init.sh
部署语音模型。
docker compose -f deploy/docker/docker-compose.yml up model-utils-speech
如果您已在不同的机器上部署 RAG 链服务器,请更新
./samples/rag_bot/plugin_config.yaml
中的RAG_SERVER_URL
。部署 ACE Agent 微服务。部署聊天控制器、聊天引擎、插件服务器和 WebUI 微服务。
docker compose -f deploy/docker/docker-compose.yml up speech-event-bot -d
等待几分钟,直到所有服务准备就绪。您可以检查各个微服务的 Docker 日志以确认。您将在聊天控制器容器的 Docker 日志中看到日志打印
Server listening on 0.0.0.0:50055
。使用 URL
http://<工作站 IP>:7006/
与机器人交互。为了访问浏览器上的麦克风,我们需要通过添加 SSL 验证将
http
转换为https
端点,或者更新您的chrome://flags/
或edge://flags/
以允许http://<工作站 IP>:7006
作为安全端点。
注意
我们将向 RAG 服务器发送早期触发器,如果用户在单词之间暂停超过 240 毫秒,则可能需要重新触发。平均而言,您可能需要为每个用户查询执行 2 个额外的 RAG 调用,这将在规模部署时需要额外的计算/成本。