1. 簡介
直覺式程式開發徹底改變了前端的開發速度和方式,但通常會在資料庫方面遇到瓶頸。傳統上,開發人員必須切換環境、撰寫複雜的 SQL 結構定義、管理連線集區,以及手動設定資料庫擴充功能。
在本程式碼研究室中,您將體驗流暢的對話式資料庫開發工作流程。您將使用 Model Context Protocol (MCP) 和代理 IDE,將編輯器視為經驗豐富的資料工程師,在幾分鐘內從簡單的概念,建構出完全連線、經過最佳化且支援 AI 的資料庫應用程式,完全不必離開工作區。
建構項目
在本程式碼研究室中,您將建構及部署 AI 美食指南,這是一個以 AlloyDB 為後端的現代化 Next.js 應用程式。應用程式將支援:
- 動態目錄擷取:自動從原始 CSV 檔案匯入及建構餐廳資料。
- 以關鍵字為準的搜尋:使用全文搜尋功能動態查詢資料庫。
- AI 輔助語意搜尋:使用 Agent Platform 嵌入內容,依「氛圍」描述尋找餐廳 (例如「適合約會的舒適場所」或「深夜快速用餐」)。

課程內容
- 佈建具有公開 IP 和虛擬私有雲網路設定的 Google Cloud AlloyDB 執行個體。
- 使用 Model Context Protocol (MCP) Toolbox,將 Antigravity IDE 直接連線至 AlloyDB。
- 使用環境變數和安全 SSL 連線,將 Next.js 前端連線至即時資料庫。
- 啟用資料庫內建的 Agent Platform 整合功能,使用 text-embedding-004 生成向量嵌入。
- 使用餘弦距離運算子 (<=>) 執行向量相似度搜尋。
- 使用 HNSW 索引和資料表分區,盡可能提高生產規模的資料庫效能,扮演虛擬資料庫管理員的角色。
軟硬體需求
如要完成本程式碼研究室,您需要:
- 電腦上已安裝 Antigravity Desktop IDE。
- 已啟用計費功能的 Google Cloud 專案。
- 在本機電腦上安裝並驗證 Google Cloud CLI (gcloud) 和 Git。
- 網路瀏覽器 (建議使用 Chrome)。
本程式碼研究室適合各種程度的開發人員 (包括初學者)。
2. 事前準備
本節將逐步說明在 Google Cloud 專案中進行初始設定的必要步驟,完成後即可開始建構 AI 柏林美食指南。
建立專案
- 在 Google Cloud 控制台的專案選取器頁面中,選取或建立 Google Cloud 專案。
- 確認 Cloud 專案已啟用計費功能。瞭解如何檢查專案是否已啟用計費功能。
安裝本機必要條件
確認本機電腦已安裝下列工具:
- Antigravity IDE:安裝 Antigravity Desktop IDE
- Google Cloud SDK:下載並安裝 Google Cloud CLI。
- Git:下載並安裝 Git。
驗證及設定專案
您將直接在 IDE 中執行所有指令列指令。
- 在本機電腦上開啟 Antigravity IDE
- 開啟 Antigravity 的終端機,然後複製專案存放區:
git clone https://github.com/mtoscano84/vibe-coding-postgres-mcp.git
- 開啟專案資料夾:
- 依序前往「File」>「Open Folder」(或「Open...」)。
- 找出並選取新複製的 vibe-coding-postgres-mcp 資料夾。
- 專案資料夾開啟後,請在 Antigravity 中啟動新的整合式終端機。設定 PROJECT_ID 環境變數,並設定 gcloud CLI 使用該變數 (將 [YOUR_PROJECT_ID] 替換為實際的 GCP 專案 ID):
export PROJECT_ID=[YOUR_PROJECT_ID]
gcloud config set project $PROJECT_ID
- 登入 Google Cloud CLI:
gcloud auth login
- 驗證有效帳戶:
gcloud auth list
啟用必要的 API
在 Antigravity 終端機中執行下列指令,啟用必要的 Google Cloud 服務:
gcloud services enable alloydb.googleapis.com \
compute.googleapis.com \
servicenetworking.googleapis.com \
aiplatform.googleapis.com \
run.googleapis.com \
artifactregistry.googleapis.com \
cloudbuild.googleapis.com
3. 建立 AlloyDB 執行個體
在本節中,您將在 Antigravity 終端機中執行自動化指令碼,在 Google Cloud 中佈建 AlloyDB 叢集和執行個體。
在啟用中的 Antigravity 整合式終端機 (已位於 vibe-coding-postgres-mcp 專案目錄中) 執行 AlloyDB 佈建指令碼:
source database/deploy_alloydb.sh --region us-central1 --public-ip
注意:佈建程序約需 10 到 15 分鐘
佈建指令碼會執行下列動作:
- 建立名為「default」的虛擬私有雲網路 (如果專案中沒有)。
- 為 AlloyDB 設定私人服務存取權。
- 部署已啟用私人 IP 和公開 IP 的 AlloyDB 叢集和主要執行個體。
- 將必要的 Agent Platform 權限授予 AlloyDB 服務代理。
畫面上應該會顯示類似以下的輸出內容:
----------------------------------------
Deployment Process Completed
Cluster: alloydb-aip-01 (STANDARD)
Instance: alloydb-aip-01-pr
Region: us-central1
Private IP: XX.XX.XX.XX
Public IP: XX.XX.XX.XX
Initial Password: XXXXXXXXXX (if new cluster)
----------------------------------------
請務必複製並儲存下列詳細資料:
- AlloyDB 私人 IP:Cloud Run 應用程式會使用這個 IP 位址,在 VPC 內安全連線。
- AlloyDB 公開 IP:用於本機 Antigravity IDE 直接連線。
- 資料庫密碼:系統為 postgres 使用者自動產生的密碼。
4. 部署前端
在本節中,您將使用 Antigravity 整合式終端機,將基準 Next.js 前端 (狀態 0) 部署至 Google Cloud Run。這個初始版本使用模擬資料,尚未連線至資料庫。
首先,請直接在 Antigravity 終端機中執行下列指令,將必要的 IAM 角色授予 Compute Engine 預設服務帳戶:
PROJECT_NUMBER=$(gcloud projects describe $(gcloud config get-value project) --format="value(projectNumber)")
# Grant Storage Object Viewer (to read source code)
gcloud projects add-iam-policy-binding $(gcloud config get-value project) \
--member="serviceAccount:${PROJECT_NUMBER}-compute@developer.gserviceaccount.com" \
--role="roles/storage.objectViewer"
# Grant Log Writer (to write build logs)
gcloud projects add-iam-policy-binding $(gcloud config get-value project) \
--member="serviceAccount:${PROJECT_NUMBER}-compute@developer.gserviceaccount.com" \
--role="roles/logging.logWriter"
# Grant Artifact Registry Writer (to push container images)
gcloud projects add-iam-policy-binding $(gcloud config get-value project) \
--member="serviceAccount:${PROJECT_NUMBER}-compute@developer.gserviceaccount.com" \
--role="roles/artifactregistry.writer"
在 Antigravity 終端機中,從 vibe-coding-postgres-mcp 目錄的根目錄執行下列指令,將 Next.js 應用程式編譯及部署至 VPC 網路:
gcloud run deploy berlin-gastronomy-guide \
--source frontend/ \
--network=default \
--subnet=default \
--allow-unauthenticated \
--region=us-central1
部署完成後,系統會顯示服務網址。
Building using Dockerfile and deploying container to Cloud Run service [berlin-gastronomy-guide] in project [vibe-coding-postgres-mcp] region [us-central1]
Building and deploying...
Validating configuration...done
Uploading sources...done
Building Container... Logs are available at [ https://console.cloud.google.com/cloud-build/builds;region=us-central1/46a6e834-d5e9-4dfd-885e-d39e2790f72d?project=734791203988 ]....done
Setting IAM Policy...done
Creating Revision...done
Routing traffic...done
Done.
Service [berlin-gastronomy-guide] revision [berlin-gastronomy-guide-00002-n6k] has been deployed and is serving 100 percent of traffic.
Service URL: https://berlin-gastronomy-guide-[YOUR_PROJECT_NUMBER].us-central1.run.app
複製網址並在瀏覽器中開啟。
確認您看到柏林 AI 美食指南網頁,其中顯示模擬餐廳資訊卡。

5. 將 Antigravity 連線至 Google Cloud
如要讓在本機執行的 IDE (Antigravity) 中的 AI 代理與資料庫互動,我們會使用官方的 Google Cloud AlloyDB MCP 伺服器。
由於我們在佈建期間已啟用 AlloyDB 執行個體的公開 IP,因此本機 IDE 可以直接透過網際網路連線至該執行個體。連線會使用 SSL 和密碼驗證機制確保安全,且 MCP 伺服器會使用您的本機 Google Cloud 憑證授權連線。
在 Antigravity 中設定 MCP 伺服器
- 在 Antigravity IDE 中,按一下即時通訊視窗右上角的三點選單 (...)。
- 選取 MCP 伺服器,然後按一下「受管理 MCP 伺服器」(或「查看原始設定」/「編輯設定檔」)。
- 在 mcpServers 物件中新增下列 JSON 區塊。請務必將 [YOUR_PROJECT_ID] 和 [YOUR_ALLOYDB_PASSWORD] 替換為實際專案 ID,以及您在 AlloyDB 佈建步驟中儲存的資料庫密碼:
"alloydb-postgres": {
"command": "npx",
"args": [
"-y",
"@toolbox-sdk/server@latest",
"--prebuilt",
"alloydb-postgres",
"--stdio"
],
"env": {
"ALLOYDB_POSTGRES_PROJECT": "[YOUR_PROJECT_ID]",
"ALLOYDB_POSTGRES_REGION": "us-central1",
"ALLOYDB_POSTGRES_CLUSTER": "alloydb-aip-01",
"ALLOYDB_POSTGRES_INSTANCE": "alloydb-aip-01-pr",
"ALLOYDB_POSTGRES_DATABASE": "postgres",
"ALLOYDB_POSTGRES_USER": "postgres",
"ALLOYDB_POSTGRES_PASSWORD": "[YOUR_ALLOYDB_PASSWORD]"
}
}
- 儲存設定檔
- IDE 會自動啟動 MCP 伺服器。MCP 面板中的 alloydb-postgres 旁應會顯示綠點,表示已成功連線。
6. 直覺式程式開發:資料庫擷取
Antigravity IDE 現在已透過 MCP 伺服器連線至 AlloyDB 執行個體,您可以開始體驗 vibe-coding。
在這個步驟中,您會指示 AI 代理程式讀取含有柏林美食目錄的本機 CSV 檔案,並載入 AlloyDB 資料庫。
工作
您將在 Antigravity 中使用 Agent Chat。代理程式會自主讀取檔案、分析資料類型、連線至資料庫、建立資料表,以及插入記錄。
在 Antigravity 中開啟「代理」對話面板 (通常位於編輯器右側)。
接著複製下列提示詞,貼到對話中並按下 Enter 鍵:
Read the headers of database/seed_data_berlin.csv to determine column data types and create the restaurants table using the MCP tool execute_sql. Then, read the CSV rows locally and insert all 100 records into remote AlloyDB using a single batched multi-row INSERT INTO ... VALUES (...), (...), ...; statement via execute_sql. Do not print the CSV contents, row payloads, or SQL statements to the chat transcript.
驗證
服務專員會:
- 請閱讀 CSV 檔案標頭和一些範例資料列,判斷適當的結構定義。
- 呼叫 AlloyDB MCP 工具,建立餐廳資料表。
- 將 CSV 檔案中的 100 筆餐廳記錄批次插入資料庫。
7. 直覺式程式開發:將前端連結至資料庫
在本節中,您會將 Next.js 前端連結至即時 AlloyDB 資料庫。您將指示代理程式以即時資料庫查詢取代模擬資料,並實作關鍵字搜尋。
工作
您會提示代理程式編寫連線程式碼,並更新首頁。由於我們在 .agents/AGENTS.md 中提交了資料庫 SSL 規則,因此代理程式會自動設定連線集區,以使用 SSL 進行雲端連線,您不需要在提示中指定這項設定!
在 Antigravity Agent 對話中,複製並貼上下列提示,然後按下 Enter 鍵 (將 [YOUR_PASSWORD] 換成實際的資料庫密碼):
Connect our Next.js frontend to the restaurants table in the database using the pg library. Use a connection pool configured with environment variables: DB_HOST, DB_USER (postgres), DB_PASS (password is '
[YOUR_PASSWORD]
'), and DB_NAME (postgres). Replace the mock data in page.tsx with a live query, and implement keyword search on the name, category, and description. When testing or verifying queries, always use LIMIT 3 and suppress quiet npm/build logs.
觀察代理程式執行工作:
- 這會安裝 pg 套件和 TypeScript 型別 (@types/pg)。
- 這會建立資料庫連線檔案 (或 Next.js 伺服器動作),並設定連線集區。
- 這項工具會讀取 AGENTS.md 規則,並自動為非本機主機新增 SSL 設定。
- 這會重新編寫 page.tsx,查詢資料庫並根據搜尋查詢篩選結果。
驗證
如要測試變更,您必須將前端重新部署至 Cloud Run。由於我們採用「僅限雲端」流程,因此新代碼會以這種方式出貨。
在 Antigravity 中開啟整合式終端機 (請確認您位於根目錄)。
執行部署指令,並將 AlloyDB 私人 IP 和密碼做為環境變數傳遞 (將預留位置替換為實際值):
gcloud run deploy berlin-gastronomy-guide \
--source frontend/ \
--network=default \
--subnet=default \
--set-env-vars="DB_HOST=[YOUR_ALLOYDB_PRIVATE_IP],DB_USER=postgres,DB_PASS=[YOUR_PASSWORD],DB_NAME=postgres" \
--allow-unauthenticated \
--region=us-central1
部署完成後,請在瀏覽器中開啟服務網址。
嘗試搜尋「Burgermeister」或「Kebab」。您應該會看到從資料庫載入的真實餐廳!
請注意,餐廳資訊卡現在會顯示實際的 GCS 圖片 (因為資料庫記錄包含我們稍早上傳的公開 GCS 網址!)。
8. 直覺式程式開發:啟用語意搜尋
在本節中,您將升級應用程式,支援 AI 輔助的語意向量搜尋。使用者不必輸入完全相符的關鍵字,只要描述想找的「氛圍」或體驗 (例如「浪漫的晚餐地點」或「夜店後快速用餐」),就能找到所需資訊。
工作
您將指示代理在餐廳資料表上啟用語意搜尋。代理程式會運用存放區中的 add-vector-search-alloydb 自訂技能,自動處理資料庫擴充功能、Agent Platform 模型註冊、嵌入生成和查詢更新。
在 Antigravity Agent 對話中,複製並貼上下列提示,然後按下 Enter 鍵:
Upgrade our database to support Semantic Vector Search on the restaurants table based on the description column. Then, update our frontend search query to use vector similarity search. Execute embedding generation quietly without printing embedding vectors or SQL progress logs to chat.
觀察代理程式執行工作:
- 這項指令會連線至 AlloyDB,並啟用 vector (pgvector) 和 google_ml_integration 擴充功能。
- 這會在資料庫中註冊 Agent Platform 嵌入模型 (text-embedding-004)。
- 系統會在餐廳資料表中新增嵌入欄。
- 系統會執行資料庫內查詢,為所有 100 筆餐廳說明生成嵌入內容。
- 這會更新前端程式碼,為使用者的搜尋查詢產生嵌入,並使用餘弦距離運算子 (<=>) 執行向量相似度搜尋。
驗證
將更新後的程式碼重新部署至 Cloud Run。
在 Antigravity 整合式終端機中執行部署指令 (將預留位置替換為實際值):
gcloud run deploy berlin-gastronomy-guide \
--source frontend/ \
--network=default \
--subnet=default \
--set-env-vars="DB_HOST=[YOUR_ALLOYDB_PRIVATE_IP],DB_USER=postgres,DB_PASS=[YOUR_PASSWORD],DB_NAME=postgres" \
--allow-unauthenticated \
--region=us-central1
部署完成後,請在瀏覽器中開啟服務網址。
輸入自然語言描述 (例如):
- 「a romantic dinner spot」
- 「clubbing 後的點心」
請注意,即使名稱或說明中沒有「浪漫」或「夜店」等確切字詞,系統仍會傳回高度相關的餐廳 (例如 Cafe Clärchens 或 Burgermeister)!
9. 直覺式程式開發:資料庫最佳化
隨著應用程式成長,資料庫必須經過最佳化調整,才能處理大量資料 (超過 10 萬列) 和高並行搜尋流量。在最後一個步驟中,您會將虛擬服務專員視為虛擬資料庫管理員 (DBA),分析及最佳化資料庫結構定義。
工作
您會要求代理扮演首席資料庫架構師,分析目前的結構定義,並建議最佳化做法。審查並核准最佳化建議後,代理程式就會使用 optimize-database-alloydb 自訂技能,自動套用這些建議。
Act as my Principal Database Architect! Our semantic search is feeling great, but let's level up our backend to effortlessly scale to 100K+ rows and handle high concurrent traffic. Inspect our restaurants schema quietly, and work your magic by immediately applying your top 2 production optimizations—an HNSW vector index and list partitioning by neighborhood—right now in this turn. No need to wait for approval! Keep the SQL logs clean and hit me with a crisp 3-bullet summary of how we just supercharged our database.
驗證
代理程式會自主分析資料庫結構定義,並套用兩項重要的生產最佳化措施:
- HNSW (階層式可導覽小世界) 索引:大幅加快向量相似度搜尋速度,不必掃描整個資料表。
- 宣告式清單分區:依據鄰近地區將餐廳資料表分區,以利有效擴充及維護。
最後,我們會提供 3 點簡要摘要,說明這些生產升級的架構優勢!
10. 挑戰:新增評論和評分
現在輪到你大顯身手,測試 Vibe 程式碼技能了!在這項挑戰中,您將擴充柏林美食指南,支援顧客評論和星級評等。
工作
請在 Antigravity Agent Chat 中自行編寫提示,而非複製並貼上提示,以實作下列功能:
- 資料庫結構定義:建立連結至
restaurants資料表的新reviews資料表。應儲存評分 (1 到 5 的整數) 和簡短的文字評論。 - 生成資料:為資料庫中的 100 間餐廳各生成 3 到 4 則真實的顧客評論。
- 前端整合:更新 Next.js 前端,計算並顯示每個餐廳資訊卡上的平均星等 (例如
⭐⭐⭐⭐☆)。 - 篩選:在頁面頂端新增下拉式篩選器,依評分篩選餐廳 (例如「顯示全部」、「4 星以上」、「3 星以上」)。
驗證
代理程式完成工作後,請將應用程式重新部署至 Cloud Run (將預留位置替換為實際值):
gcloud run deploy berlin-gastronomy-guide \
--source frontend/ \
--network=default \
--subnet=default \
--set-env-vars="DB_HOST=[YOUR_ALLOYDB_PRIVATE_IP],DB_USER=postgres,DB_PASS=[YOUR_PASSWORD],DB_NAME=postgres" \
--allow-unauthenticated \
--region=us-central1
部署完成後,請重新整理瀏覽器,並確認卡片上的星等
。
11. 結果
完成上述步驟後,您已成功使用直覺式程式開發,建構及最佳化新一代以資料庫為基礎的 AI 應用程式。本節重點說明您實作的核心架構功能:
Agentic Database Integration (Model Context Protocol)
傳統上,編寫資料庫程式碼時,您必須手動在 IDE、說明文件和資料庫用戶端之間切換。
在本實驗室中,您使用了 Model Context Protocol (MCP) Toolbox 來彌補這項差距。將資料庫結構定義檢查和 SQL 執行作業直接做為工具提供給 AI 代理程式,代理程式就能:
- 檢查原始 CSV 資料,並設計資料庫結構定義。
- 產生並執行 DDL 來建立資料表。
- 在 Next.js 應用程式中連結連線集區。
這項功能可讓開發人員在 IDE 中完全掌控資料庫,同時享受對話式的高速開發體驗。
資料庫內建 AI (Agent Platform 和語意搜尋)
您的應用程式運用 AlloyDB 與 Google Cloud Agent Platform 的原生整合功能,直接在資料庫內使用 SQL 生成向量嵌入:
- 線上生成嵌入項目:AlloyDB 會透過 SQL 函式在資料庫中呼叫 text-embedding-004 模型,不必將資料擷取至外部 Python 服務。
- 語意向量搜尋:透過 pgvector 擴充功能和餘弦距離運算子 (<=>),代理程式可將使用者的自然語言「氛圍」(例如「浪漫晚餐」) 與餐廳目錄中最接近的向量表示法相符,並在毫秒內傳回語意相關的結果。
生產環境等級的資料庫最佳化 (HNSW 和分割)
為確保應用程式可擴充至 10 萬列以上,並處理高流量,您以虛擬 DBA 的身分套用兩項進階資料庫最佳化措施:
- HNSW (階層式可導覽小世界) 索引:您在向量欄上建立了 HNSW 索引。與平面索引不同,HNSW 會建構多層圖表,可進行極快的近似最鄰近 (ANN) 搜尋,且召回率高。
- 宣告式資料表分區:您已依據鄰近地區將餐廳資料表分區。這可確保查詢特定區域時,系統只會掃描相關分區,而非整個資料表,大幅減少磁碟 I/O 和查詢延遲。
應用程式開發人員通常會避開複雜的資料庫設定、向量數學和深入的索引策略,因為這些都需要專業的 DBA 知識。透過代理式 IDE 搭配直覺式程式開發,我們就能彌合這項差距。現在,我們可以使用自然語言,放心地設計、建構及最佳化生產級資料庫應用程式,大幅加快開發週期,並專注於最重要的事:打造優質的使用者體驗。
12. 清除
如要避免系統向您的 Google Cloud 帳戶收取本實驗室所用資源的費用,請按照下列步驟操作:
13. 恭喜
您已成功使用 Vibe Coding,建構及部署以資料為基礎的 AI 輔助應用程式!
本實驗室的學習內容如下:
- 佈建 AlloyDB 資料庫,並同時提供私人和公開 IP 存取權。
- 使用 Model Context Protocol (MCP) Toolbox,直接將 Antigravity IDE 連線至資料庫。
- 使用自然語言擷取 CSV 目錄、將 Next.js 前端連線至資料庫,並部署至 Cloud Run。
- 啟用資料庫內建的 Agent Platform 整合功能,生成向量嵌入並執行語意搜尋。
- 擔任虛擬 DBA,使用 HNSW 索引和資料表分割功能,將資料庫最佳化,以因應生產規模。
您只需與 AI 代理程式進行自然對話,不必手動編寫任何 SQL 程式碼,也不必開啟外部資料庫用戶端,就能完成上述所有作業!
詳情請參閱產品說明文件: