将 QueryData 与应用集成

本教程介绍了如何使用 Google Cloud 控制台在与 MongoDB 兼容的 Firestore 中设置和使用 QueryData ,并将其与您的应用集成。了解如何构建 上下文集 文件、创建使用上下文集文件的上下文集、使用 MCP Toolbox 调用 Conversational Analytics API 中的 QueryData 方法,为自然语言问题生成与 MongoDB 兼容的查询语言 (MQL) 查询,并将其与您的应用集成。

如需了解详情,请参阅 QueryData 概览。

目标

  • 创建数据库并填充数据。
  • 使用上下文工程智能体构建上下文集文件。
  • 创建上下文集并上传上下文集文件。
  • 在与 MongoDB 兼容的 Firestore Studio 中测试 QueryData 并生成 MQL 查询。
  • 使用 MCP Toolbox 中的 Gemini 数据分析 QueryData 工具将 QueryData 与您的应用集成。
  • 使用值搜索查询为 LLM 回答添加接地。

费用

在本文档中,您将使用的以下收费组件: Google Cloud

您可使用价格计算器根据您的预计使用量来估算费用。

新 Google Cloud 用户可能有资格申请免费试用。

为避免继续计费,请在完成本文档中的任务后删除您创建的资源。如需了解详情,请参阅清理。

准备工作

在创建上下文集之前,请完成以下前提条件。

启用必需服务

为您的项目启用以下服务:

准备 Firestore 数据库

确保您拥有与 MongoDB 兼容的 Firestore 企业版数据库。

如果您要尝试本页面上的示例,建议您为此目的创建一个新数据库。如需了解详情,请参阅 创建和管理数据库。

所需的角色和权限

  • 在项目级向 IAM 用户授予 roles/datastore.viewer 和 roles/geminidataanalytics.queryDataUser 角色。 如需了解详情,请参阅 为项目添加 IAM 政策绑定。

填充 flights 和 airports 集合

在本部分中,您将使用提供的 MQL 脚本填充 flights 和 airports 集合。

  1. 在 Google Cloud 控制台中,前往 Firestore 页面。

    转到 Firestore

  2. 从列表中选择数据库。例如,如果您之前创建了一个新数据库,请选择该数据库。该数据库必须是与 MongoDB 兼容的企业版数据库。

  3. 在导航菜单中,点击 Firestore Studio 。

  4. 点击新的 MQL 编辑器标签页 或新标签页 以打开新标签页。

  5. 运行以下脚本以填充 airports 集合。确保未选中只读 选项。

  6. 运行以下脚本以填充 flights 集合。确保未选中只读 选项。

在 Firestore Studio 中创建上下文集

在本部分中,创建一个名为 flights-assistant 的上下文集。此上下文集不包含任何上传到其中的上下文集文件。

  1. 在 Google Cloud 控制台中,前往 Firestore 页面。

    转到 Firestore

  2. 从列表中选择数据库。该数据库必须是处于 MongoDB 兼容模式的企业版数据库。

  3. 在导航菜单中,点击 Firestore Studio 。

  4. 在探索器窗格中,点击上下文集旁边的更多操作 ()。

  5. 点击创建上下文集 。

  6. 在上下文集名称 中,输入flights-assistant。

  7. 点击创建 。

在 Studio 中测试 QueryData

在本部分中,通过提出自然语言问题来使用 flights-assistant 上下文集,以生成 MQL 查询。由于上下文集没有任何上传到其中的上下文集文件,因此即使提出包含上下文(例如 nighttime traffic)的问题后,QueryData 也会生成次优查询。

  1. 在探索器窗格中,点击上下文集旁边的更多操作 ()。
  2. 点击测试上下文集 。
  3. 在查询编辑器中,点击使用 QueryData 生成 MQL,其中包含:flights-assistant 。
  4. 输入以下自然语言问题以生成 MQL 查询,然后点击生成 。

    Find flights from SFO to JFK.
    

    查看 MQL 查询。请注意,QueryData 会为此明确的问题生成正确的 MQL。

      db.flights.find({"departure_airport": "SFO", "arrival_airport": "JFK"})
    
  5. 在使用 QueryData 生成 MQL,其中包含:flights-assistant 窗口中,点击修改 。

  6. 输入以下自然语言问题以生成 MQL 查询,然后点击更新 。

    Tell me flights that can help me beat nighttime traffic if traveling from New York
    

    数据库无法理解术语 nighttime traffic。这可能会阻止其生成 MQL 查询,或者导致其生成忽略该术语的查询,如以下查询所示。

    // The database schema does not contain information about traffic.
    // Returning all flights departing from New York airports.
    db.flights.find({
      $and: [
        {
          "departure_airport": {"$regex": "New York", "$options": "i"}
        },
        {
          "$or": [
            {"departure_time": {"$exists": true}},
            {"arrival_time": {"$exists": true}}
          ]
        }
      ]
    })
    

为上下文集生成上下文

在本部分中,您将准备环境并创建一个上下文文件,以帮助提高上下文集的查询功能。

设置环境

在开始生成上下文之前,您必须准备好环境。

如需设置环境,请执行以下步骤:

  1. 安装 Antigravity CLI。如需了解详情,请参阅 Antigravity CLI 使用入门。
  2. 安装 Google Cloud CLI。
  3. 设置应用默认凭据 (ADC)。在终端中运行以下命令以进行身份验证并选择您的项目:

    gcloud auth application-default login
  4. 安装 uv( Python 软件包和项目管理器),这是上下文工程智能体的前提条件。如果您的系统上还没有 Python,uv 可以为您安装。

  5. 安装上下文工程智能体:

    agy plugin install https://github.com/GoogleCloudPlatform/db-context-enrichment/tree/main/plugin
  6. 在终端中,启动 Antigravity CLI。

    agy
  7. 使用 MCP Toolbox 设置用于生成上下文的数据库连接。该连接在 tools.yaml 配置文件中定义。

    如需在当前目录中创建 tools.yaml 配置文件,请输入提示,例如:

    Help me set up context generation for a Firestore database with MongoDB compatibility.
    

    按照技能提供的说明操作。如需详细了解 tools.yaml 文件,请参阅 MCP Toolbox 文档。

  8. 如需在创建 tools.yaml 文件后重新加载配置,请在 Antigravity CLI 中运行以下命令,然后按照说明重新加载 Toolbox MCP 服务器:

    /mcp
    1. 选择 db-context-engineering_toolbox。

    2. 选择 Restart。

  9. 验证 MCP Toolbox 和上下文工程智能体插件是否已连接并可供使用。

    /mcp

生成模板上下文

在本部分中,为了解决上一部分中 QueryData 无法识别术语 nighttime traffic 的问题,请在上下文集文件中将该术语定义为在 5:00 PM 和 7:00 PM 之间发生的流量。

如需生成模板上下文,请执行以下步骤:

  1. 在 Antigravity CLI 中输入以下提示:

    Generate a template for the question: "Tell me flights that can help me beat nighttime traffic if traveling from New York" with the following MQL query:
    
    db.flights.aggregate([
      {
        "$lookup": {
          "from": "airports",
          "localField": "departure_airport",
          "foreignField": "iata",
          "as": "departure_airport_info",
          "pipeline": [{ "$project": { "_id": 0, "name": 1, "city": 1 } }]
        }
      },
      { "$unwind": { "path": "$departure_airport_info" } },
      {
        "$match": {
          "$expr": {
            "$and": [
              { "$eq": ["$departure_airport_info.city", "New York"] },
              {
                "$or": [
                  { "$lte": [{ "$hour": "$departure_time" }, 17] },
                  { "$gte": [{ "$hour": "$departure_time" }, 19] }
                ]
              }
            ]
          }
        }
      },
    ])
    
  2. 智能体会将您的输入转换为特定格式,从而提高上下文集在各种用户查询中的性能。如需了解详情,请参阅上下文集概览。

  3. 查看生成的查询模板。您可以将查询模板另存为新的智能体上下文文件,也可以将其附加到现有的智能体上下文文件。

  4. 提示智能体保存模板:

    Save it to context_set.json.
    

    智能体会在同一目录中创建该文件,其中包含以下内容:

    {
      "templates": [
        {
          "nl_query": "Tell me flights that can help me beat nighttime traffic if traveling from New York",
          "sql": "db.flights.aggregate([\n  {\n    \"$lookup\": {\n      \"from\": \"airports\",\n      \"localField\": \"departure_airport\",\n      \"foreignField\": \"iata\",\n      \"as\": \"departure_airport_info\",\n      \"pipeline\": [{ \"$project\": { \"_id\": 0, \"name\": 1, \"city\": 1 } }]\n    }\n  },\n  { \"$unwind\": { \"path\": \"$departure_airport_info\" } },\n  {\n    \"$match\": {\n      \"$expr\": {\n        \"$and\": [\n          { \"$eq\": [\"$departure_airport_info.city\", \"New York\"] },\n          {\n            \"$or\": [\n              { \"$lte\": [{ \"$hour\": \"$departure_time\" }, 17] },\n              { \"$gte\": [{ \"$hour\": \"$departure_time\" }, 19] }\n            ]\n          }\n        ]\n      }\n    }\n  }\n])",
          "intent": "Tell me flights that can help me beat nighttime traffic if traveling from New York",
          "manifest": "Tell me flights that can help me beat nighttime traffic if traveling from a given city",
          "parameterized": {
            "parameterized_sql": "db.flights.aggregate([\n  {\n    \"$lookup\": {\n      \"from\": \"airports\",\n      \"localField\": \"departure_airport\",\n      \"foreignField\": \"iata\",\n      \"as\": \"departure_airport_info\",\n      \"pipeline\": [{ \"$project\": { \"_id\": 0, \"name\": 1, \"city\": 1 } }]\n    }\n  },\n  { \"$unwind\": { \"path\": \"$departure_airport_info\" } },\n  {\n    \"$match\": {\n      \"$expr\": {\n        \"$and\": [\n          { \"$eq\": [\"$departure_airport_info.city\", \"$1\"] },\n          {\n            \"$or\": [\n              { \"$lte\": [{ \"$hour\": \"$departure_time\" }, 17] },\n              { \"$gte\": [{ \"$hour\": \"$departure_time\" }, 19] }\n            ]\n          }\n        ]\n      }\n    }\n  }\n])",
            "parameterized_intent": "Tell me flights that can help me beat nighttime traffic if traveling from $1"
          }
        }
      ]
    }
    

将上下文集文件上传到 QueryData

在本部分中,您将上下文集文件上传到 QueryData,以便提高 QueryData 在数据库上的 MQL 生成功能。

如需上传上下文,请执行以下步骤:

  1. 在 Google Cloud 控制台中,前往 Firestore 页面。

    转到 Firestore

  2. 从列表中选择数据库。该数据库必须是处于 MongoDB 兼容模式的企业版数据库。

  3. 在导航菜单中,点击 Firestore Studio 。

  4. 在探索器窗格中,点击上下文集旁边的操作 () 图标。

  5. 点击修改上下文集 。

  6. 在上传上下文集文件 部分中,点击浏览 ,然后选择之前生成的上下文集文件。

  7. 点击保存 。

使用 QueryData 生成 MQL 查询

在本部分中,您将使用上传的上下文集文件提出自然语言问题。这样,您就可以验证 QueryData 是否正确理解并应用了 nighttime traffic 等术语和其他相关短语的定义。

如需生成 MQL 查询,请执行以下步骤:

  1. 在探索器 窗格中,点击上下文集旁边的更多操作 () 。
  2. 点击测试上下文集 。
  3. 在查询编辑器中,点击使用 QueryData 生成 MQL,其中包含:flights-assistant 。
  4. 输入以下自然语言问题以生成 MQL 查询,然后点击生成 。

    Tell me flights that can help me beat nighttime traffic if traveling from New York
    

    生成的 MQL 查询类似于以下内容:

    // Tell me flights that can help me beat nighttime traffic if traveling from New York
    db.flights.aggregate([
      {
        "$lookup": {
          "from": "airports",
          "localField": "departure_airport",
          "foreignField": "iata",
          "as": "departure_airport_info",
          "pipeline": [{ "$project": { "_id": 0, "name": 1, "city": 1 } }]
        }
      },
      { "$unwind": { "path": "$departure_airport_info" } },
      {
        "$match": {
          "$expr": {
            "$and": [
              { "$eq": ["$departure_airport_info.city", "New York"] },
              {
                "$or": [
                  { "$lte": [{ "$hour": "$departure_time" }, 17] },
                  { "$gte": [{ "$hour": "$departure_time" }, 19] }
                ]
              }
            ]
          }
        }
      }
    ])
    

    这与您添加到 QueryData 上下文中的问题相同。请注意,QueryData 现在可以准确解读术语 nighttime traffic。

    虽然上下文源自一个特定问题,但 QueryData 会使用它来增强对各种类似问题的 MQL 生成。

  5. 在使用 QueryData 生成 MQL,其中包含:flights-assistant 窗口中,点击修改 。

  6. 输入以下类似问题以生成 MQL 查询,然后点击更新 。

    What are the flights that can help me avoid evening traffic if departing from Boston
    

    由于该问题将术语 nighttime traffic 替换为类似术语 evening traffic,因此 QueryData 通过应用相同的解读为该问题提供一致的回答。

    生成的 MQL 查询类似于以下内容:

    // What are the flights that can help me avoid evening traffic if departing from Boston
    db.flights.aggregate([
      {
        "$lookup": {
          "from": "airports",
          "localField": "departure_airport",
          "foreignField": "iata",
          "as": "departure_airport_info",
          "pipeline": [{ "$project": { "_id": 0, "name": 1, "city": 1 } }]
        }
      },
      { "$unwind": { "path": "$departure_airport_info" } },
      {
        "$match": {
          "$expr": {
            "$and": [
              { "$eq": ["$departure_airport_info.city", "Boston"] },
              {
                "$or": [
                  { "$lte": [{ "$hour": "$departure_time" }, 17] },
                  { "$gte": [{ "$hour": "$departure_time" }, 19] }
                ]
              }
            ]
          }
        }
      }
    ])
    

将 QueryData 与您的应用集成

在本部分中,您将为航班查找应用创建一个数据智能体。此数据智能体为之前创建的 flights 和 airports 表提供对话界面。它还介绍了如何使用 智能体开发套件 (ADK)、Gemini Data Analytics QueryData MCP 工具和上下文集来创建此数据智能体并将其集成到您的应用中,以提高回答的质量。

  1. 下载 MCP Toolbox 1.14.0 版或更高版本。MCP Toolbox 将数据智能体公开为供应用连接的工具。MCP Toolbox 不同于您之前安装的上下文工程智能体,后者用于生成上下文。

  2. 设置应用默认凭证 (ADC)。

    gcloud auth application-default login
  3. 找到您之前创建的上下文集的 ID。如需详细了解如何查找上下文集 ID,请参阅 查找上下文集 ID。

  4. 将以下内容附加到 tools.yaml 配置,以使用 MCP Toolbox 连接到数据智能体。如需了解详情,请参阅 Gemini 数据分析来源 和 Gemini 数据分析 QueryData 工具。

    kind: source
    name: gda-api-source
    type: cloud-gemini-data-analytics
    projectId: "PROJECT_ID"
    ---
    kind: tool
    name: cloud_gda_query_tool
    type: cloud-gemini-data-analytics-query
    source: gda-api-source
    description: Use this tool to send natural language queries to the Gemini Data Analytics API and receive MongoDB-compatible query language (MQL), natural language answers, and explanations.
    location: "REGION_ID"
    context:
      datasourceReferences:
        firestoreReference:
          databaseReference:
            projectId: "PROJECT_ID"
            databaseId: "DATABASE_ID"
          agentContextReference:
            contextSetId: "CONTEXT_SET_ID"
    generationOptions:
      generateQueryResult: true
      generateNaturalLanguageAnswer: true
      generateExplanation: true
      generateDisambiguationQuestion: true
    

    替换以下内容:

    • PROJECT_ID:您的 Google Cloud 项目 ID。
    • DATABASE_ID:要连接的数据库名称。
    • REGION_ID:数据库的区域(例如 us-central1)。
    • CONTEXT_SET_ID:上下文集 ID。如需详细了解如何查找上下文集 ID,请参阅 查找上下文集 ID。
  5. 使用 tools.yaml 文件运行 MCP Toolbox 服务器。

    ./toolbox --config autoctx/tools.yaml
  6. 创建一个 ADK 应用,该应用使用 MCP Toolbox 的 Python SDK 调用 Gemini 数据分析 QueryData 工具。如需详细了解如何使用 MCP Toolbox 的 Python SDK,请参阅 Toolbox 快速入门;如需了解 Python ADK,请参阅 ADK 快速入门。

    1. 创建一个目录来存储应用,例如 flight-assistant-app。
    2. 将目录更改为 flight-assistant-app 目录。

      mkdir flight-assistant-app
      cd flight-assistant-app
    3. 在 flight-assistant-app 目录下运行以下命令,以创建虚拟环境并安装所需组件。

      uv init
      uv add google-adk toolbox-core google-genai
    4. 设置 ADK 智能体。

      1. 创建 ADK 智能体。

        uv run adk create my_agent
      2. 选择 gemini-3.8-flash 模型或更新的模型。

      3. 选择 Google AI,然后输入您的 Gemini API 密钥。如需详细了解如何查找 API 密钥,请参阅使用 Gemini API 密钥。(或者,如果您不需要免费试用,可以选择 Vertex AI 并指定已启用结算功能的 Google Cloud 项目)。

    5. 将 agent.py 文件的内容替换为以下航班数据助理示例应用代码。

      from typing import cast
      
      from google.adk.agents.llm_agent import Agent
      from google.adk.agents.llm_agent import ToolUnion
      
      from toolbox_core import ToolboxSyncClient
      
      TOOLBOX_URL = "http://127.0.0.1:5000"
      
      INSTRUCTION = """
      # ROLE
      You are a friendly and factual flight data assistant. Your goal is to help users find the best flights for their needs by providing accurate information with a helpful, professional tone.
      - use the Query Data Tool to answer the user's question, if the tool fails to generate a valid query, ask the user to clarify their question.
      
      # OPERATIONAL CONSTRAINTS
      - TOOL LIMITATION: You only have access to the Query Data Tool. Do not claim to have capabilities beyond what this tool provides.
      - TRANSPARENCY POLICY: Maintain a seamless user experience. Never mention that you are using a tool, querying a database, or generating MQL. Frame all responses as your own direct assistance.
      - SCOPE MANAGEMENT: If a user asks for something beyond your capabilities, politely state that you cannot perform that specific task. Guide the user towards what you can help with.
      
      # COMMUNICATION STYLE
      - Be concise and scannable when listing answers.
      - Maintain a helpful, professional persona.
      
      =====
      
      # QUERY DATA TOOL
      
      Inputs:
      1. query: A natural language formulation of a database query.
      
      Outputs: (all optional)
      1. disambiguation_question: Clarification questions or comments where the tool needs the users' input.
      2. generated_query: The generated query for the user query.
      3. intent_explanation: An explanation for why the tool produced `generated_query`.
      4. query_result: The result of executing `generated_query`.
      5. natural_language_answer: The natural language answer that summarizes the `query` and `query_result`.
      
      Usage guidance:
      1. If `disambiguation_question` is produced, then solicit the needed inputs from the user and try the tool with a new `query` that has the needed clarification.
      2. If `natural_language_answer` is produced, use `intent_explanation` and `generated_query` to see if you need to clarify any assumptions for the user.
      3. If the tool output indicates failure or empty results, explain that clearly using the provided reasoning.
      """
      
      client = ToolboxSyncClient(TOOLBOX_URL)
      
      mcp_tool = client.load_tool("cloud_gda_query_tool")
      
      root_agent = Agent(
          model="gemini-3.8-flash",  # Or newer.
          name="root_agent",
          instruction=INSTRUCTION,
          tools=cast(list[ToolUnion], [mcp_tool]),
      )
      
  7. 在 flight-assistant-app 目录下运行以下命令,以启动应用并访问 http://127.0.0.1:8000 处的 ADK Web 服务器。

    uv run adk web --port 8000
  8. 输入任意文本(例如 hello),开始与智能体互动。

    ADK 智能体会回答一般问题并调用所需的 MCP 工具。

  9. 输入以下与航班相关的问题。

    How many flights depart from the west side?
    

    系统会调用 MCP 工具来回答此问题。不过,由于术语 the west 含义模糊且未指定任何机场,因此 MCP 工具会返回一个消除歧义的问题,智能体可以使用该问题来构建回答。

    I cannot determine how many flights depart from the 'west side' as the database does not contain information about which airports are considered to be on the 'west side'. However, I can help you with questions like:
    
    1. How many flights depart from a specific airport?
    
    2. What are the departure airports for all flights?
    
    3. How many flights depart from each airport? Would you like to rephrase your question based on these options?
    
  10. 输入与为智能体生成的查询模板中的问题类似的问题。

    Help me find flights from San Francisco that avoid the evening rush hour.
    

    根据之前添加的 QueryData 上下文,MCP 工具了解到 evening traffic 发生在下午 5 点到晚上 7 点之间。MCP 工具会返回相关数据,供智能体在构建回答时使用。

    Here are the flights departing from San Francisco that avoid the evening rush hour (defined as 5 PM to 7 PM):
    
    * UA 1532 departing at 05:50:00
    * UA 1158 departing at 05:57:00
    * CY 922 departing at 06:38:00
    * OO 5441 departing at 07:08:00
    * UA 616 departing at 07:14:00
    * AA 24 departing at 07:14:00
    * B6 434 departing at 08:00:00
    * AA 242 departing at 08:18:00
    * UA 1739 departing at 08:22:00
    * OO 6336 departing at 08:32:00
    * US 1784 departing at 08:47:00
    * DL 1631 departing at 09:00:00
    * DL 1106 departing at 09:06:00
    * OO 5427 departing at 09:06:00
    * CY 352 departing at 09:25:00
    

迭代智能体性能

借助 ADK Web 界面,您可以检查 Gemini 数据分析 QueryData MCP 工具的请求和回答。您可以使用此回答来观察工具回答(例如生成的 MQL 查询、结果集、意图说明、消除歧义的问题和自然语言回答),以帮助您确认智能体回答的正确性。

例如,对于您之前输入的文本 How many flights depart from the west side?,点击智能体气泡。在左侧导航栏的 Event 标签页中,展开 functionResponse 以查看以下回答。

"{"disambiguationQuestion": ["[NOT_ENOUGH_INFO] The database schema does not
contain information about which airports are on the 'west side'. Therefore, I
cannot determine how many flights depart from the west side.Possible alternative
questions: 1. How many flights depart from a specific airport? 2. What are the
departure airports for all flights? 3. How many flights depart from each
airport?"]}"

提高回答的准确性

您可以通过添加其他上下文来不断提高 Gemini 数据分析 QueryData 工具回答的准确性。使用上下文工程智能体生成上下文,然后将更新后的上下文集文件上传到现有的 flights-assistant 数据智能体。如需了解详情,请参阅在 Firestore Studio 中管理上下文集。控制台会在您上传新上下文后立即提取该上下文,让您无需停机即可提高智能体的准确性。

多个智能体

在开发环境中,您可以通过在 tools.yaml 文件中为工具分配不同的名称,对多个数据智能体上下文执行 A/B 测试。例如,您可以创建唯一的 tools.yaml 配置,方法是定义两个具有不同名称的 cloud-gemini-data-analytics-query 工具,例如 cloud_gda_query_tool_v1 和 cloud_gda_query_tool_v2。通过此设置,您可以实现应用逻辑,该逻辑通过选择相应的工具名称以编程方式选择所需的上下文版本。

以下示例 tools.yaml 展示了如何为数据库来源设置多个数据智能体:

kind: source
name: gda-api-source
type: cloud-gemini-data-analytics
projectId: PROJECT_ID
---
kind: tool
name: cloud_gda_query_tool_v1
type: cloud-gemini-data-analytics-query
source: gda-api-source
context:
  datasourceReferences:
    DB_SOURCE:
      databaseReference: ...
      agentContextReference:
        contextSetId: "V1_YOUR_CONTEXT_SET_ID"
generationOptions: ...
---
kind: tool
name: cloud_gda_query_tool_v2
type: cloud-gemini-data-analytics-query
source: gda-api-source
context:
  datasourceReferences:
    DB_SOURCE:
      databaseReference: ...
      agentContextReference:
        contextSetId: "V2_YOUR_CONTEXT_SET_ID"
generationOptions: ...

替换以下内容:

  • PROJECT_ID:您的 Google Cloud 项目 ID。
  • V1_YOUR_CONTEXT_SET_ID:版本 1 的上下文集 ID。
  • V2_YOUR_CONTEXT_SET_ID:版本 2 的上下文集 ID。

访问权限控制和安全注意事项

在预览版发布中,与 MongoDB 兼容的 Firestore 的 QueryData 不支持精细的访问权限控制。 将 QueryData 与您的应用集成时,请考虑如何控制数据访问:

  • 数据库级粒度:可以使用数据库级 IAM Condition 控制访问粒度。不过,在集合、文档或字段级没有精细的访问权限控制。
  • 完整数据库读取权限:数据智能体拥有对整个 数据库的读取权限。智能体生成的任何查询都可以从该数据库中的所有集合、文档和字段读取数据。数据智能体不受 Firebase 安全规则的限制。
  • 应用用户范围:由于不支持精细的访问权限控制,因此您无法根据应用用户身份将数据访问限制为特定集合、文档 或字段。QueryData 生成的查询会使用应用所用的数据库用户或服务账号的完整读取权限执行。

清理

完成本教程后,您应删除创建的资源,以免产生持续费用。 以下部分介绍如何删除这些资源。

删除上下文集

在删除数据库之前,请删除您创建的上下文集。

  1. 在 Google Cloud 控制台中,前往 Firestore 页面。

    转到 Firestore

  2. 从列表中选择数据库。该数据库必须是处于 MongoDB 兼容模式的企业版数据库。

  3. 在导航菜单中,点击 Firestore Studio 。

  4. 在探索器窗格中,点击上下文集旁边的更多操作 ()。

  5. 在删除上下文集 窗口中,在确认框中输入 flight-assistant。

  6. 点击确认 。

删除数据库

删除您在准备工作部分中创建的数据库时,您创建的所有对象也会被删除。

  1. 在 Google Cloud 控制台中,前往 Firestore 页面。

    转到 Firestore

  2. 找到要删除的数据库名称对应的行。

  3. 点击操作 () 图标,然后点击删除。

  4. 输入数据库名称,然后点击删除 ,以确认您要删除该数据库。

后续步骤