Codelab:使用 Neo4j 和 Vertex AI 构建电影推荐聊天机器人

Codelab:使用 Neo4j 和 Vertex AI 构建电影推荐聊天机器人

关于此 Codelab

subject上次更新时间:4月 4, 2025
account_circleRomin Irani and Siddhant Agarwal(GDE) 编写

1. 概览

在此 Codelab 中,您将结合使用 Neo4j、Vertex AI 和 Gemini 构建智能电影推荐聊天机器人。聊天机器人使用 Neo4j 知识图谱作为表示电影、演员、导演、制片人、类型等的基础。为了提升搜索体验,您将使用 Vertex AI 的 text-embedding-004 模型根据电影剧情概览生成向量嵌入。

最后,您将集成 Gemini 来支持对话式界面,让用户能够提出自然语言问题(例如“如果我喜欢《星际穿越》,应该看什么电影?”),并根据语义相似性和基于图的上下文接收个性化的电影建议。

在本 Codelab 中,您将采用分步方法,具体步骤如下:

  1. 使用与电影相关的数据构建 Neo4j 知识图谱
  2. 使用 Vertex AI 的文本嵌入功能,针对电影简介/情节生成文本嵌入,从而丰富电影数据。
  3. 构建一个由 Gemini 提供支持的 Gradio 聊天机器人界面,以便从 Neo4j 中进行语义搜索和检索,从而将所有内容整合到一起。
  4. 您还可以将其作为独立 Web 应用部署到 Google Cloud Run,如下所示:
  • 如何使用 Cypher 和 Neo4j 构建电影知识图谱。
  • 如何使用 Vertex AI 为文本生成语义嵌入。
  • 如何集成 Neo4j 和 Gemini,以实现基于矢量的智能检索。
  • 如何使用 Gradio 构建和运行对话式聊天机器人界面。

所需条件

  • Chrome 网络浏览器
  • Gmail 账号
  • 启用了结算功能的 Google Cloud 项目
  • 一个免费的 Neo4j Aura 数据库账号
  • 基本熟悉终端命令和 Python

此 Codelab 面向各种级别的开发者(包括新手),其示例应用中使用了 Python 和 Neo4j。虽然对 Python 和图数据库有基本的了解会很有帮助,但无需任何先前经验即可理解相关概念或跟随本教程学习。121747afa89e0e6.png

2. 设置 Neo4j AuraDB

Neo4j 是一款领先的原生图数据库,可将数据存储为节点(实体)和关系(实体之间的关联)网络,非常适合需要了解关联的用例,例如推荐、欺诈检测、知识图谱等。与依赖于刚性表或分层结构的关系型数据库或基于文档的数据库不同,Neo4j 的灵活图模型可直观高效地表示复杂的相互关联的数据。

Neo4j 使用图模型,而不是像关系型数据库那样以行和表的形式组织数据,其中信息表示为节点(实体)和关系(这些实体之间的连接)。借助这种模型,您可以非常直观地处理具有内在关联的数据,例如人物、地点、产品,或者在我们的示例中,电影、演员和类型。

例如,在电影数据集中:

  • 节点可以表示 MovieActorDirector
  • 关系可以是 ACTED_INDIRECTED

借助这种结构,您可以轻松提出以下问题:

  • 这位演员出演过哪些电影?
  • 哪些演员与 Christopher Nolan 合作过?
  • 根据演员或类型共享的电影是什么?

Neo4j 附带一种名为 Cypher 的强大查询语言,专为查询图表而设计。借助 Cypher,您可以以简洁且易于阅读的方式表达复杂的模式和关联。

Neo4j 提供多种部署选项,可根据您的需求进行选择:

  • 自行管理:使用 Neo4j Desktop 或作为 Docker 映像(在本地或您自己的云端)在您自己的基础架构上运行 Neo4j。397a3c535b52d3f6.png
  • 云端管理:使用 Marketplace 产品在热门云服务提供商上部署 Neo4j。
  • 全代管式:使用 Neo4j AuraDB,这是 Neo4j 的全代管式云数据库即服务,可为您处理预配、扩缩、备份和安全性。

在此 Codelab 中,我们将使用 Neo4j AuraDB Free,即 AuraDB 的免费层级。它提供了一个全托管式图数据库实例,具有足够的存储空间和功能,可用于构建原型、学习和构建小型应用,非常适合我们构建由 GenAI 驱动的电影推荐聊天机器人的目标。

您将创建一个免费的 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 非常适合开发、实验以及此 Codelab 中所述的小规模应用。它提供宽松的使用限制,最多支持 20 万个节点40 万个关系。虽然它提供了构建和查询知识图谱所需的所有基本功能,但不支持自定义插件或增加存储空间等高级配置。对于生产工作负载或较大的数据集,您可以升级到更高层级的 AuraDB 方案,以获得更大的容量、更出色的性能和企业级功能。

至此,关于设置 Neo4j AuraDB 后端的部分已完成。在下一步中,我们将创建一个 Google Cloud 项目、克隆代码库并配置必要的环境变量,以便准备好开发环境,然后再开始我们的 Codelab。

3. 准备工作

创建项目

  1. Google Cloud Console 的项目选择器页面上,选择或创建一个 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 命令和用法,请参阅文档

克隆代码库并设置环境设置

下一步是克隆我们将在本 Codelab 的其余部分中引用的示例代码库。假设您在 Cloud Shell 中,请在主目录中输入以下命令:

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

如需启动编辑器,请点击 Cloud Shell 窗口工具栏上的“打开编辑器”。点击左上角的菜单栏,然后依次选择“File”(文件)→“Open Folder”(打开文件夹),如下所示:

66221fd0d0e5202f.png

选择 neo4j-vertexai-codelab 文件夹,您应该会看到该文件夹打开,其中包含以下文件,如下所示:

e49542efd70de22e.png

接下来,我们需要设置将在整个 Codelab 中使用的环境变量。点击 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 免费实例时提供的凭据填写这些值。
  • 对于 AuraDB Free,NEO4J_DATABASE 通常设置为 neo4j。
  • PROJECT_IDLOCATION
  • 如果您是通过 Google Cloud Shell 运行此 Codelab,则可以将这些字段留空,因为系统会根据您当前的项目配置自动推断出这些字段。
  • 如果您是在本地或 Cloud Shell 之外运行,请将 PROJECT_ID 更新为您之前创建的 Google Cloud 项目的 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 环境将会完全配置完毕,可以运行此 Codelab 中的脚本和聊天机器人。

太棒了!现在,我们可以继续执行下一步了:了解数据集并为创建图表和进行语义丰富准备。

4. 准备 Movies 数据集

我们的第一项任务是准备电影数据集,我们将使用该数据集构建知识图谱并为推荐聊天机器人提供支持。我们将使用现有的开放式数据集,而不是从头开始。

我们将使用 Rounak Banik 的 电影数据集,这是 Kaggle 上的一个知名公共数据集。该数据集包含 TMDB 中超过 45,000 部电影的元数据,包括演员、工作人员、关键字、评分等。

9e3a1dc4c286af1b.png

若要构建可靠且有效的电影推荐聊天机器人,必须先从清晰、一致且结构化的数据入手。虽然 Kaggle 的电影数据集是一项丰富的资源,包含超过 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 命令导入电影元数据。以下示例创建了具有标题、简介、语言和运行时等关键属性的电影节点:

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 加载完整图

我们建议您使用此 Codelab 中提供的自动化 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. 生成和加载嵌入以执行向量相似度搜索

为了在聊天机器人中启用语义搜索,我们需要为电影简介生成向量嵌入。这些嵌入会将文本数据转换为可比较相似度的数值向量,这样即使查询与影视内容的标题或说明不完全匹配,聊天机器人也能检索出相关影视内容。

⚠️ 关于效果的注意事项

实时为数千条电影说明生成嵌入不仅耗时,而且耗费大量资源。为了让此 Codelab 高效且易于使用,我们使用 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 读取嵌入矢量,并将其作为属性 (m.embedding) 附加到每个 Movie 节点。

方案 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 实现的,后者是一个用于构建基于 Web 的界面的轻量级框架。主要逻辑位于 chatbot.py 脚本中,该脚本会连接到 Neo4j AuraDB 实例,并根据自然语言提示对电影嵌入进行向量相似度搜索

聊天机器人使用 Gemini 优化查询和格式化回答,从而提升用户体验。搜索结果是通过组合图形上下文和向量相似度从 Neo4j 返回的。

在本地运行聊天机器人

如需启动聊天机器人,请激活您的虚拟环境(如果尚未激活),然后运行以下命令:

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 电影推荐系统,该系统结合了 Vertex AI 嵌入,并采用了知识图谱LLM (Gemini)语义搜索的最佳实践。

8. (可选)部署到 Google Cloud Run

如果您希望在 Web 上公开访问电影推荐聊天机器人,可以将其部署到 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

在部署之前,请确保所有必需的环境变量(例如Neo4j 凭据、项目设置)在 .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 界面,该界面能够接收查询并以电影推荐的形式做出回应。

备注和提示

  • 确保您的 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,然后点击关停以删除项目。

10. 恭喜

您已成功使用 Neo4jVertex AIGemini 构建并部署了依托图谱的增强型生成式 AI 电影推荐聊天机器人。通过将 Neo4j 的丰富建模功能与 Vertex AI 嵌入的语义强大功能以及 Gemini 的对话智能相结合,您可以创建一个直观、智能的系统,该系统能够理解自然语言查询并返回与情境相关的电影推荐。

在整个 Codelab 中,您将:

  • 基于真实的电影数据集创建了丰富的互联知识图谱
  • 生成并集成了矢量嵌入,以实现语义相似度搜索
  • 利用 Gemini 实现自然语言互动
  • 使用 Gradio 构建了简单而强大的聊天机器人界面
  • 可选使用 Google Cloud Run 部署应用,以实现可伸缩性和访问

这种方法不仅适用于电影,同样的架构还可扩展到图书、音乐、商品、学术论文或关系和语义至关重要的任何领域。随着 Gemini 等多模态 GenAI 模型的不断发展,您将能够通过更深入的理解、个性化互动和多格式输出来丰富您的应用。

不断探索、不断构建,同时别忘了及时了解 Neo4jVertex AIGoogle Cloud 的最新动态,以便将您的智能应用提升到新的水平!

参考文档