1. 简介
概览
在本实验中,您将围绕房地产场景探索 BigQuery 中的多模态数据科学工作流。您将从房屋房源及其图片的原始数据集开始,使用 AI 丰富这些数据以提取视觉特征,构建聚类模型以发现不同的细分市场,最后使用向量嵌入创建强大的视觉搜索工具。
您将使用 Data Science Agent 通过简单的文本提示自动生成基于 Python 的聚类模型,从而将这种 SQL 原生工作流与现代生成式 AI 方法进行比较。
学习内容
- 准备原始数据集,其中包含房地产房源信息,以便通过特征工程进行分析。
- 使用 BigQuery 的 AI 函数分析房屋照片中的关键视觉特征,从而丰富房源。
- 使用 BigQuery 机器学习 (BQML) 构建并评估 K-means 模型,将房源划分为不同的聚类。
- 使用 Data Science Agent 通过 Python 生成聚类模型,自动创建模型。
- 为房屋图片生成嵌入,以支持视觉搜索工具,通过文本或图片查询查找类似的房屋。
前提条件
在开始本实验之前,您应该先熟悉:
- SQL 和 Python 编程基础知识。
- 在 Jupyter 笔记本中运行 Python 代码。
2. 准备工作
创建 Google Cloud 项目
- 在 Google Cloud 控制台的项目选择器页面上,选择或创建一个 Google Cloud 项目。

- 确保您的 Cloud 项目已启用结算功能。了解如何检查项目是否已启用结算功能。
使用 Cloud Shell 启用 API
Cloud Shell 是在 Google Cloud 中运行的命令行环境,预加载了必要的工具。
- 点击 Google Cloud 控制台顶部的激活 Cloud Shell:

- 连接到 Cloud Shell 后,运行以下命令以验证您在 Cloud Shell 中的身份验证:
gcloud auth list
- 运行以下命令,确认您的项目已配置为可与 gcloud 搭配使用:
gcloud config list project
- 如果项目未设置,请使用以下命令进行设置:
export PROJECT_ID=<YOUR_PROJECT_ID>
gcloud config set project $PROJECT_ID
启用 API
- 运行以下命令以启用所有必需的 API 和服务:
gcloud services enable bigquery.googleapis.com \
bigqueryunified.googleapis.com \
cloudaicompanion.googleapis.com \
aiplatform.googleapis.com
- 成功执行该命令后,您应该会看到类似于以下消息的消息:
Operation "operations/..." finished successfully.
- 退出 Cloud Shell。
3. 在 BigQuery Studio 中打开实验笔记本
界面导航:
- 在 Google Cloud 控制台中,依次前往导航菜单 > BigQuery。

- 在 BigQuery Studio 窗格中,点击下拉箭头按钮,将光标悬停在笔记本上,然后选择上传。

- 选择网址单选按钮,然后输入以下网址:
https://github.com/GoogleCloudPlatform/generative-ai/blob/main/gemini/use-cases/applying-llms-to-data/ai-assisted-data-science/ai-assisted-data-science.ipynb
- 将区域设置为
us-central1,然后点击上传。

- 如需打开笔记本,请点击包含项目 ID 的探索器窗格中的下拉箭头。然后,点击笔记本的下拉菜单。点击笔记本
ai-assisted-data-science。

- (可选)收起 BigQuery 导航菜单和笔记本的目录,以腾出更多空间。

4. 连接到运行时并运行设置代码
- 点击连接。如果系统弹出窗口,请使用您的用户身份授权 Colab Enterprise。笔记本会自动连接到运行时。这可能需要几分钟时间才能完成。

- 建立运行时后,您将看到以下内容:

- 在笔记本中,滚动到设置部分。点击隐藏单元格旁边的“运行”按钮。此命令会在您的项目中创建实验所需的一些资源。此过程可能需要 1 分钟才能完成。在此期间,您可以随时查看设置下的单元。

5. 数据准备和特征工程
在本部分中,您将完成任何数据科学项目中的第一个重要步骤:准备数据。首先,您需要创建一个 BigQuery 数据集来整理工作,然后将 Cloud Storage 中 CSV 文件中的原始房地产 / 住宅数据加载到新表中。
然后,您将把这些原始数据转换为包含新特征的清理后的表。这包括过滤商品详情、创建新的 property_age 特征,以及准备图片数据以进行多模态分析。
6. 利用 AI 函数实现多模态丰富化
现在,您将利用生成式 AI 的强大功能来丰富数据。在本部分中,您将使用 BigQuery 的内置 AI 函数来分析每个房源信息的图片。
通过将 BigQuery 连接到 Gemini 模型,您可以直接使用 SQL 从图片中提取新的有价值的特征(例如房产是否靠近水域以及房屋的简要说明)。
7. 使用 K-Means 聚类进行模型训练
现在,您已拥有新扩充的数据集,可以开始构建机器学习模型了。您的目标是将房源信息划分为不同的群组,为此,您需要使用 BigQuery Machine Learning (BQML) 直接在 BigQuery 中训练 K-means 聚类模型。在此单步操作中,您还可以将模型注册到 Vertex AI Model Registry,从而使其立即在 Google Cloud 上更广泛的 MLOps 生态系统中可用。
如需确认模型已成功注册,您可以按照以下步骤在 Vertex AI Model Registry 中找到该模型:
- 在 Google Cloud 控制台中,点击左上角的导航菜单 (☰)。
- 滚动到 Vertex AI 部分,然后点击 Model Registry。现在,您会看到 BQML 模型与所有其他自定义模型一起列出。

- 在模型列表中,找到名为 housing_clustering 的模型。您可以采取下一步措施,部署到端点,这样一来,您的模型就可以在 BigQuery 环境之外进行实时在线预测。

探索模型注册表后,您可以按照以下步骤返回到 BigQuery 中的 Colab 笔记本:
- 在导航菜单 (☰) 中,依次前往 BigQuery > Studio。
- 展开探索窗格中的菜单,找到您的笔记本并将其打开。
8. 模型评估和预测
训练模型后,下一步是了解模型创建的聚类。在此处,您将使用 ML.EVALUATE 和 ML.CENTROIDS 等 BigQuery Machine Learning 函数来分析模型的质量以及每个细分的定义特征。
然后,使用 ML.PREDICT 将每个住宅分配给一个聚类。通过使用 %%bigquery df 魔法命令运行此查询,您可以将结果存储在名为 df 的 Pandas DataFrame 中。这样一来,数据便可立即用于后续的 Python 步骤。这突显了 Colab Enterprise 中 SQL 和 Python 之间的互操作性。
9. 直观呈现和解读聚类结果
现在,您已将预测结果加载到 DataFrame 中,接下来可以创建可视化图表,让数据更加生动。在本部分中,您将使用 Matplotlib 等热门 Python 库来探索住宅细分之间的差异。
您将创建箱线图和条形图,直观地比较价格和房产年龄等关键特征,从而轻松直观地了解每个聚类。
10. 使用 Gemini 模型生成聚类说明
虽然数值型质心和图表功能强大,但借助生成式 AI,您可以更进一步,为每个住宅细分创建丰富而定性的买家角色。这有助于您了解聚类分析结果不仅是什么,还代表哪些人。
在本部分中,您将首先汇总每个聚类的平均统计信息,例如价格和平方英尺。然后,您会将此数据传递给 Gemini 模型的提示。然后,您指示模型扮演房地产专业人士的角色,并生成详细的摘要,包括每个细分受众群的关键特征和目标买家。最终生成一组清晰且直观易懂的说明,让营销团队能够立即理解这些聚类并采取行动。
您可以根据自己的需要随意更改提示,并尝试查看结果!
11. 使用数据科学代理自动执行建模
现在,您将探索一种强大的替代工作流。您将使用集成的数据科学智能体,而不是手动编写代码,通过单个自然语言提示自动生成完整的聚类模型工作流。
按照以下步骤操作,即可使用智能体生成并运行模型:
- 在 BigQuery Studio 窗格中,点击下拉箭头按钮,将鼠标悬停在笔记本上,然后选择空白笔记本。这样可确保代理的代码不会干扰您的原始实验笔记本。

- 数据科学代理聊天界面随即会在笔记本底部打开。点击移至面板按钮,将聊天固定到右侧。

- 在聊天窗格中开始输入
@listing_multimodal,然后点击表格。这会明确将listings_multimodal表设置为上下文。

- 复制下方的提示,然后将其输入到代理聊天框中。然后,点击发送,将提示提交给智能体。
Use the selected table to generate a k-means clustering model with 3 clusters for housing listings. Then, help me understand the characteristics of each cluster so I can market to them as a real estate professional. Use Python.

- 代理会思考并制定计划。如果您对该方案没有异议,请点击接受并运行。智能体将在一个或多个新单元格中生成 Python 代码。

- 智能体要求您接受并运行其生成的每个代码块。这样可以保持人机协同。您可以随意查看或修改代码,然后继续执行每个步骤,直到完成为止。

- 完成后,只需关闭此新笔记本标签页,然后返回原始
ai-assisted-data-science.ipynb标签页,继续完成实验的最后一部分。
12. 使用嵌入和向量搜索进行多模态搜索
在本最后一部分中,您将直接在 BigQuery 中实现多模态搜索。这样一来,您就可以进行直观的搜索,例如根据文本描述查找房屋,或查找与示例图片相似的住宅。
该流程首先会将每张房屋图片转换为称为“嵌入”的数值表示形式。嵌入可捕获图片的语义含义,让您可以通过比较数值向量来查找相似的商品。
您将使用 multimodalembedding 模型为所有商品详情生成这些向量。创建向量索引以加快查找速度后,您就可以执行两种类型的相似性搜索:文本到图片(查找与描述匹配的住宅)和图片到图片(查找与示例图片相似的住宅)。
您将在 BigQuery 中完成所有这些操作,使用 ML.GENERATE_EMBEDDING 等函数生成嵌入,或使用 VECTOR_SEARCH 进行相似性搜索。
13. 清理
如需清理此项目中使用的所有 Google Cloud 资源,您可以删除 Google Cloud 项目。
或者,您也可以在笔记本的新单元中运行以下代码,以删除您创建的各个资源:
# Delete the BigQuery tables
!bq rm --table -f housing_dataset.listings
!bq rm --table -f housing_dataset.listings_multimodal
!bq rm --table -f housing_dataset.home_embeddings
# Delete the remote model
!bq rm --model -f housing_dataset.gemini
!bq rm --model -f housing_dataset.kmeans_clustering_model
!bq rm --model -f housing_dataset.multimodal_embedding_model
# Delete the remote connection
!bq rm --connection --project_id=$PROJECT_ID --location=us ai_connection
# Delete the BigQuery dataset
!bq rm -r -f $PROJECT_ID:housing_dataset
最后,您可以删除笔记本本身:
- 在 BigQuery Studio 的探索器窗格中,展开您的项目和笔记本节点。
- 点击
ai-assisted-data-science笔记本旁边的三个竖点。 - 选择删除。
14. 恭喜!
恭喜您完成此 Codelab!
所学内容
- 准备原始数据集,其中包含房地产房源信息,以便通过特征工程进行分析。
- 使用 BigQuery 的 AI 函数分析房屋照片中的关键视觉特征,从而丰富房源。
- 使用 BigQuery 机器学习 (BQML) 构建并评估 K-means 模型,将房源细分为不同的聚类。
- 使用 Data Science Agent 通过 Python 生成聚类模型,自动创建模型。
- 为房屋图片生成嵌入,以支持视觉搜索工具,通过文本或图片查询查找类似的房屋。