容器化 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 模型配合使用。