Create a search app

This page describes how to create a search app.

Create an app

Console

To use the Google Cloud console to create a search app, follow these steps:

  1. In the Google Cloud console, go to the Agent Builder page.

    Agent Builder

  2. On the Apps page, click Create app.

  3. On the Create App page, under Search for your website, click Create.

  4. Decide if you want Enterprise features for this app and then click the toggle on or off.

    Turning on Enterprise edition features is required to get features such as website search and choosing a region for your app. Enterprise edition features incur additional cost. For more information, see Enterprise edition features.

  5. Decide if you want Advanced LLM features for this app and then click the toggle on or off.

    Activating Advanced LLM features is required to get features such as search summaries or search with follow-ups. For more information, see Advanced LLM features.

  6. In the Your app name field, enter a name for your app.

  7. In the External name of your company or organization field, enter the common name for your company or organization. You don't need to include suffixes such as Inc or LLC. This field is useful for the LLM to identify the company that the app represents.

  8. Select a location for your app. Enterprise features must be turned on to pick a location. Google recommends that you use the default, global (Global), unless you have a reason to restrict your data to a particular geography.

  9. Click Continue.

  10. To connect to a data store, on the Data Stores page, select a data store that you previously created or create a new data store.

    Do at least one of the following:

    • Select an existing data store.

      If you attach only one data store, you can't remove it or add other data stores to this app later. If you attach multiple data stores, you can change which data stores are attached later, but this app must always have at least two data stores attached.

    • Create a new data store and ingest data into it.

      Do this by clicking Create data store and following the steps in the Create a new data store pane that opens. Then select your new data store. For more information, see Create a search data store.

  11. Optional: To see a list of unavailable data stores, click Learn why.

    A table is displayed with a list of data stores and the reason why they are unavailable. Here are some of the reasons why a data store might be unavailable:

    • Your data store type allows connection to only one app and the data store is already connected.
    • Your data store and your app are in different regions.
    • Your data store and your app are of different types. For example, you cannot connect a healthcare search data store to a website search app.
    • Your data store has basic website search, whereas your website search app requires a data store with advanced website indexing.
  12. Click Create.

REST

Before you use the command line to create an app, you must have an existing data store. If you don't have a data store, create one following the steps in Create a data store and ingest data for Vertex AI Search.

To use the engines.create method to create a search app from the command line, follow these steps:

  1. Find your data store ID. If you already have your data store ID, skip to the next step.

    1. In the Google Cloud console, go to the Agent Builder page and in the navigation menu, click Data Stores.

      Go to the Data Stores page

    2. Click the name of your data store.

    3. On the Data page for your data store, get the data store ID.

  2. Create a search app and connect it to a data store. A data store can be attached to only one app and can't be removed from the app later.

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    -H "X-Goog-User-Project: PROJECT_ID" \
    "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/engines?engineId=APP_ID" \
    -d '{
      "displayName": "APP_DISPLAY_NAME",
      "dataStoreIds": ["DATA_STORE_ID"],
      "solutionType": "SOLUTION_TYPE_SEARCH",
      "searchEngineConfig": {
         "searchTier": "SEARCH_TIER",
         "searchAddOns": ["SEARCH_ADD_ON"]
       }
    }'
    

    Replace the following:

    • PROJECT_ID: the ID of your Google Cloud project.
    • APP_ID: the ID of the Vertex AI Search app that you want to create.
    • APP_DISPLAY_NAME: the display name of the Vertex AI Search app that you want to create.
    • DATA_STORE_ID: the ID of an existing Vertex AI Search data store that you want to add to the Vertex AI Search app.
    • SEARCH_TIER: the search tier can be SEARCH_TIER_STANDARD or SEARCH_TIER_ENTERPRISE. SEARCH_TIER_ENTERPRISE is required to get features such as website search and choosing a region for your app. Enterprise edition features incur additional cost. For more information, see Enterprise edition features.
    • SEARCH_ADD_ON: If you want Advanced LLM features for this app, then specify SEARCH_ADD_ON_LLM. Advanced LLM features include search summaries and search with follow-ups.

      If you don't want Advanced LLM features, then either specify SEARCH_ADD_ON_UNSPECIFIED or remove the searchAddOns field.

      For more information, see Advanced LLM features.

Python

For more information, see the Vertex AI Agent Builder Python API reference documentation.

To authenticate to Vertex AI Agent Builder, set up Application Default Credentials. For more information, see Set up authentication for a local development environment.

from typing import List

from google.api_core.client_options import ClientOptions
from google.cloud import discoveryengine_v1 as discoveryengine

# TODO(developer): Uncomment these variables before running the sample.
# project_id = "YOUR_PROJECT_ID"
# location = "YOUR_LOCATION" # Values: "global"
# engine_id = "YOUR_ENGINE_ID"
# data_store_ids = ["YOUR_DATA_STORE_ID"]


def create_engine_sample(
    project_id: str, location: str, engine_id: str, data_store_ids: List[str]
) -> str:
    #  For more information, refer to:
    # https://cloud.google.com/generative-ai-app-builder/docs/locations#specify_a_multi-region_for_your_data_store
    client_options = (
        ClientOptions(api_endpoint=f"{location}-discoveryengine.googleapis.com")
        if location != "global"
        else None
    )

    # Create a client
    client = discoveryengine.EngineServiceClient(client_options=client_options)

    # The full resource name of the collection
    # e.g. projects/{project}/locations/{location}/collections/default_collection
    parent = client.collection_path(
        project=project_id,
        location=location,
        collection="default_collection",
    )

    engine = discoveryengine.Engine(
        display_name="Test Engine",
        # Options: GENERIC, MEDIA, HEALTHCARE_FHIR
        industry_vertical=discoveryengine.IndustryVertical.GENERIC,
        # Options: SOLUTION_TYPE_RECOMMENDATION, SOLUTION_TYPE_SEARCH, SOLUTION_TYPE_CHAT, SOLUTION_TYPE_GENERATIVE_CHAT
        solution_type=discoveryengine.SolutionType.SOLUTION_TYPE_SEARCH,
        # For search apps only
        search_engine_config=discoveryengine.Engine.SearchEngineConfig(
            # Options: SEARCH_TIER_STANDARD, SEARCH_TIER_ENTERPRISE
            search_tier=discoveryengine.SearchTier.SEARCH_TIER_ENTERPRISE,
            # Options: SEARCH_ADD_ON_LLM, SEARCH_ADD_ON_UNSPECIFIED
            search_add_ons=[discoveryengine.SearchAddOn.SEARCH_ADD_ON_LLM],
        ),
        # For generic recommendation apps only
        # similar_documents_config=discoveryengine.Engine.SimilarDocumentsEngineConfig,
        data_store_ids=data_store_ids,
    )

    request = discoveryengine.CreateEngineRequest(
        parent=parent,
        engine=engine,
        engine_id=engine_id,
    )

    # Make the request
    operation = client.create_engine(request=request)

    print(f"Waiting for operation to complete: {operation.operation.name}")
    response = operation.result()

    # After the operation is complete,
    # get information from operation metadata
    metadata = discoveryengine.CreateEngineMetadata(operation.metadata)

    # Handle the response
    print(response)
    print(metadata)

    return operation.operation.name

Terraform

To learn how to apply or remove a Terraform configuration, see Basic Terraform commands. For more information, see the Terraform provider reference documentation.

To create a search app using Terraform, see discovery_engine_search_engine.

What's next