正在加载…
未找到任何结果。

在 Google Cloud 控制台中运用您的技能

在 Google Cloud 打造生成式 AI 應用程式

访问 700 多个实验和课程

運用 AlloyDB 和 Vertex AI 建構 LLM 和 RAG 型對話應用程式

实验 1 小时 30 分钟 universal_currency_alt 5 积分 show_chart 中级
info 此实验可能会提供 AI 工具来支持您学习。
访问 700 多个实验和课程

總覽

檢索增強生成 (RAG) 是提升大型語言模型 (LLM) 回覆品質的最佳工具之一。RAG 是一種模式,會擷取非公開資料,並將資料加到要傳送至 LLM 的提示中。如此一來,LLM 就能根據提示中包含的資料,生成更準確的回覆。

AlloyDB 是與 PostgreSQL 相容的 Google Cloud 資料庫,具備擴充性且效能卓越。您將使用此資料庫儲存及搜尋「向量嵌入」這種特殊向量資料。使用者可利用語意搜尋擷取向量嵌入,在進行自然語言查詢時,找出最符合查詢的可用資料。接著,擷取的資料會加到提示中,一併傳給 LLM。

您也將使用 Google Cloud 的全代管統合式 AI 開發平台 Vertex AI,建構及使用生成式 AI。您的應用程式會採用多模態基礎模型 Gemini Pro,使用者將能在文字或對話提示中加入圖片、音訊、影片和 PDF 檔案。這款模型也能理解長脈絡資料。

學習目標

在本實驗室中,您將學習下列內容:

  • RAG 如何從知識庫中擷取相關資訊,增強 LLM 的功能。
  • 如何透過 AlloyDB 進行語意搜尋,找出相關資訊。
  • 如何使用 Vertex AI 和 Google 的基礎模型,為應用程式提供強大的生成式 AI 功能。

設定和需求

點選「Start Lab」按鈕前的須知事項

注意:請詳閱以下操作說明。

實驗室活動會計時,且中途無法暫停。點選「Start Lab」後就會開始計時,顯示可使用 Google Cloud 資源的時間。

您會在實際雲端環境中完成 Qwiklabs 實作實驗室活動,而非模擬或示範環境。為此,我們會提供新的暫時憑證,供您在實驗室活動期間登入及存取 Google Cloud。

需求條件

為了順利完成這個實驗室,請先確認:

  • 可以使用標準的網際網路瀏覽器 (Chrome 瀏覽器為佳)。
  • 已預留充足時間可完成研究室。
注意:如果您擁有個人 Google Cloud 或專案,請勿用於本實驗室。 注意:如果您使用的是 Pixelbook,請在無痕視窗執行本實驗室。

如何開始研究室及登入控制台

  1. 按一下「Start Lab」按鈕。如果研究室會產生費用,畫面中會出現選擇付款方式的彈出式視窗。左側面板會顯示必須在這個研究室中使用的暫時憑證。

  2. 複製使用者名稱,然後點選「Open Google Console」。接著,研究室會啟動相關資源並開啟另一個分頁,當中顯示「Choose an account」頁面。

    注意事項:請在不同視窗並排開啟分頁。
  3. 點選「Choose an account」頁面中的「使用其他帳戶」,「Sign in」頁面隨即開啟。

  4. 貼上您在「連線詳細資訊」面板中複製的使用者名稱,然後複製並貼上密碼。

注意事項:請務必使用「連線詳細資訊」面板中的憑證,而非 Google Cloud Skills Boost 的憑證。另外,請勿在這個研究室中使用您自己的 Google Cloud 帳戶,以免產生費用。
  1. 按過後續的所有頁面:
  • 接受條款及細則。
  • 由於這是臨時帳戶,請勿新增救援選項或雙重驗證機制。
  • 請勿申請免費試用。

Cloud 控制台稍後會在這個分頁中開啟。

注意事項:點選畫面左上方的導覽選單,即可查看 Google Cloud 產品與服務清單。

啟動 Google Cloud Shell

Google Cloud Shell 是搭載多項開發工具的虛擬機器,提供永久的 5 GB 主目錄,而且在 Google Cloud 中運作。

Google Cloud Shell 提供指令列存取權,方便您使用 Google Cloud 資源。

  1. 在 Cloud 控制台的右上方找到工具列,然後按一下「開啟 Cloud Shell」按鈕。

  2. 按一下「繼續」

佈建並連線至環境的作業需要一些時間才能完成。連線建立完成即代表已通過驗證,而且專案已設為您的「PROJECT_ID」。示例如下:

gcloud 是 Google Cloud 的指令列工具,已預先安裝於 Cloud Shell,並支援 Tab 鍵完成功能。

  • 您可以使用下列指令來列出使用中的帳戶:
gcloud auth list

輸出內容:

Credentialed accounts: - @.com (active)

輸出內容示例:

Credentialed accounts: - google1623327_student@qwiklabs.net
  • 您可以使用下列指令來列出專案 ID:
gcloud config list project

輸出內容:

[core] project =

輸出內容示例:

[core] project = qwiklabs-gcp-44776a13dea667a6 注意事項:如需 gcloud 的完整說明,請參閱 gcloud CLI 總覽指南

工作 1:將資料庫環境初始化

在這項工作中,您會安裝 PostgreSQL 用戶端,並連線至 AlloyDB 執行個體。

安裝 PostgreSQL 用戶端

虛擬機器 (VM) 已建立完成,會用來託管應用程式。您也會在這個 VM 建立 PostgreSQL 用戶端。

  1. 請執行下列指令,連線至 VM:

    gcloud compute ssh app-vm --zone={{{project_0.default_zone | ZONE }}}

    如果系統要求您授權,請點按「授權」

  2. 對於透過 gcloud compute ssh 指令提出的每個問題,按下 EnterReturn 鍵使用預設輸入內容。

    稍後便會登入 VM。

  3. 如要安裝 PostgreSQL 用戶端,請在 VM 工作階段執行下列指令:

    sudo apt-get update sudo apt-get install --yes postgresql-client 注意:系統可能已安裝用戶端。

連線至 AlloyDB 執行個體

系統已建立 AlloyDB 執行個體。

  1. 請執行下列指令,建立必要的殼層變數:

    export PGUSER={{{project_0.startup_script.gcp_alloydb_user | PG_USER}}} export PGPASSWORD={{{project_0.startup_script.gcp_alloydb_password | PG_PASSWORD}}} export PROJECT_ID=$(gcloud config get-value project) export REGION={{{project_0.default_region | REGION }}} export ADBCLUSTER={{{project_0.startup_script.gcp_alloydb_cluster_name | CLUSTER}}} export INSTANCE_IP=$(gcloud alloydb instances describe $ADBCLUSTER-pr --cluster=$ADBCLUSTER --region=$REGION --format="value(ipAddress)")
  2. 請執行下列指令,使用 psql 連線至 AlloyDB 執行個體:

    psql "host=$INSTANCE_IP user=$PGUSER sslmode=require"

    psql 會連線至 AlloyDB 資料庫,並顯示 postgres=> 提示。現在您已連線至資料庫。

  3. 請執行下列指令,退出 psql 工作階段:

    exit 注意:請勿關閉 SSH 工作階段。

工作 2:建立向量資料庫

在這項工作中,您會使用 PostgreSQL 用戶端建立 AlloyDB 資料庫,並啟用向量嵌入功能。

建立資料庫

  1. 請在 VM 工作階段執行下列指令,建立新的資料庫:

    export PGPASSWORD={{{project_0.startup_script.gcp_alloydb_password | PG_PASSWORD}}} psql "host=$INSTANCE_IP user=$PGUSER" -c "CREATE DATABASE assistantdemo"

    psql 會回應 CREATE DATABASE

    需以向量嵌入表示實體,資料庫才支援語意搜尋。

  2. 請執行下列指令,為此資料庫啟用向量嵌入功能:

    psql "host=$INSTANCE_IP user=$PGUSER dbname=assistantdemo" -c "CREATE EXTENSION vector"

    psql 會回應 CREATE EXTENSION

點按「Check my progress」,確認目標已達成。

建立 AlloyDB 資料庫並啟用 pgVector 擴充功能。

工作 3:安裝 Python

在這項工作中,您會在 VM 安裝 Python,並使用 Python 填充資料庫。

  1. 請執行下列指令,在 VM 安裝 Python 和 Git:

    sudo apt install -y python3.11-venv git python3 -m venv .venv source ~/.venv/bin/activate pip install --upgrade pip

    安裝完成後,您會留在 Python 虛擬環境中,並看到 (.venv) 提示。

    如果 VM SSH 工作階段逾時或分頁關閉,您可以再次透過 SSH 連線至 VM,然後使用 source ~/.venv/bin/activate 指令,重新啟動 Python 虛擬環境。

  2. 請執行下列指令來要確認 Python 的版本:

    python -V

    回應內容大致如下:

    (.venv) student@app-vm:~$ python -V Python 3.11.2 (.venv) student@app-vm:~$

工作 4:填充範例資料庫

在這項工作中,您會利用範例資料填充 AlloyDB 的向量資料庫。範例對話應用程式會使用這些資料。

範例應用程式和資料儲存在 genai-databases-retrieval-app 這個 GitHub 存放區。

  1. 請在 VM 執行下列指令,複製存放區:

    git clone https://github.com/GoogleCloudPlatform/genai-databases-retrieval-app.git
  2. 請執行下列指令來查看資料模型:

    cd ~/genai-databases-retrieval-app cat retrieval_service/models/models.py

    畫面會顯示 Python 資料模型,範圍涵蓋機場、航班、航廈設施、政策和機票。

  3. 請執行下列指令,查看其中的一些機場資料:

    head -1 data/airport_dataset.csv; grep SFO data/airport_dataset.csv

    機場資料集的資料欄名稱是由 CSV 標頭指定。這些指令會顯示此 CSV 標頭,然後顯示舊金山國際機場 (SFO) 資料列的內容。您能根據國際航空運輸協會 (IATA) 代碼,或是國家/地區、城市和機場名稱,檢索機場模型中的資料。這份資料沒有向量嵌入,您可以使用關鍵字搜尋功能,尋找此資料表中不同的資料列。

  4. 請執行下列指令,查看模型中的一些航班資料:

    head -1 data/flights_dataset.csv; grep -m10 "SFO" data/flights_dataset.csv

    航班資料集的資料欄名稱是由 CSV 標頭指定。這些指令會顯示此 CSV 標頭,然後顯示出發地或抵達地為 SFO 的前 10 列航班資料。您能根據航空公司、航班號碼或出發地/抵達地的機場代碼,檢索航班模型中的資料。

  5. 請執行下列指令,查看模型中的一些設施資料:

    head -2 data/amenity_dataset.csv

    設施資料集的資料欄名稱是由 CSV 標頭指定。這些指令會顯示此 CSV 標頭,然後顯示第一項設施。

    您會發現第一項設施有幾個簡單的值,包括名稱、說明、位置、航廈、類別和營業時間。下一個值是 content,含有名稱、說明和位置。最後一個值是 embedding,是此資料列的向量嵌入。

    嵌入是一個有 768 個數字的陣列,用於執行語意搜尋。Vertex AI 提供的 AI 模型會計算出這些嵌入。使用者提交查詢時,系統會根據查詢建立向量嵌入,並擷取向量嵌入與搜尋嵌入相近的資料。

    政策資料也會以類似方式使用向量嵌入。

    注意:計算嵌入需要一些時間,因此我們直接提供嵌入。您可以檢查 run_generate_embeddings.py 指令碼,瞭解產生嵌入的方式。
  6. 請執行下列指令,建立資料庫設定檔:

    export PGUSER={{{project_0.startup_script.gcp_alloydb_user | PG_USER}}} export PGPASSWORD={{{project_0.startup_script.gcp_alloydb_password | PG_PASSWORD}}} export PROJECT_ID=$(gcloud config get-value project) export REGION={{{project_0.default_region | REGION }}} export ADBCLUSTER={{{project_0.startup_script.gcp_alloydb_cluster_name | CLUSTER}}} export INSTANCE_IP=$(gcloud alloydb instances describe $ADBCLUSTER-pr --cluster=$ADBCLUSTER --region=$REGION --format="value(ipAddress)") cd ~/genai-databases-retrieval-app/retrieval_service cp example-config.yml config.yml sed -i s/127.0.0.1/$INSTANCE_IP/g config.yml sed -i s/my-user/$PGUSER/g config.yml sed -i s/my-password/$PGPASSWORD/g config.yml sed -i s/my_database/assistantdemo/g config.yml cat config.yml

    系統會建立設定檔 config.yml,並更新執行個體 IP 位址、使用者名稱、密碼和資料庫。設定檔應與下方內容類似:

    host: 0.0.0.0 # port: 8080 datastore: # Example for AlloyDB kind: "postgres" host: 10.65.0.2 # port: 5432 database: "assistantdemo" user: "postgres" password: "samplepassword"
  7. 請執行下列指令,使用範例資料集填充資料庫:

    pip install -r requirements.txt python run_database_init.py

    第一個指令會將所有必要套件新增至 Python 虛擬環境,第二個指令則會用資料填充資料庫。

使用範例資料集填充資料庫。

工作 5:為檢索服務建立服務帳戶

在這項工作中,您會為檢索服務建立服務帳戶。

檢索服務負責根據 AI 應用程式的要求,從資料庫中擷取必要資訊。這個服務帳戶代表該 Cloud Run 服務。

建立服務帳戶

在專案執行個體上,SSH 使用者無權為服務帳戶指定所需角色。您會使用新的 Cloud Shell 分頁建立服務帳戶。

  1. 在 Cloud Shell 點按「開啟新分頁」圖示 (+),即可開啟新的 Cloud Shell 分頁。

  2. 請在新分頁執行下列指令,以便建立服務帳戶並授予必要權限:

    export PROJECT_ID=$(gcloud config get-value project) gcloud iam service-accounts create retrieval-identity gcloud projects add-iam-policy-binding $PROJECT_ID \ --member="serviceAccount:retrieval-identity@$PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/aiplatform.user"

    這個服務帳戶已取得 roles/aiplatform.user 角色,可呼叫 Vertex AI。

  3. 請執行下列指令來關閉新分頁:

    exit
為檢索服務建立服務帳戶。

工作 6:將檢索服務部署至 Cloud Run

在這項工作中,您會將檢索服務部署至 Cloud Run。

  1. 請在 VM SSH 的 Cloud Shell 分頁執行下列指令,部署檢索服務:

    export REGION={{{project_0.default_region | REGION }}} cd ~/genai-databases-retrieval-app gcloud alpha run deploy retrieval-service \ --source=./retrieval_service/\ --no-allow-unauthenticated \ --service-account retrieval-identity \ --region $REGION \ --network=default \ --quiet

    請稍候幾分鐘,等待部署作業完成。

  2. 請執行下列指令來驗證服務:

    curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" $(gcloud run services list --filter="(retrieval-service)" --format="value(URL)")

    看到「Hello World」訊息時,表示服務已啟用並能處理要求。

部署檢索服務。

工作 7:註冊 OAuth 同意畫面

在這項工作中,您會註冊 OAuth 同意畫面,系統會向要登入的使用者顯示這個畫面。

使用 OAuth 2.0 授權時,Google 會顯示同意畫面,請使用者授權應用程式存取資料。

  1. 在 Google Cloud 控制台點按「導覽選單」圖示 ,然後依序選取「API 和服務」>「OAuth 同意畫面」。

  2. 點按「開始」

  3. 「應用程式名稱」請輸入 Cymbal Air

  4. 依序點按「使用者支援電子郵件」、學員的電子郵件和「下一步」

  5. 「目標對象」請選取「內部」,然後點按「下一步」

    有專案存取權的使用者應能登入應用程式。

  6. 在實驗室操作說明的左側面板上,複製使用者名稱

  7. 在「聯絡資訊」貼上複製的使用者名稱。

  8. 點按「下一步」

  9. 選取核取方塊,表示同意使用者資料政策,然後依序點按「繼續」和「建立」

    同意畫面現已設定完畢。

工作 8:建立應用程式的用戶端 ID

在這項工作中,您會建立應用程式的用戶端 ID。

應用程式必須有用戶端 ID,才能使用 Google 的 OAuth 服務。您可以設定允許發出這項要求的來源,以及重新導向 URI,在使用者同意登入後,將使用者重新導向至該位置。

  1. 在 Google Cloud 控制台點按「導覽選單」圖示 ,然後依序選取「API 和服務」>「憑證」

  2. 依序點按「+ 建立憑證」和「OAuth 用戶端 ID」

    Google 的 OAuth 伺服器會使用用戶端 ID 來識別個別應用程式。

  3. 「應用程式類型」請選取「網頁應用程式」

  4. 「名稱」請輸入 Cymbal Air

    您可以使用 Cloud Shell 產生 JavaScript 來源和重新導向 URI。

  5. 在 Cloud Shell 點按「開啟新分頁」圖示 (+),即可開啟新的 Cloud Shell 分頁。

  6. 請在新分頁執行下列指令,以便取得來源和重新導向 URI:

    echo "origin:"; echo "https://8080-$WEB_HOST"; echo "redirect:"; echo "https://8080-$WEB_HOST/login/google"
  7. 在「已授權的 JavaScript 來源」,點按「+ 新增 URI」

    注意:請選取「已授權的 JavaScript 來源」下方的「新增 URI」按鈕,而不是「已授權的重新導向 URI」下方的按鈕。
  8. 複製 echo 指令建立的來源 URI,然後在「URI 1」貼上 URI。

  9. 在「已授權的重新導向 URI」下方,點按「+ 新增 URI」

    注意:此處請選取「已授權的重新導向 URI」下方的「新增 URI」按鈕。
  10. 複製 echo 指令建立的重新導向 URI,然後在「URI 1」貼上 URI。

  11. 點按「建立」

    系統已建立用戶端 ID 和用戶端密鑰。在這個測試應用程式,您只會用到用戶端 ID。

  12. 現在要建立環境變數。請在 VM SSH 的 Cloud Shell 分頁貼上下列指令,但不要按下 Enter 鍵:

    export CLIENT_ID=
  13. 點按「複製用戶端 ID」圖示

    用戶端 ID 已複製到剪貼簿。

    注意:您也可以從「憑證」頁面複製用戶端 ID。
  14. 在 VM SSH 的 Cloud Shell 分頁貼上用戶端 ID,然後按下 Enter 鍵。

    匯出內容應與下方類似:

    export CLIENT_ID=937631684809-q7hs2r191jbks7f7dopih2uafuknb92h.apps.googleusercontent.com
建立應用程式的用戶端 ID。

工作 9:部署範例應用程式

在這項工作中,您會執行使用檢索服務的範例對話應用程式。

執行應用程式

  1. 請在 VM SSH 的 Cloud Shell 分頁執行下列指令,以便安裝對話應用程式的 Python 需求檔案:

    cd ~/genai-databases-retrieval-app/llm_demo pip install -r requirements.txt

    啟動應用程式前,需先設定一些環境變數。應用程式的基本功能 (包括查詢航班和傳回機場設施) 需要 BASE_URL 環境變數。這個變數是用來指定檢索服務的基準網址。

  2. 請執行下列指令,指定檢索服務的基準網址:

    export BASE_URL=$(gcloud run services list --filter="(retrieval-service)" --format="value(URL)") echo $BASE_URL

    本機應用程式會使用這個基準網址存取檢索服務。

  3. 如要執行應用程式,請執行下列指令:

    python run_app.py

    回應內容大致如下:

    (.venv) student-03-b2f40c6c89d6@app-vm:~/genai-databases-retrieval-app/llm_demo$ python run_app.py INFO: Started server process [32894] INFO: Waiting for application startup. Loading application... INFO: Application startup complete. INFO: Uvicorn running on http://0.0.0.0:8081 (Press CTRL+C to quit)

    應用程式現已開始運作。

連線至 VM

您可以透過多種方式連線至 VM 上執行的應用程式。舉例來說,您能在虛擬私有雲使用防火牆規則,開啟 VM 的 8081 通訊埠,或是建立具有公開 IP 的負載平衡器。這裡您會使用 SSH 通道連線至 VM,將 Cloud Shell 通訊埠 8080 連至 VM 通訊埠 8081。

  1. 在 Cloud Shell 點按「開啟新分頁」圖示 (+),即可開啟新的 Cloud Shell 分頁。

  2. 請在新分頁執行下列指令,建立連往 VM 通訊埠的 SSH 通道:

    gcloud compute ssh app-vm --zone={{{project_0.default_zone | ZONE }}} -- -L 8080:localhost:8081

    gcloud 指令會將 Cloud Shell 通訊埠 8080,連線至 VM 通訊埠 8081。您可以忽略「Cannot assign requested address.」錯誤訊息。

  3. 現在要在網路瀏覽器執行應用程式。請點按「網頁預覽」,然後選取「透過以下通訊埠預覽:8080」

    瀏覽器會開啟新分頁並執行應用程式。Cymbal Air 應用程式會顯示下列訊息:「Welcome to Cymbal Air!How may I assist you?」。

  4. 輸入下列查詢:

    When is the next flight to Dallas?

    應用程式會在回覆中提供下一個從 SFO 飛往達拉斯沃斯堡的航班。

  5. 輸入下列查詢:

    Which restaurants are near the departure gate?

    應用程式瞭解查詢脈絡,會在回覆中提供 SFO 登機門附近的餐廳。

工作 10:登入應用程式 (非必要)

在這項工作中,您會登入應用程式來預訂航班。

  1. 點按「Sign in」

    畫面會彈出一個視窗。

  2. 在彈出式視窗中選取學員。

    現在學員帳戶已登入。

  3. 如果系統要求您確認是否要以學員身分登入,請點按「Confirm」

  4. 輸入下列查詢:

    Please book that flight.

    應用程式會顯示對話中提及的航班。

  5. 點按「Looks good to me. Book it」。

    現在機票已預訂完成。

  6. 輸入下列查詢:

    Which flights have I booked?

    畫面會顯示剛才預訂的航班。

    對話應用程式可回答使用者的問題,例如:

    • 下一個飛往邁阿密的航班是什麼時候?
    • D50 登機門附近有哪些精品店?
    • 在 A6 登機門附近哪裡可以買到咖啡?

    該應用程式會使用最新 Google 基礎模型生成回覆,並從運作中的 AlloyDB 資料庫檢索航班和設施資訊,再於回覆中提供。如要進一步瞭解這個示範應用程式,請前往專案的 GitHub 頁面

恭喜!

您已成功建構對話應用程式,並運用大型語言模型 (LLM) 和檢索增強生成 (RAG) 技術,生成有趣且資訊豐富的對話。

後續行動/瞭解詳情

關閉研究室

如果您已完成研究室,請按一下「End Lab」(關閉研究室)。Google Cloud Skills Boost 會移除您使用的資源,並清除所用帳戶。

您可以針對研究室的使用體驗評分。請選取合適的星級評等並提供意見,然後按一下「Submit」(提交)

星級評等代表您的滿意程度:

  • 1 星 = 非常不滿意
  • 2 星 = 不滿意
  • 3 星 = 普通
  • 4 星 = 滿意
  • 5 星 = 非常滿意

如果不想提供意見回饋,您可以直接關閉對話方塊。

如有任何想法、建議或指教,請透過「Support」(支援) 分頁提交。

Copyright 2024 Google LLC 保留所有權利。Google 和 Google 標誌是 Google LLC 的商標,其他公司和產品名稱則有可能是其關聯公司的商標。

上一步 下一步

准备工作

  1. 实验会创建一个 Google Cloud 项目和一些资源,供您使用限定的一段时间
  2. 实验有时间限制,并且没有暂停功能。如果您中途结束实验,则必须重新开始。
  3. 在屏幕左上角,点击开始实验即可开始

此内容目前不可用

一旦可用,我们会通过电子邮件告知您

太好了!

一旦可用,我们会通过电子邮件告知您

一次一个实验

确认结束所有现有实验并开始此实验

使用无痕浏览模式运行实验

请使用无痕模式或无痕式浏览器窗口运行此实验。这可以避免您的个人账号与学生账号之间发生冲突,这种冲突可能导致您的个人账号产生额外费用。
预览