容器化 RAG 应用
概述
本节将引导您使用 Docker 容器化 RAG 应用。
注意
您可以在 GenAI Stack 演示应用中看到更多容器化 GenAI 应用示例。
获取示例应用
本指南中使用的示例应用是 RAG 应用的一个示例,它由三个主要组件组成,它们是每个 RAG 应用的构建块。一个大型语言模型托管在某个地方,在本例中,它托管在容器中并通过 Ollama 提供服务。一个向量数据库,Qdrant,用于存储本地数据的嵌入,以及一个使用 Streamlit 的 Web 应用,为用户提供最佳用户体验。
克隆示例应用。打开终端,更改到您要工作的目录,然后运行以下命令克隆存储库:
$ git clone https://github.com/mfranzon/winy.git
现在您的 `winy` 目录中应该有以下文件。
├── winy/
│ ├── .gitignore
│ ├── app/
│ │ ├── main.py
│ │ ├── Dockerfile
| | └── requirements.txt
│ ├── tools/
│ │ ├── create_db.py
│ │ ├── create_embeddings.py
│ │ ├── requirements.txt
│ │ ├── test.py
| | └── download_model.sh
│ ├── docker-compose.yaml
│ ├── wine_database.db
│ ├── LICENSE
│ └── README.md
容器化您的应用:要点
容器化应用程序包括将其与依赖项一起打包到容器中,这确保了不同环境之间的一致性。以下是容器化像 Winy 这样的应用程序所需的内容:
Dockerfile:包含有关如何为您的应用程序构建 Docker 镜像的说明的 Dockerfile。它指定了基础镜像、依赖项、配置文件以及运行应用程序的命令。
Docker Compose 文件:Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。Compose 文件允许您在一个文件中配置应用程序的服务、网络和卷。
运行应用
在 `winy` 目录中,在终端中运行以下命令。
$ docker compose up --build
Docker 构建并运行您的应用程序。根据您的网络连接,下载所有依赖项可能需要几分钟。当应用程序运行时,您将在终端中看到如下所示的消息。
server-1 | You can now view your Streamlit app in your browser.
server-1 |
server-1 | URL: http://0.0.0.0:8501
server-1 |
打开浏览器,在 http://localhost:8501 查看应用程序。您应该会看到一个简单的 Streamlit 应用程序。
该应用程序需要 Qdrant 数据库服务和 LLM 服务才能正常工作。如果您有权访问在 Docker 外部运行的服务,请在 `docker-compose.yaml` 中指定连接信息。
winy:
build:
context: ./app
dockerfile: Dockerfile
environment:
- QDRANT_CLIENT=http://qdrant:6333 # Specifies the url for the qdrant database
- OLLAMA=http://ollama:11434 # Specifies the url for the ollama service
container_name: winy
ports:
- "8501:8501"
depends_on:
- qdrant
- ollama
如果您没有运行这些服务,请继续阅读本指南,了解如何使用 Docker 运行部分或全部这些服务。请记住,`ollama` 服务是空的;它没有任何模型。因此,您需要在开始使用 RAG 应用程序之前提取一个模型。所有说明都在下一页。
在终端中,按 `ctrl`+`c` 停止应用程序。
总结
在本节中,您学习了如何使用 Docker 容器化和运行您的 RAG 应用程序。
后续步骤
在下一节中,您将学习如何使用 Docker 完全在本地环境下,使用您首选的 LLM 模型正确配置应用程序。