程式碼研究室 - 使用 Neo4j 和 Vertex AI 建構電影推薦聊天機器人

程式碼研究室 - 使用 Neo4j 和 Vertex AI 建構電影推薦聊天機器人

程式碼研究室簡介

subject上次更新時間:4月 4, 2025
account_circle作者:Romin Irani and Siddhant Agarwal(GDE)

1. 總覽

在本程式碼研究室中,您將結合使用 Neo4j、Vertex AI 和 Gemini,建構智慧型電影推薦聊天機器人。聊天機器人會使用 Neo4j 知識圖譜來代表電影、演員、導演、製片人、類型等。為了提升搜尋體驗,您將使用 Vertex AI 的 text-embedding-004 模型,根據電影劇情概要產生向量嵌入資料。

最後,您將整合 Gemini 來支援對話式介面,讓使用者可以詢問自然語言問題,例如「如果我喜歡《星際效應》,該看哪部電影?」並根據語意相似性和圖表式情境,收到個人化的電影建議。

您將透過程式碼研究室逐步採用下列方法:

  1. 使用電影相關資料建構 Neo4j 知識圖譜
  2. 使用 Vertex AI 的文字嵌入功能,針對電影簡介/劇情產生文字嵌入,藉此充實電影資料。
  3. 建構 Gemini 輔助的 Gradio 聊天機器人介面,以便透過 Neo4j 進行語意搜尋和擷取,將所有內容整合在一起。
  4. 您可以選擇將其部署至 Google Cloud Run,做為獨立的網頁應用程式,如下所示:

課程內容

  • 如何使用 Cypher 和 Neo4j 建構電影知識圖譜。
  • 如何使用 Vertex AI 為文字產生語意嵌入。
  • 如何整合 Neo4j 和 Gemini,以便進行智慧向量檢索。
  • 如何使用 Gradio 建構及執行對話式聊天機器人 UI。

軟硬體需求

  • Chrome 網路瀏覽器
  • Gmail 帳戶
  • 已啟用計費功能的 Google Cloud 專案
  • 免付費的 Neo4j Aura DB 帳戶
  • 對終端機指令和 Python 有基本的瞭解

這個程式碼研究室專為各級別 (包括初學者) 的開發人員設計,在範例應用程式中使用 Python 和 Neo4j。雖然具備 Python 和圖形資料庫的基本知識會很有幫助,但您不必具備相關經驗,也能瞭解概念或跟著操作。121747afa89e0e6.png

2. 設定 Neo4j AuraDB

Neo4j 是領先的原生圖形資料庫,可將資料儲存為節點 (實體) 和關係 (實體之間的連結) 網路,因此非常適合用於需要瞭解連結的用途,例如推薦內容、詐欺偵測、知識圖譜等。與依賴固定表格或階層結構的關聯式或文件型資料庫不同,Neo4j 的彈性圖形模型可直覺且有效率地呈現複雜的相互連結資料。

Neo4j 使用圖形模型,而非像關聯資料庫那樣以資料列和資料表整理資料,其中資訊會以節點 (實體) 和關係 (這些實體之間的連結) 表示。這個模型可讓您以直覺的方式處理本質上相關聯的資料,例如人物、地點、產品,或在本例中,電影、演員和類型。

舉例來說,在電影資料集中:

  • 節點可代表 MovieActorDirector
  • 關係可以是 ACTED_INDIRECTED

有了這個結構,你就能輕鬆提問下列問題:

  • 這位演員演出過哪些電影?
  • 與克里斯多福諾蘭合作過的演員有哪些?
  • 根據共同演員或類型,哪些電影與某部電影相似?

Neo4j 提供強大的查詢語言 Cypher,專門用於查詢圖譜。您可以使用 Cypher,以簡潔易讀的方式表達複雜的模式和連結。

Neo4j 提供多種部署選項,可依據您的需求進行選擇:

  • 自行管理:使用 Neo4j Desktop 或 Docker 映像檔 (地端或您自己的雲端),在您自己的基礎架構上執行 Neo4j。397a3c535b52d3f6.png
  • 雲端管理:使用市集產品在熱門雲端服務供應商上部署 Neo4j。
  • 全代管:使用 Neo4j AuraDB,這是 Neo4j 提供的全代管雲端資料庫即服務,可為您處理佈建、擴充、備份和安全性。

在本程式碼研究室中,我們會使用 Neo4j AuraDB Free,這是 AuraDB 的零成本層級。這項服務提供全代管的圖形資料庫執行個體,內含足夠的儲存空間和功能,可用於建立原型、學習及建構小型應用程式,非常適合我們建構以生成式 AI 為動力的電影推薦機器人聊天機器人。

您將建立免費的 AuraDB 執行個體,並使用連線憑證將其連結至應用程式,然後在本實驗室中使用該執行個體儲存及查詢電影知識圖。

為什麼要使用圖表?

在傳統的關聯式資料庫中,如果要回答「哪些電影與《全面啟動》相似,共用演員或類型?」這類問題,就必須執行跨多個資料表的複雜 JOIN 作業。隨著關係深度的增加,效能和可讀性會降低。

不過,Neo4j 等圖形資料庫的設計目的是有效地掃描關係,因此非常適合用於推薦系統、語意搜尋和智慧助理。這些資料有助於擷取實際情境,例如合作網路、故事情節或觀眾偏好,而這些情境很難透過傳統資料模型呈現。

將這些連結資料與 Gemini 等 LLMVertex AI 的向量嵌入結合,就能強化聊天機器人的體驗,讓機器人以更個人化且相關的方式進行推理、擷取及回應。

Neo4j AuraDB 免費建立

  1. 前往 https://console.neo4j.io
  2. 使用 Google 帳戶或電子郵件地址登入。
  3. 按一下「建立免費執行個體」。
  4. 在例項佈建期間,畫面上會顯示彈出式視窗,顯示資料庫的連線憑證。

請務必從彈出式視窗下載並安全地儲存下列詳細資料,這些資料對於將應用程式連結至 Neo4j 至關重要:

NEO4J_URI=neo4j+s://<your-instance-id>.databases.neo4j.io
NEO4J_USERNAME=neo4j
NEO4J_PASSWORD=<your-generated-password>
AURA_INSTANCEID=<your-instance-id>
AURA_INSTANCENAME=<your-instance-name>

您將使用這些值設定專案中的 .env 檔案,以便在下一個步驟中透過 Neo4j 進行驗證。

a1e29e56e6c412fc.png

Neo4j AuraDB Free 非常適合開發、實驗和小規模應用程式 (例如本程式碼研究室)。這項服務提供充裕的用量限制,最多可支援 200,000 個節點400,000 個關係。雖然它提供建構及查詢知識圖譜所需的所有基本功能,但不支援自訂外掛程式或增加儲存空間等進階設定。如果是實際工作負載或較大的資料集,您可以升級至 AuraDB 更高層級的方案,享有更大的容量、效能和企業級功能。

這樣就完成了 Neo4j AuraDB 後端設定。在下一個步驟中,我們會建立 Google Cloud 專案、複製存放區,並設定必要的環境變數,以便準備好開發環境,然後開始使用程式碼研究室。

3. 事前準備

建立專案

  1. Google Cloud 控制台的專案選取器頁面中,選取或建立 Google Cloud 專案
  2. 確認 Cloud 專案已啟用計費功能。瞭解如何檢查專案是否已啟用計費功能
  3. 您將使用 Cloud Shell,這是在 Google Cloud 中運作的指令列環境,並預先載入 bq。按一下 Google Cloud 控制台頂端的「啟用 Cloud Shell」。

「啟用 Cloud Shell」按鈕圖片

  1. 連線至 Cloud Shell 後,請使用下列指令確認您已通過驗證,且專案已設為您的專案 ID:
gcloud auth list
  1. 在 Cloud Shell 中執行下列指令,確認 gcloud 指令知道您的專案。
gcloud config list project
  1. 如果未設定專案,請使用下列指令進行設定:
gcloud config set project <YOUR_PROJECT_ID>
  1. 請透過下列指令啟用必要的 API。這可能需要幾分鐘的時間,請耐心等候。
gcloud services enable cloudresourcemanager.googleapis.com \
                       
servicenetworking.googleapis.com \
                       
run.googleapis.com \
                       
cloudbuild.googleapis.com \
                       
cloudfunctions.googleapis.com \
                       
aiplatform.googleapis.com

指令執行成功後,您應該會看到類似以下的訊息:

Operation "operations/..." finished successfully.

您可以透過主控台搜尋每項產品,或使用這個連結,來取代 gcloud 指令。

如果遺漏任何 API,您隨時可以在導入期間啟用。

如要瞭解 gcloud 指令和用法,請參閱說明文件

複製存放區並設定環境

接下來,我們要複製範例存放區,以便在程式碼研究室的後續步驟中參照。假設您目前在 Cloud Shell 中,請從主目錄執行下列指令:

git clone https://github.com/sidagarwal04/neo4j-vertexai-codelab.git

如要啟動編輯器,請按一下 Cloud Shell 視窗工具列中的「Open Editor」(開啟編輯器)。按一下左上角的選單列,然後依序選取「檔案」→「開啟資料夾」,如下所示:

66221fd0d0e5202f.png

選取 neo4j-vertexai-codelab 資料夾後,您應該會看到開啟的資料夾,其中包含下列檔案,如下所示:

e49542efd70de22e.png

接下來,我們需要設定在本程式碼研究室中會用到的環境變數。點選 example.env 檔案,您應該會看到如下所示的內容:

NEO4J_URI=
NEO4J_USER=
NEO4J_PASSWORD=
NEO4J_DATABASE=
PROJECT_ID=
LOCATION=

接著,請在 example.env 檔案所在的資料夾中建立名為 .env 的新檔案,並複製現有 example.env 檔案的內容。接著,請更新下列變數:

  • NEO4J_URINEO4J_USERNEO4J_PASSWORDNEO4J_DATABASE
  • 使用上一個步驟建立 Neo4j AuraDB Free 執行個體時提供的憑證,填入這些值。
  • NEO4J_DATABASE 通常會設為 AuraDB Free 的 neo4j。
  • PROJECT_IDLOCATION
  • 如果您是透過 Google Cloud Shell 執行程式碼研究室,可以將這些欄位留空,系統會自動根據您目前的專案設定推斷這些欄位。
  • 如果您是在本機或 Cloud Shell 外部執行,請使用先前建立的 Google Cloud 專案 ID 更新 PROJECT_ID,並將 LOCATION 設為為該專案選取的區域 (例如 us-central1)。

填寫完這些值後,請儲存 .env 檔案。這項設定可讓應用程式連線至 Neo4j 和 Vertex AI 服務。

設定開發環境的最後一個步驟,是建立 Python 虛擬環境,並安裝 requirements.txt 檔案中列出的所有必要依附元件。這些依附元件包括用於搭配 Neo4j、Vertex AI、Gradio 等工具運作的程式庫。

首先,請執行下列指令,建立名為 .venv 的虛擬環境:

python -m venv .venv

建立環境後,我們需要使用下列指令啟用所建立的環境

source .venv/bin/activate

終端機提示的開頭應該會顯示 (.venv),表示環境已啟用。例如:(.venv) yourusername@cloudshell:

接著,執行以下指令來安裝必要依附元件:

pip install -r requirements.txt

以下是檔案中列出的關鍵依附元件快照:

gradio>=4.0.0
neo4j>=5.0.0
numpy>=1.20.0
python-dotenv>=1.0.0
google-cloud-aiplatform>=1.30.0
vertexai>=0.0.1

所有依附元件都已成功安裝後,本程式碼研究室中的本機 Python 環境就會全面設定,以便執行指令碼和聊天機器人。

太好了!我們現在可以進行下一個步驟,瞭解資料集並準備建立圖表和語意豐富化。

4. 準備 Movies 資料集

我們的第一個工作是準備電影資料集,以便建立知識圖並強化推薦對話方塊。我們不會從頭開始,而是使用現有的開放資料集,並在此基礎上進行建構。

我們使用 Rounak Banik 的 The Movies Dataset,這是 Kaggle 上知名的公開資料集。這份資料包含 TMDB 中超過 45,000 部電影的中繼資料,包括演員、工作人員、關鍵字、評分等。

9e3a1dc4c286af1b.png

如要建立可靠且有效的電影推薦聊天機器人,請務必先使用清晰、一致且有條理的資料。雖然 Kaggle 的 Movies Dataset 是豐富的資源,含有超過 45,000 筆電影記錄和詳細的中繼資料 (包括類型、演員、劇組人員等),但也包含雜訊、不一致性和巢狀資料結構,因此不利於圖表建模或語意嵌入。

為解決這個問題,我們預先處理並標準化資料集,確保資料集適合用於建立 Neo4j 知識圖譜,並產生高品質的嵌入資料。這項程序涉及:

  • 移除重複和不完整的記錄
  • 將關鍵欄位標準化 (例如類型名稱、人物姓名)
  • 將複雜的巢狀結構 (例如演員和工作人員) 扁平化為結構化 CSV
  • 選取約 12,000 部電影的代表性子集,以符合 Neo4j AuraDB 免費方案的限制

優質的正規化資料有助於確保:

  • 資料品質:盡量減少錯誤和不一致性,提供更準確的推薦內容
  • 查詢效能:簡化結構可提升擷取速度並減少重複內容
  • 嵌入準確度:清除輸入內容,可產生更有意義且符合情境的向量嵌入

您可以在這個 GitHub 存放區的 normalized_data/ 資料夾中,存取經過清理和正規化的資料集。這個資料集也會複製到 Google Cloud Storage 值區,方便您在日後的 Python 指令碼中存取。

資料經過清理後,我們現在可以將資料載入 Neo4j,並開始建構電影知識圖譜。

5. 建立電影知識圖譜

為了讓支援 GenAI 的電影推薦機器人順利運作,我們需要以某種方式建構電影資料集,以便擷取電影、演員、導演、類型和其他中繼資料之間的豐富連結網絡。在本節中,我們將使用先前準備的經過清理和標準化的資料集,在 Neo4j 中建立電影知識圖譜

我們將使用 Neo4j 的 LOAD CSV 功能,擷取儲存在公開 Google Cloud Storage (GCS) 值區中的 CSV 檔案。這些檔案代表電影資料集的不同組成元素,例如電影、類型、演員、工作人員、製作公司和使用者評分。

步驟 1:建立限制和索引

在匯入資料前,建議您建立限制和索引,以確保資料完整性並提升查詢效能。

CREATE CONSTRAINT unique_tmdb_id IF NOT EXISTS FOR (m:Movie) REQUIRE m.tmdbId IS UNIQUE;
CREATE CONSTRAINT unique_movie_id IF NOT EXISTS FOR (m:Movie) REQUIRE m.movieId IS UNIQUE;
CREATE CONSTRAINT unique_prod_id IF NOT EXISTS FOR (p:ProductionCompany) REQUIRE p.company_id IS UNIQUE;
CREATE CONSTRAINT unique_genre_id IF NOT EXISTS FOR (g:Genre) REQUIRE g.genre_id IS UNIQUE;
CREATE CONSTRAINT unique_lang_id IF NOT EXISTS FOR (l:SpokenLanguage) REQUIRE l.language_code IS UNIQUE;
CREATE CONSTRAINT unique_country_id IF NOT EXISTS FOR (c:Country) REQUIRE c.country_code IS UNIQUE;

CREATE INDEX actor_id IF NOT EXISTS FOR (p:Person) ON (p.actor_id);
CREATE INDEX crew_id IF NOT EXISTS FOR (p:Person) ON (p.crew_id);
CREATE INDEX movieId IF NOT EXISTS FOR (m:Movie) ON (m.movieId);
CREATE INDEX user_id IF NOT EXISTS FOR (p:Person) ON (p.user_id);

步驟 2:匯入電影中繼資料和關聯

讓我們來看看如何使用 LOAD CSV 指令匯入電影中繼資料。這個範例會建立 Movie 節點,其中包含標題、摘要、語言和執行時間等重要屬性:

LOAD CSV WITH HEADERS FROM "https://storage.googleapis.com/neo4j-vertexai-codelab/normalized_movies.csv" AS row
WITH row, toInteger(row.tmdbId) AS tmdbId
WHERE tmdbId IS NOT NULL
WITH row, tmdbId
LIMIT 12000
MERGE (m:Movie {tmdbId: tmdbId})
ON CREATE SET m.title = coalesce(row.title, "None"),
             
m.original_title = coalesce(row.original_title, "None"),
             
m.adult = CASE
                           
WHEN toInteger(row.adult) = 1 THEN 'Yes'
                           
ELSE 'No'
                       
END,
             
m.budget = toInteger(coalesce(row.budget, 0)),
             
m.original_language = coalesce(row.original_language, "None"),
             
m.revenue = toInteger(coalesce(row.revenue, 0)),
             
m.tagline = coalesce(row.tagline, "None"),
             
m.overview = coalesce(row.overview, "None"),
             
m.release_date = coalesce(row.release_date, "None"),
             
m.runtime = toFloat(coalesce(row.runtime, 0)),
             
m.belongs_to_collection = coalesce(row.belongs_to_collection, "None");

類似的 Cypher 指令可用於匯入相關實體,例如類型、製作公司、語言、國家/地區、演員、工作人員和評分。

透過 Python 載入完整圖表

建議您使用本程式碼研究室提供的自動化 Python 指令碼,而非手動執行多個 Cypher 查詢。

這個 graph_build.py 指令碼會使用 .env 檔案中的憑證,將 GCS 中的整個資料集載入 Neo4j AuraDB 例項。

python graph_build.py

這個指令碼會依序載入所有必要的 CSV、建立節點和關係,並建構完整的電影知識圖結構。

驗證圖表

載入完成後,您可以執行簡單的 Cypher 查詢來驗證圖表,例如:

MATCH (m:Movie) RETURN m LIMIT 5;
MATCH (a:Actor)-[:ACTED_IN]->(m:Movie) RETURN a.name, m.title LIMIT 5;

圖表現在應該會填入電影、人物、類型等內容,並準備在下一個步驟中進行語意強化!

6. 產生及載入嵌入項目,以便執行向量相似度搜尋

如要在聊天機器人中啟用語意搜尋,我們需要為電影總覽產生向量嵌入。這些嵌入功能可將文字資料轉換為可比較相似度的數值向量,讓對話方塊即使查詢不完全符合標題或說明,也能擷取相關電影。

⚠️ 成效相關注意事項

即時為數千部電影的說明生成嵌入資料,既耗時又耗用大量資源。為讓這個程式碼研究室更有效率且易於使用,我們已使用 Vertex AI 的

text-embedding-004

模型,並儲存至公開可用的 CSV 檔案。

bcca07eaee60787b.png

方法 1:透過 Cypher 載入預先計算的嵌入

如要快速將嵌入內容附加至 Neo4j 中的對應 Movie 節點,請在 Neo4j 瀏覽器中執行下列 Cypher 指令:

LOAD CSV WITH HEADERS FROM 'https://storage.googleapis.com/neo4j-vertexai-codelab/movie_embeddings.csv' AS row
WITH row
MATCH (m:Movie {tmdbId: toInteger(row.tmdbId)})
SET m.embedding = apoc.convert.fromJsonList(row.embedding)

這項指令會從 CSV 讀取嵌入向量,並將其附加為每個 Movie 節點的屬性 (m.embedding)。

選項 2:使用 Python 載入嵌入項目

您也可以使用提供的 Python 指令碼,以程式輔助方式載入嵌入資料。如果您在自己的環境中工作,或想自動化這個程序,這麼做就很有幫助:

python load_embeddings.py

這個指令碼會從 GCS 讀取相同的 CSV,並使用 Python Neo4j 驅動程式將嵌入資料寫入 Neo4j。

[選用] 自行產生嵌入資料 (適用於探索)

如果您想瞭解如何產生嵌入資料,可以探索 generate_embeddings.py 指令碼本身的邏輯。這個應用程式會使用 Vertex AI,透過 text-embedding-004 模型嵌入每部電影的概覽文字。

如要自行嘗試,請開啟並執行程式碼的嵌入產生部分。如果您是在 Cloud Shell 中執行,可以將下列行註解掉,因為 Cloud Shell 已透過您的有效帳戶完成驗證:

# os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = "./service-account.json"

⚠️ 執行完整的嵌入產生程序會消耗 Vertex AI 配額,且可能需要大量時間,尤其是當記錄數量達到數千筆時。

嵌入項目載入至 Neo4j 後,電影知識圖譜就會變成語意感知,可使用向量相似度支援強大的自然語言搜尋功能!

7. 電影推薦聊天機器人

知識圖譜和嵌入已就定位,現在是時候將所有內容整合至對話式介面,也就是您的電影推薦聊天機器人

這個聊天機器人是使用 PythonGradio 實作,後者是一種用於建構網路 UI 的輕量級架構。主要邏輯位於 chatbot.py 指令碼中,該指令碼會連線至 Neo4j AuraDB 例項,並根據自然語言提示,對電影嵌入資料執行向量相似度搜尋

聊天機器人會使用 Gemini 微調查詢並調整回覆格式,進而提升使用者體驗。Neo4j 會結合圖形情境和向量相似度,傳回搜尋結果。

在本機執行 Chatbot

如要啟動聊天機器人,請啟用虛擬環境 (如果尚未啟用),然後執行以下指令:

python chatbot.py

畫面會顯示類似以下的輸出:

Old index dropped
Creating new vector index
Vector index created successfully
* Running on local URL:  http://127.0.0.1:7860
To create a public link, set `share=True` in `launch()`.

💡 如果您看到與 allow_flagging 相關的淘汰警告,可以暫時忽略這些警告,應用程式仍會執行。

與聊天機器人互動

執行完畢後,請開啟終端機中顯示的網址,通常為:👉 http://127.0.0.1:7860

系統會顯示簡單的即時通訊介面,您可以輸入自然語言查詢,例如:

  • 「推薦我《全面啟動》這類科幻驚悚片」
  • 「推薦一部浪漫電影,由湯姆漢克斯主演」
  • 「我想看溫馨的家庭劇」

c76b6c6e2bcb25d9.png

聊天機器人會處理查詢,針對電影簡介執行語意向量搜尋,並顯示最相關的電影清單,包括電影名稱、簡介和上映年份。

每項建議都會以資訊卡樣式的版面配置顯示,並以整齊的格式呈現結果。

在本機執行聊天機器人後,您現在擁有了一個功能完整的 GenAI 電影推薦系統,結合了知識圖大型語言模型 (Gemini)語意搜尋的最佳功能,並使用 Vertex AI 嵌入資料

8. (選用) 部署至 Google Cloud Run

如果您想讓電影推薦聊天機器人公開在網路上,可以將其部署至 Google Cloud Run,這是全代管的無伺服器平台,可自動調整應用程式的規模。121747afa89e0e6.png

在部署前,請確認專案中含有下列檔案 (這些檔案已包含在此存放區中):

  • requirements.txt:列出執行應用程式所需的所有 Python 依附元件,包括 Neo4j 和 Vertex AI。
  • Dockerfile:定義容器環境,包括基礎映像檔、依附元件安裝方式,以及應用程式啟動方式。

步驟 1:設定環境變數

在終端機中設定下列環境變數 (請將預留位置值替換為實際的專案設定):

# Set your Google Cloud project ID
export GCP_PROJECT='your-project-id'  # Change this

# Set your preferred deployment region
export GCP_REGION='us-central1'

步驟 2:建立 Artifact Registry 並建構容器

# Artifact Registry repo and service name
export AR_REPO='your-repo-name'       # Change this
export SERVICE_NAME='movies-chatbot'  # Or any name you prefer

# Create the Artifact Registry repository
gcloud artifacts repositories create "$AR_REPO" \
 
--location="$GCP_REGION" \
 
--repository-format=Docker

# Authenticate Docker with Artifact Registry
gcloud auth configure-docker "$GCP_REGION-docker.pkg.dev"

# Build and submit the container image
gcloud builds submit \
 
--tag "$GCP_REGION-docker.pkg.dev/$GCP_PROJECT/$AR_REPO/$SERVICE_NAME"

這個指令會使用 Dockerfile 封裝應用程式,並將容器映像檔上傳至 Google Cloud Artifact Registry。

步驟 3:部署至 Cloud Run

部署前,請確認所有必要環境變數 (例如憑證、專案設定) 會列在 .env 檔案中。

使用以下程式碼片段,將 .env 檔案動態轉換為與 --set-env-vars 旗標相容的格式:

ENV_VARS=$(grep -v '^#' .env | sed 's/ *= */=/g' | xargs -I{} echo -n "{},")
ENV_VARS=${ENV_VARS%,}

接著部署應用程式:

gcloud run deploy "$SERVICE_NAME" \
 
--port=8080 \
 
--image="$GCP_REGION-docker.pkg.dev/$GCP_PROJECT/$AR_REPO/$SERVICE_NAME" \
 
--allow-unauthenticated \
 
--region=$GCP_REGION \
 
--platform=managed \
 
--project=$GCP_PROJECT \
 
--set-env-vars="GCP_PROJECT=$GCP_PROJECT,GCP_REGION=$GCP_REGION,$ENV_VARS"

存取聊天機器人

部署完成後,Cloud Run 會傳回公開服務網址,格式如下:

https://movies-chatbot-[UNIQUE_ID].${GCP_REGION}.run.app

在瀏覽器中開啟網址,即可存取聊天機器人。您應該會看到在雲端執行的相同 Gradio UI,能夠接收查詢並回應電影推薦內容。

注意事項和提示

  • 請確認 Dockerfile 在建構期間執行 pip install -r requirements.txt
  • 如果您未使用 Cloud Shell,就必須使用具備 Vertex AI 和 Artifact Registry 權限的服務帳戶驗證環境。
  • 您可以前往 Google Cloud 主控台 > Cloud Run 監控部署記錄和指標。

您也可以從 Google Cloud 控制台前往 Cloud Run,查看 Cloud Run 中的服務清單。movies-chatbot 服務應為其中一個 (如果不是唯一) 服務。

bccf390b7099e73b.png

按一下特定服務名稱 (在本例中為 movies-chatbot),即可查看服務的詳細資料,例如網址、設定、記錄等。

3709b596167cdaa0.png

這樣一來,您就能部署、調整及分享電影推薦聊天機器人。🎉

9. 清除所用資源

如要避免系統向您的 Google Cloud 帳戶收取這篇文章中所用資源的費用,請按照下列步驟操作:

  1. 在 Google Cloud 控制台中前往「管理資源」頁面。
  2. 在專案清單中選取要刪除的專案,然後點按「刪除」。
  3. 在對話方塊中輸入專案 ID,然後按一下「Shut down」(關閉) 即可刪除專案。

10. 恭喜

您已成功使用 Neo4jVertex AIGemini,建構並部署以圖譜為基礎、增強生成式 AI 的電影推薦聊天機器人。結合 Neo4j 的豐富建模功能、Vertex AI 嵌入功能的語意強大功能,以及 Gemini 的對話智慧,您就能建立直覺且智慧的系統,瞭解自然語言查詢,並根據情境提供相關電影推薦。

在本程式碼研究室中,您將:

  • 從真實的電影資料集建立豐富且相互連結的知識圖譜
  • 產生並整合向量嵌入,以便進行語意相似度搜尋
  • 運用 Gemini 提供自然語言互動功能
  • 使用 Gradio 建構簡單又強大的聊天機器人介面
  • 視需要使用 Google Cloud Run 部署應用程式,以便擴充及存取

這種做法不限於電影,同樣的架構也能用於書籍、音樂、產品、學術論文,或任何關係和語義相關的領域。隨著 Gemini 等多模態生成式 AI 模型持續進化,您將可透過更深入的理解、個人化互動和多格式輸出內容,為應用程式增添更多內容。

請繼續探索、持續建構,並別忘了隨時掌握 Neo4jVertex AIGoogle Cloud 的最新消息,讓您的智慧型應用程式更上一層樓!

參考文件