容器化 RAG 应用程序
概述
本节将引导您使用 Docker 容器化 RAG 应用程序。
注意您可以在 GenAI Stack 演示应用程序中查看更多容器化 GenAI 应用程序的示例。
获取示例应用程序
本指南中使用的示例应用程序是 RAG 应用程序的一个例子,由三个主要组件组成,它们是每个 RAG 应用程序的构建块。一个大型语言模型(LLM)托管在某处,在本例中它托管在一个容器中并通过 Ollama 提供服务。一个向量数据库 Qdrant,用于存储本地数据的嵌入,以及一个网络应用程序,使用 Streamlit 为用户提供最佳用户体验。
克隆示例应用程序。打开终端,切换到您要工作的目录,然后运行以下命令克隆存储库:
$ 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 |
打开浏览器,在 https://: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 模型配合使用。