Troubleshooting of Google Vertex AI Search: Difference between revisions

From LemonWiki共筆
Jump to navigation Jump to search
Line 212: Line 212:
== Further readings ==
== Further readings ==
* [https://www.youtube.com/watch?v=cPJIHHbDdGk&t=1s Building an Enterprise Search app using Vertex AI Search on Google Cloud (Demo) - YouTube]
* [https://www.youtube.com/watch?v=cPJIHHbDdGk&t=1s Building an Enterprise Search app using Vertex AI Search on Google Cloud (Demo) - YouTube]
* [https://cloud.google.com/vertex-ai/generative-ai/docs/grounding/grounding-with-vertex-ai-search Grounding with Vertex AI Search  |  Generative AI on Vertex AI  |  Google Cloud]


== References ==
== References ==

Revision as of 18:59, 18 June 2025

Resolving Issues with Google Vertex AI Search and its API

🌐 Switch language: EN, 漢字


Issues

Troubleshooting: Vertex AI Search: Data Repository Requires Enterprise Features

Error: When creating an application, encountered the error message "This application cannot currently use 4 data stores are..." Expanding the data repository list shows "Website data repository can only be linked to Enterprise version of Vertex AI Search applications"

Solution: When creating the application, enable "Enterprise Edition Features"

Troubleshooting: SearchLite API Blocked" Error in Discovery Engine

Issue Description: When attempting to retrieve search results using Google Vertex AI API[1], the following error occurs:

curl -X POST -H "Content-Type: application/json" \
"https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/servingConfigs/default_search:searchLite?key=API_KEY" \
-d '{
"servingConfig": "projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/servingConfigs/default_search",
"query": "QUERY",
}'

Met the error

{
  "code" : 403,
  "message" : "Requests to this API discoveryengine.googleapis.com method google.cloud.discoveryengine.v1.SearchService.SearchLite are blocked.",
  "status" : "PERMISSION_DENIED",
  "details" : [
    {
      "@type" : "type.googleapis.com/google.rpc.ErrorInfo",
      "reason" : "API_KEY_SERVICE_BLOCKED",
      "domain" : "googleapis.com",
      "metadata" : {
        "service" : "discoveryengine.googleapis.com",
        "methodName" : "google.cloud.discoveryengine.v1.SearchService.SearchLite",
        "apiName" : "discoveryengine.googleapis.com",
        "consumer" : "projects/xxx"
      }
    },
    {
      "@type" : "type.googleapis.com/google.rpc.LocalizedMessage",
      "locale" : "en-US",
      "message" : "Requests to this API discoveryengine.googleapis.com method google.cloud.discoveryengine.v1.SearchService.SearchLite are blocked."
    }
  ]
}

Resolution Steps: Check API Key Restrictions

  • Verify if the key is restricted to specific APIs:
    1. Navigate to the API Key Management page in Google Cloud Console.
    2. Locate the API key being used and check if it is restricted to specific APIs. If the restriction includes discoveryengine.googleapis.com, ensure it is correctly configured.
    3. Remove unnecessary restrictions: If the key is restricted to unrelated IP addresses or applications, remove those restrictions.
  • Enable the Discovery Engine API
    1. Go to the API & Services page in Google Cloud Console.
    2. Search for Discovery Engine API and ensure it is enabled.

Troubleshooting: "Requested Entity Already Exists" Error When Saving Data Stores

Error: When saving site indexing, the following error message appears[2]:

Failed to save sites
Requested entity already exists
Tracking number: <mix of English and numeric characters>

Root Cause: Conflicting URL patterns exist simultaneously in "Specify URL patterns to index":

example.com

and

*.example.com/*

These two patterns conflict with each other, causing the system to treat them as duplicate entities. The detailed linking rules are mentioned in the official documentation:

You can use the operations listed below
Entire site: www.mysite.com/*
Parts of site: www.mysite.com/faq/*
Entire domain: *.mysite.com/*
Quotes for exact match: "www.mysite.com/faq"
Sites without quotes will match any path after the specified address:
www.mysite.com/faq → www.mysite.com/faq*.

Solution: Simply remove one of the patterns to resolve the issue. It's recommended to keep the broader pattern *.example.com/* as it already includes example.com.

Troubleshooting: "Quota exceeded for Search lite requests" Error in Discovery Engine

Issue Description: When using Discovery Engine API to retrieve search results, the following error occurs:

{
  "error" : {
    "code" : 429,
    "message" : "Quota exceeded for quota metric 'Search lite requests' and limit 'Search lite requests per minute' of service 'discoveryengine.googleapis.com' for consumer 'project_number:XXX'.",
    "status" : "RESOURCE_EXHAUSTED",
    ...
  }
}

Root cause:

The metadata in the error response has indicated that the quota value is 100 requests per minute

Resolution Steps: Resolve API Quota Limit Exceedance

Option 1: Increase the delay time between requests

  1. Implement this timing delay in your code to prevent 429 errors. 60 seconds ÷ 100 requests = 0.6 seconds per request e.g. Add a 0.6 ~ 1 second pause between each request to stay within rate limits
  2. Adjust the delay time as needed based on your quota and request patterns

Option 2: Increase quota limit

  1. Go to the Quotas page in Google Cloud Console and find "Search lite requests per minute"
  2. Select the relevant quota, click "EDIT QUOTAS", and submit a request for a higher limit
  3. Wait for Google Cloud Support to review and approve

Option 3: Implement exponential backoff retry mechanism

  1. Detect HTTP 429 errors in your application and set an initial delay (e.g., 1 second)
  2. Increase the delay time with each failed retry (e.g., 2 seconds, 4 seconds, 8 seconds, etc.)
  3. Continue retrying until the request succeeds or maximum retry count is reached


Troubleshooting: Vertex AI Search: Engine Not Found Error

Error: When using Vertex AI Search API, encountering a 404 error:

{
  "error": {
    "code": 404,
    "message": "Engine projects/<YOUR_PROJECT_ID>/locations/global/collections/default_collection/engines/<YOUR_APP_ID> not found.",
    "status": "NOT_FOUND"
  }
}

Solution:

1. Verify the correct APP ID (Engine ID): Open your browser and replace <YOUR_APP_ID> in the URL with the actual APP ID:

https://console.cloud.google.com/gen-app-builder/locations/global/engines/<YOUR_APP_ID>/overview

2. Update the app_id in your code:

3. Validate the API endpoint: Ensure the curl request uses the correct engine ID:

curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
"https://discoveryengine.googleapis.com/v1alpha/projects/<YOUR_PROJECT_ID>/locations/global/collections/default_collection/engines/<YOUR_APP_ID>/servingConfigs/default_search:search" \
-d '{"query":"<QUERY>","pageSize":10,"queryExpansionSpec":{"condition":"AUTO"},"spellCorrectionSpec":{"mode":"AUTO"},"languageCode":"zh-TW","userInfo":{"timeZone":"Asia/Taipei"}}'


Troubleshooting: Vertex AI Search: Path Format Error When Enabling Grounding

Error encountered when enabling "Grounding with Vertex AI Search":

Error message:

Path must follow this format: projects/{project_id}/locations/{location}/collections/{collection_name}/dataStores/{datastore_name}

Solution: How to find the correct path parameters:

  1. Navigate to https://console.cloud.google.com/gen-app-builder/engines
  2. Select your datastore
  3. Click the "Integration" tab
  4. Look for the example command under "Run sample request in Cloud Shell"

Example curl command:

curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
"https://discoveryengine.googleapis.com/v1alpha/projects/987654321000/locations/global/collections/default_collection/engines/vertex-search_123/servingConfigs/default_search:search" \
-d '{"query":"<QUERY>","pageSize":10,"queryExpansionSpec":{"condition":"AUTO"},"spellCorrectionSpec":{"mode":"AUTO"},"languageCode":"zh-TW","userInfo":{"timeZone":"Asia/Taipei"}}'

Parameter extraction from the URL: From the URL path

/projects/987654321000/locations/global/collections/default_collection/engines/vertex-search_123/

  1. {project_id}: `987654321000` (the number after `/projects/`)
  2. {location}: `global` (the string after `/locations/`) Icon_exclaim.gif Note: Do not enter the geographic areas of GCP server. You will met the error message e.g. "Invalid location in serving config: asia-east1"
  3. {collection_name}: `default_collection` (the string after `/collections/`)
  4. {datastore_name}: Found on the datastore overview page as "Datastore ID" (e.g., `XXX_1234567890123`) Icon_exclaim.gif Note: The datastore_name is not visible in the engine URL - you need to check the datastore overview page to find the "Datastore ID".

Related Pages

Further readings

References