Docs 菜单
Docs 主页
/ /

使用 Vertex AI扩展进行自然语言MongoDB查询

注意

Vertex AI 扩展程序目前处于预览阶段,可能会有所变动。请联系您的 Google Cloud 代表,了解如何访问此功能。

除了结合使用 Vertex AI和MongoDB Vector Search 来实现 RAG 之外,您还可以使用 Vertex AI扩展 来进一步自定义使用 Vertex AI模型与Atlas交互的方式。在本教程中,您将创建一个 Vertex AI扩展,该扩展允许您使用自然语言实时查询Atlas中的数据。

使用 Vertex AI Extensions 和 MongoDB Atlas 的工作流图
点击放大

本教程使用以下组件使 Atlas 能够进行自然语言查询:

  • Google Cloud Platform Vertex AI SDK,用于管理AI模型并为 Vertex AI启用自定义扩展。本教程使用 Gemini 1.5Pro 模型。

  • Google Cloud Run 用于部署在 Vertex AI 和 Atlas 之间作为 API 终结点的函数。

  • MongoDB API的 OpenAPI 3 规范,用于定义自然语言查询如何映射到MongoDB操作。要学习;了解更多信息,请参阅OpenAPI 规范。

  • Vertex AI扩展,可启用Vertex AI与Atlas的实时交互,并配置自然语言查询的处理方式。

  • Google Cloud Secrets Manager 用于存储您的 MongoDB API 密钥。

注意

有关详细的代码和设置说明,请参阅此示例的 GitHub 存储库

开始之前,您必须具备以下条件:

  • MongoDB Atlas 账户。要注册,请使用 Google Cloud Marketplace 注册新账户。

  • 已加载示例数据集的 Atlas 集群。如需了解详情,请参阅创建集群。

  • 一个Google Cloud Platform项目。

  • 用于存储 OpenAPI 规范的 Google Cloud Storage 存储桶

  • 已为您的项目启用以下 API:

    • Cloud Build API

    • Cloud Functions API

    • Cloud Logging API

    • Cloud Pub/Sub API

  • Colab Enterprise 环境。

在本节中,您将创建一个 Google Cloud Run 函数,作为 Vertex AI 扩展和 Atlas 集群之间的 API 终结点。该函数处理身份验证,连接到 Atlas 集群,并根据来自 Vertex AI 的请求执行数据库操作。

1

在Google Cloud Platform控制台中,打开 Cloud Run 页面并单击 Write a function

2
  1. 指定函数名称和要部署函数的Google Cloud Platform地区。

  2. 选择最新可用的 Python 版本作为 Runtime

  3. Authentication section 中,选择 Allow unauthenticated invocations

  4. 对其余设置使用默认值,然后单击 Next

有关详细配置步骤,请参阅 Cloud Run 文档。

3

将以下代码粘贴到各自的文件中:

4
  1. Entry Point 重命名为 mongodb_crud

  2. 单击 Deploy 以部署函数。

  3. 复制并存储 HTTPS 终结点,以便在本地触发云函数。

  4. 导航到该函数的 Details 页面,复制并存储该函数使用的服务帐户名称。

在本节中,您将创建一个 Vertex AI 扩展,该扩展允许使用 Gemini 1.5 Pro 模型在 Atlas 中对您的数据进行自然语言查询。此扩展使用 OpenAPI 规范和您创建的 Cloud Run函数,将自然语言映射到数据库操作,并在 Atlas 中查询您的数据。

要实现此扩展,您可以使用交互式 Python 笔记本,它允许您单独运行 Python 代码片段。在本教程中,您将在 Colab 企业环境中创建名为 mongodb-vertex-ai-extension.ipynb 的笔记本。

将以下代码复制并粘贴到您的笔记本中。

1
  1. 对您的 Google Cloud 账号进行身份验证并设置群组 ID。

    from google.colab import auth
    auth.authenticate_user("GCP project id")
    !gcloud config set project {"GCP project id"}
  2. 安装所需的依赖项。

    !pip install --force-reinstall --quiet google_cloud_aiplatform
    !pip install --force-reinstall --quiet langchain==0.0.298
    !pip install --upgrade google-auth
    !pip install bigframes==0.26.0
  3. 重新启动内核。

    import IPython
    app = IPython.Application.instance()
    app.kernel.do_shutdown(True)
  4. 设置环境变量。

    将示例值替换为与您的项目相对应的正确值。

    import os
    # These are sample values; replace them with the correct values that correspond to your project
    os.environ['PROJECT_ID'] = 'gcp project id' # GCP Project ID
    os.environ['REGION'] = "us-central1" # Project Region
    os.environ['STAGING_BUCKET'] = "gs://vertexai_extensions" # GCS Bucket location
    os.environ['EXTENSION_DISPLAY_HOME'] = "MongoDb Vertex API Interpreter" # Extension Config Display Name
    os.environ['EXTENSION_DESCRIPTION'] = "This extension makes api call to mongodb to do all crud operations" # Extension Config Description
    os.environ['MANIFEST_NAME'] = "mdb_crud_interpreter" # OPEN API Spec Config Name
    os.environ['MANIFEST_DESCRIPTION'] = "This extension makes api call to mongodb to do all crud operations" # OPEN API Spec Config Description
    os.environ['OPENAPI_GCS_URI'] = "gs://vertexai_extensions/mongodbopenapispec.yaml" # OPEN API GCS URI
    os.environ['API_SECRET_LOCATION'] = "projects/787220387490/secrets/mdbapikey/versions/1" # API KEY secret location
    os.environ['LLM_MODEL'] = "gemini-1.5-pro" # LLM Config
2

从 GitHub 下载 Open API 规范,并将 YAML 文件上传到 Google Cloud Storage 存储桶。

from google.cloud import aiplatform
from google.cloud.aiplatform.private_preview import llm_extension
PROJECT_ID = os.environ['PROJECT_ID']
REGION = os.environ['REGION']
STAGING_BUCKET = os.environ['STAGING_BUCKET']
aiplatform.init(
project=PROJECT_ID,
location=REGION,
staging_bucket=STAGING_BUCKET,
)
3

以下清单是一个结构化JSON对象,用于配置扩展的关键组件。将 <service-account> 替换为 Cloud Run function 使用的服务帐号名称。

from google.cloud import aiplatform
from vertexai.preview import extensions
mdb_crud = extensions.Extension.create(
display_name = os.environ['EXTENSION_DISPLAY_HOME'],
# Optional.
description = os.environ['EXTENSION_DESCRIPTION'],
manifest = {
"name": os.environ['MANIFEST_NAME'],
"description": os.environ['MANIFEST_DESCRIPTION'],
"api_spec": {
"open_api_gcs_uri": (
os.environ['OPENAPI_GCS_URI']
),
},
"authConfig": {
"authType": "OAUTH",
"oauthConfig": {"service_account": "<service-account>"}
},
},
)
mdb_crud
4

验证扩展并打印操作模式和参数:

print("Name:", mdb_crud.gca_resource.name)
print("Display Name:", mdb_crud.gca_resource.display_name)
print("Description:", mdb_crud.gca_resource.description)
import pprint
pprint.pprint(mdb_crud.operation_schemas())

Vertex AI 中,单击左侧导航菜单中的 Extensions。您的新扩展名为 MongoDB Vertex API Interpreter,显示在扩展列表中。

以下示例演示了您可以在 Atlas 中用于查询数据的两种不同的自然语言查询:

后退

Google Vertex AI

在此页面上