容器化 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 等應用程式的內容:

  1. Dockerfile:一個包含構建應用程式 Docker 映象的指令的 Dockerfile。它指定了基礎映象、依賴項、配置檔案以及執行應用程式的命令。

  2. 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 模型配合使用。