Suchergebnisse abrufen

Auf dieser Seite erfahren Sie, wie Sie mit der Google Cloud Console eine Vorschau von Suchergebnissen aufrufen und mit der API Suchergebnisse abrufen.

Anstatt ein Such-Widget zu erstellen und auf Ihrer Webseite einzufügen, können Sie auch API-Aufrufe ausführen und diese in Ihren Server oder Ihre Anwendung einbinden. Auf dieser Seite finden Sie Codebeispiele für Suchanfragen mit den gRPC-Clientbibliotheken und einem Dienstkonto.

Zusammenfassung von Suchanfragen unterscheidet sich je nach Modell

Wenn Sie Suchzusammenfassungen für Ihre Suchanfragen generieren, stellen Sie möglicherweise fest, dass sich die Zusammenfassungen in der Konsole von denen in der API unterscheiden. In diesem Fall verwendet die Konsole wahrscheinlich ein anderes LLM-Modell als die API. In den cURL- und Codebeispielen auf dieser Seite wird das stabile LLM-Modell verwendet.

  • Wenn Sie das LLM-Modell ändern oder auf der Seite Vorschau der Benutzeroberfläche ansehen möchten, rufen Sie die Seite Konfigurationen > Tab UI für Ihre App auf.

  • Wenn Sie für Methodenaufrufe ein anderes LLM-Modell als das stabile Modell verwenden möchten, lesen Sie den Hilfeartikel Zusammenfassungsmodell angeben.

Suchergebnisse für eine App mit Websitedaten abrufen

Console

So rufen Sie in der Google Cloud Console eine Vorschau der Suchergebnisse für eine App mit Websitedaten auf:

  1. Rufen Sie in der Google Cloud Console die Seite Agent Builder auf.

    Zum Agent Builder

  2. Klicken Sie auf den Namen der App, die Sie bearbeiten möchten.

  3. Klicken Sie auf Vorschau.

  4. Öffnen Sie in der Console die Seite Vorabversion.

  5. Optional: Wenn Sie mehrere Datenspeicher mit Ihrer App verbunden haben, aber nur Ergebnisse aus einem bestimmten Datenspeicher erhalten möchten, wählen Sie den Datenspeicher aus, aus dem Ergebnisse abgerufen werden sollen.

  6. Geben Sie eine Suchanfrage ein.

    1. Wenn Sie die automatische Vervollständigung aktiviert haben, wird während der Eingabe eine Liste mit Vorschlägen unter der Suchleiste angezeigt.
  7. Klicken Sie auf die Eingabetaste, um die Abfrage zu senden.

    1. Unter der Suchleiste wird eine Liste mit Suchergebnissen angezeigt.
    2. Jedes Ergebnis enthält einen Titel, ein Snippet und eine URL.
    3. Wenn Sie auf ein Ergebnis klicken, wird die entsprechende URL geöffnet.
  8. Klicken Sie auf den Pfeil unter der Ergebnisseite, um die nächste Ergebnisseite zu laden.

REST

Wenn Sie mit der API Suchergebnisse für eine App mit Websitedaten abrufen möchten, verwenden Sie die Methode engines.servingConfigs.search:

  1. Suchen Sie Ihre App-ID. Wenn Sie bereits eine App-ID haben, fahren Sie mit dem nächsten Schritt fort.

    1. Rufen Sie in der Google Cloud Console die Seite Agent Builder auf.

      Zu Apps wechseln

    2. Suchen Sie auf der Seite Apps nach dem Namen Ihrer App und sehen Sie sich die ID der App in der Spalte ID an.

  2. Suchergebnisse abrufen

    curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/servingConfigs/default_search:search" \
    -d '{
    "servingConfig": "projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/servingConfigs/default_search",
    "query": "QUERY",
    "pageSize": "PAGE_SIZE",
    "offset": "OFFSET",
    "orderBy": "ORDER_BY",
    "params": {"user_country_code": "USER_COUNTRY_CODE",
    "searchType": "SEARCH_TYPE"},
    "filter": "FILTER",
    "boostSpec": "BOOST_SPEC",
    "contentSearchSpec": {
       "searchResultMode": "RESULT_MODE"
     },
     "dataStoreSpecs": [{"DATA_STORE_SPEC"}]
    }'
    

    Ersetzen Sie Folgendes:

    • PROJECT_ID: die ID Ihres Google Cloud Projekts.
    • APP_ID: Die ID der Vertex AI Search-App, die Sie abfragen möchten.
    • QUERY: Der Suchtext.
    • PAGE_SIZE: Die Anzahl der von der Suche zurückgegebenen Ergebnisse. Die maximal zulässige Seitengröße hängt vom Datentyp ab. Seitengrößen über dem Höchstwert werden auf den Höchstwert festgelegt.

      • Websites mit grundlegender Indexierung: Standard 10, maximal 25
      • Websites mit erweiterter Indexierung: Standard 25, maximal 50
      • Sonstiges: Standard 50, maximal 100
    • OFFSET: den Startindex der Ergebnisse. Der Standardwert ist 0.

      Wenn der Offset beispielsweise 2, die Seitengröße 10 und die Anzahl der Ergebnisse 15 ist, werden auf der ersten Seite die Ergebnisse 2 bis 12 zurückgegeben.

    • ORDER_BY: die Reihenfolge, in der die Ergebnisse angeordnet sind. Das Attribut, nach dem sortiert werden soll, muss eine numerische Interpretation haben, z. B. date. Weitere Informationen finden Sie unter Websuchergebnisse sortieren.

    • USER_COUNTRY_CODE: den Standort des Nutzers. Dieses Schlüssel/Wert-Paar ist der einzige unterstützte Eintrag für das Kartenfeld params. Der Standardwert ist leer. Zulässige Werte finden Sie in der Programmable Search Engine JSON API-Referenzdokumentation unter Landescodes.

    • SEARCH_TYPE: die Art der durchzuführenden Suche. Der Standardwert für die Dokumentensuche ist 0. Der andere unterstützte Wert ist „1“ für die Bildsuche.

    • FILTER: ein Textfeld zum Filtern Ihrer Suche mit einem Filterausdruck. Der Standardwert ist ein leerer String. Weitere Informationen zur Verwendung des Felds filter finden Sie unter Websitesuche filtern.

    • BOOST_SPEC: Optional. Eine Spezifikation, um Dokumente zu präsentieren oder zu verbergen. Werte:

      • BOOST: eine Gleitkommazahl im Bereich [−1,1]. Wenn der Wert negativ ist, werden die Ergebnisse herabgestuft (sie werden weiter unten in den Ergebnissen angezeigt). Wenn der Wert positiv ist, werden die Ergebnisse hervorgehoben (sie werden weiter oben in den Ergebnissen angezeigt).
      • CONDITION: Textfilterausdruck, um die Dokumente auszuwählen, auf die die Steigerung angewendet werden soll. Der Filter muss einen booleschen Wert ergeben. Weitere Informationen zur Optimierung für die strukturierte Suche finden Sie unter Suchergebnisse optimieren.
    • RESULT_MODE: Gibt an, ob Suchergebnisse als vollständige Dokumente oder in Teilen zurückgegeben werden. Damit Blöcke abgerufen werden können, muss das Dokument-Chunking für den Datenspeicher aktiviert sein. Zulässige Werte sind documents und chunks. Wenn das Chunking für einen Datenspeicher aktiviert ist, ist der Standardwert chunks. Andernfalls ist es documents. Informationen zum Aufteilen von Dokumenten finden Sie unter Dokumente analysieren und in Blöcke aufteilen. Dieses Feld befindet sich in der öffentlichen Vorschau. Wenn Sie es verwenden möchten, ändern Sie im curl-Befehl v1 in v1alpha.

    • DATA_STORE_SPEC: Filter für einen bestimmten Datenspeicher, in dem gesucht werden soll. Verwenden Sie dataStoreSpecs, wenn Ihre Suchanwendung mit mehreren Datenspeichern verbunden ist, Sie aber Ergebnisse aus einem bestimmten Datenspeicher benötigen.

C#

Weitere Informationen finden Sie in der Referenzdokumentation zur Vertex AI Agent Builder C# API.

Richten Sie zur Authentifizierung bei Vertex AI Agent Builder Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

using Google.Api.Gaxs="devsite-xref-link" href="https://cloud.google.com/dotnet/docs/reference/Google.Protobuf/latest/Google.Protobuf.WellKnownTypes.Api.html" track-type="exampleCode" track-nam<e="xref>Link" track-metada<ta-lang=>"DOTNET" <track-m>etadata-modifier="Google.Protobuf.WellKnownTypes" track-metadata-href="https://cloud.google.com/dotnet/docs/reference/Google.Protobuf/latest/Google.Protobuf.WellKnownTypes.Api.html">Api.Gax;
using Google.Cloud.DiscoveryEngine.V1Beta;
using Google.Protobuf.WellKnownTypes;
using System;

public sealed partial class GeneratedSearchServiceClientSnippets
{
    /// summarySnippet for Search/summary
    /// remarks
    /// This< snippet> has been automatically generated and should be regarded as a code template only.
    /// It will require modifications to work:
    /// - It may require correct/in-range values for request initialization.
    /// - It may require specifying regional endpoints when creating the service client as shown in
    ///   https://cloud.google.com/dotnet/docs/refere"nce/help/"cl"ient-confi"gu"ration#endpo"in"t.
    /// /rema"rks
    public void SearchRequestObject()
    {
        // Create client
        S"earchServ"ic"eClient se"ar"chServiceCli"en"t = Sear"chServiceClient.Create("");
        // Initialize request argument(s)
  ""      SearchRequest requ""est = new SearchRequest
        {
            ServingConfigAsServingConfigName = ServingConfigName.FromProjectLocationDataStoreServingConfig([PROJECT], [LOCATION], [DATA_STORE], [SERVING_CONFIG])"",
            BranchAsBranchName = BranchName.FromProjectLocationDataStoreBranch([PROJECT], [LOCATION], [DATA_STORE], [BRANCH]),
            Query = ,
            Offset = 0,
            Filter = ,
         ""   OrderBy = ,
            FacetSpecs =
            {
                new SearchRequest.Types.FacetSpec(),
            },
            BoostSpec = new SearchRequest.T""yp""es.BoostSpec(),
            Params = { { , new Value() }, },
            QueryExpansionSpec = new SearchRequest.Types.QueryExpansionSpec(),
            SpellCorrectionSpec = new SearchR""equest.Types.SpellCorrectionSpec(),
            UserPseudoId = ,
            ImageQuery = new SearchRequest.Types.ImageQuery(),
            SafeSearc""h = false,
            UserInfo = new UserInfo(),
            UserLabels = { { ,  }, },
            EmbeddingSpec = new SearchRequest.Types.EmbeddingSpec(),
            ContentSearchSpec = new SearchRequest.Types.ContentSearc""hSpec(),
            Rankin""gExpression = ,
            NaturalLanguageQueryUnderstandingSpec = new SearchRequest".Types.Na"tu"ralLanguag"eQ"ueryUndersta"nd"ingSpec()",
            CanonicalFilter = ,
            SearchAsYouTypeSpec = new SearchRequest.Types.SearchAsYouTypeSpec(),
            DataStoreSpecs =
            {
                new SearchRequest.Types.DataStoreSpec(),
            },
            LanguageCode = ,
            RegionCode = ,
            SessionAsSessionName = Session<Name.FromProjectLocationDataStoreSession([PROJECT>], [LOCATION], [DATA_STORE], [SESSION]),
            SessionSpec = new SearchRequest.Types.SessionSpec(),
            RelevanceThreshold = SearchRequest.Types.RelevanceThreshold.Unspecified,
            PersonalizationSpec = new SearchRequest.Types.PersonalizationSpec(),
            OneBoxPageSize = 0,
        };
        // Make the request
        PagedEnumerableSearchResponse, SearchResponse.Types.SearchResult response = searchServiceClient.Search(request);

        // Iterate over all response items, lazily performing RPCs as required
 "       foreach (Se"archResponse.Types.SearchResult item in response)
        {
            // Do something with each item
            Console.WriteLine(item);
        }

        // Or iterate over pages (of server-defined size), performing one RPC per page
        foreach (Searc'hResponse page in response.AsRawResponses())
        {
            // Do something with each p<age of items
            Console.>WriteLine(A page of results:);
            foreach (SearchResponse.Types.SearchResult item in page)
            {
   "             // Do something with each 'item
             "   Console.WriteLine(item);
            }
        }

        // Or retrieve a single page of known size (unless its the final page), performing as many RPCs as required
        int pageSize = 10;
        PageSearchResponse.Types.SearchResult singlePage = response.ReadPage(pageSize);
        // Do something with the page of items
        Console.WriteLine($A page of {pageSize} results (unless its the final page):);
        foreach (SearchResponse.Types.SearchResult item in singlePage)
        {
            // Do something with each item
            Console.WriteLine(item);
        }
        // Store the pageToken, for when the next page is required.
        string nextPageToken = singlePage.NextPageToken;
    }
}

Java

Weitere Informationen finden Sie in der Referenzdokumentation zur Vertex AI Agent Builder Java API.

Richten Sie zur Authentifizierung bei Vertex AI Agent Builder Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.


import com.google.cloud.discoveryengine.v1.SearchRequest;
import com.google.cloud.discoveryengine.v1.SearchResponse;
import com.google.cloud.discoveryengine.v1.SearchServiceClient;
import com.google.cloud.discoveryengine.v1.SearchServiceSettings;
import com.google.cloud.discoveryengine.v1.ServingConfigName;
import java.io.IOException;
import java.util.concurrent.ExecutionException;

public class Search {
  public static void main() throws IOException, ExecutionException {
    // TODO(developer): Replace these variables before running the sample.
    // Project ID or project number of the Cloud project you want to use.
    String projectId = "PROJECT_ID";
    // Location of the data store. Options: "global", "us", "eu"
    String location = "global";
    // Collection containing the data store.
    String collectionId = "default_collection";
    // Data store ID.
    String dataStoreId = "DATA_STORE_ID";
    // Serving configuration. Options: "default_search"
    String servingConfigId = "default_search";
    // Search Query for the data store.
    String searchQuery = "Google";
    search(projectId, location, collectionId, dataStoreId, servingConfigId, searchQuery);
  }

  /** Performs a search on a given datastore. */
  public static void search(
      String projectId,
      String location,
      String collectionId,
      String dataStoreId,
      String servingConfigId,
      String searchQuery)
      throws IOException, ExecutionException {
    // For more information, refer to:
    // https://cloud.google.com/generative-ai-app-builder/docs/locations#specify_a_multi-region_for_your_data_store
    String endpoint = (location.equals("global")) 
        ? String.format("discoveryengine.googleapis.com:443", location) 
        : String.format("%s-discoveryengine.googleapis.com:443", location);
    SearchServiceSettings settings =
        SearchServiceSettings.newBuilder().setEndpoint(endpoint).build();
    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests. After completing all of your requests, call
    // the `searchServiceClient.close()` method on the client to safely
    // clean up any remaining background resources.
    try (SearchServiceClient searchServiceClient = SearchServiceClient.create(settings)) {
      SearchRequest request =
          SearchRequest.newBuilder()
              .setServingConfig(
                  ServingConfigName.formatProjectLocationCollectionDataStoreServingConfigName(
                      projectId, location, collectionId, dataStoreId, servingConfigId))
              .setQuery(searchQuery)
              .setPageSize(10)
              .build();
      SearchResponse response = searchServiceClient.search(request).getPage().getResponse();
      for (SearchResponse.SearchResult element : response.getResultsList()) {
        System.out.println("Response content: " + element);
      }
    }
  }
}

Node.js

Weitere Informationen finden Sie in der Referenzdokumentation zur Vertex AI Agent Builder Node.js API.

Richten Sie zur Authentifizierung bei Vertex AI Agent Builder Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

/**
 * TODO(developer): Uncomment these variables before running the sample.
 */
// const projectId = 'YOUR_PROJECT_ID';
// const location = 'YOUR_LOCATION';              // Options: 'global', 'us', 'eu'
// const collectionId = 'default_collection';     // Options: 'default_collection'
// const dataStoreId = 'YOUR_DATA_STORE_ID'       // Create in Cloud Console
// const servingConfigId = 'default_config';      // Options: 'default_config'
// const searchQuery = 'Google';

const {SearchServiceClient} = require('@google-cloud/discoveryengine').v1beta;

// For more information, refer to:
// https://cloud.google.com/generative-ai-app-builder/docs/locations#specify_a_multi-region_for_your_data_store
const apiEndpoint =
  location === 'global'
    ? 'discoveryengine.googleapis.com'
    : `${location}-discoveryengine.googleapis.com`;

// Instantiates a client
const client = new SearchServiceClient({apiEndpoint: apiEndpoint});

async function search() {
  // The full resource name of the search engine serving configuration.
  // Example: projects/{projectId}/locations/{location}/collections/{collectionId}/dataStores/{dataStoreId}/servingConfigs/{servingConfigId}
  // You must create a search engine in the Cloud Console first.
  const name = client.projectLocationCollectionDataStoreServingConfigPath(
    projectId,
    location,
    collectionId,
    dataStoreId,
    servingConfigId
  );

  const request = {
    pageSize: 10,
    query: searchQuery,
    servingConfig: name,
  };

  const IResponseParams = {
    ISearchResult: 0,
    ISearchRequest: 1,
    ISearchResponse: 2,
  };

  // Perform search request
  const response = await client.search(request, {
    // Warning: Should always disable autoPaginate to avoid iterate through all pages.
    //
    // By default NodeJS SDK returns an iterable where you can iterate through all
    // search results instead of only the limited number of results requested on
    // pageSize, by sending multiple sequential search requests page-by-page while
    // iterating, until it exhausts all the search results. This will be unexpected and
    // may cause high Search API usage and long wait time, especially when the matched
    // document numbers are huge.
    autoPaginate: false,
  });
  const results = response[IResponseParams.ISearchResponse].results;

  for (const result of results) {
    console.log(result);
  }
}

PHP

Weitere Informationen finden Sie in der Referenzdokumentation zur Vertex AI Agent Builder PHP API.

Richten Sie zur Authentifizierung bei Vertex AI Agent Builder Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

use Google\ApiCore\ApiException;
use Google\ApiCore\PagedListResponse;
use Google\Cloud\DiscoveryEngine\V1beta\Client\SearchServiceClient;
use Google\Cloud\DiscoveryEngine\V1beta\SearchRequest;
use Google\Cloud\DiscoveryEngine\V1beta\SearchResponse\SearchResult;

/**
 * Performs a search.
 *
 * @param string $formattedServingConfig The resource name of the Search serving config, such as
 *                                       `projects/&#42;/locations/global/collections/default_collection/engines/&#42;/servingConfigs/default_serving_config`,
 *                                       or
 *                                       `projects/&#42;/locations/global/collections/default_collection/dataStores/default_data_store/servingConfigs/default_serving_config`.
 *                                       This field is used to identify the serving configuration name, set
 *                                       of models used to make the search. Please see
 *                                       {@see SearchServiceClient::servingConfigName()} for help formatting this field.
 */
function search_sample(string $formattedServingConfig): void
{
    // Create a client.
    $searchServiceClient = new SearchServiceClient();

    // Prepare the request message.
    $request = (new SearchRequest())
        ->setServingConfig($formattedServingConfig);

    // Call the API and handle any network failures.
    try {
        /** @var PagedListResponse $response */
        $response = $searchServiceClient->search($request);

        /** @var SearchResult $element */
        foreach ($response as $element) {
            printf('Element data: %s' . PHP_EOL, $element->serializeToJsonString());
        }
    } catch (ApiException $ex) {
        printf('Call failed with message: %s' . PHP_EOL, $ex->getMessage());
    }
}

/**
 * Helper to execute the sample.
 *
 * This sample has been automatically generated and should be regarded as a code
 * template only. It will require modifications to work:
 *  - It may require correct/in-range values for request initialization.
 *  - It may require specifying regional endpoints when creating the service client,
 *    please see the apiEndpoint client configuration option for more details.
 */
function callSample(): void
{
    $formattedServingConfig = SearchServiceClient::servingConfigName(
        '[PROJECT]',
        '[LOCATION]',
        '[DATA_STORE]',
        '[SERVING_CONFIG]'
    );

    search_sample($formattedServingConfig);
}

Python

Weitere Informationen finden Sie in der Referenzdokumentation zur Vertex AI Agent Builder Python API.

Richten Sie zur Authentifizierung bei Vertex AI Agent Builder Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

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", "us", "eu"
# engine_id = "YOUR_APP_ID"
# search_query = "YOUR_SEARCH_QUERY"


def search_sample(
    project_id: str,
    location: str,
    engine_id: str,
    search_query: str,
) -> discoveryengine.services.search_service.pagers.SearchPager:
    #  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.SearchServiceClient(client_options=client_options)

    # The full resource name of the search app serving config
    serving_config = f"projects/{project_id}/locations/{location}/collections/default_collection/engines/{engine_id}/servingConfigs/default_config"

    # Optional - only supported for unstructured data: Configuration options for search.
    # Refer to the `ContentSearchSpec` reference for all supported fields:
    # https://cloud.google.com/python/docs/reference/discoveryengine/latest/google.cloud.discoveryengine_v1.types.SearchRequest.ContentSearchSpec
    content_search_spec = discoveryengine.SearchRequest.ContentSearchSpec(
        # For information about snippets, refer to:
        # https://cloud.google.com/generative-ai-app-builder/docs/snippets
        snippet_spec=discoveryengine.SearchRequest.ContentSearchSpec.SnippetSpec(
            return_snippet=True
        ),
        # For information about search summaries, refer to:
        # https://cloud.google.com/generative-ai-app-builder/docs/get-search-summaries
        summary_spec=discoveryengine.SearchRequest.ContentSearchSpec.SummarySpec(
            summary_result_count=5,
            include_citations=True,
            ignore_adversarial_query=True,
            ignore_non_summary_seeking_query=True,
            model_prompt_spec=discoveryengine.SearchRequest.ContentSearchSpec.SummarySpec.ModelPromptSpec(
                preamble="YOUR_CUSTOM_PROMPT"
            ),
            model_spec=discoveryengine.SearchRequest.ContentSearchSpec.SummarySpec.ModelSpec(
                version="stable",
            ),
        ),
    )

    # Refer to the `SearchRequest` reference for all supported fields:
    # https://cloud.google.com/python/docs/reference/discoveryengine/latest/google.cloud.discoveryengine_v1.types.SearchRequest
    request = discoveryengine.SearchRequest(
        serving_config=serving_config,
        query=search_query,
        page_size=10,
        content_search_spec=content_search_spec,
        query_expansion_spec=discoveryengine.SearchRequest.QueryExpansionSpec(
            condition=discoveryengine.SearchRequest.QueryExpansionSpec.Condition.AUTO,
        ),
        spell_correction_spec=discoveryengine.SearchRequest.SpellCorrectionSpec(
            mode=discoveryengine.SearchRequest.SpellCorrectionSpec.Mode.AUTO
        ),
        # Optional: Use fine-tuned model for this request
        # custom_fine_tuning_spec=discoveryengine.CustomFineTuningSpec(
        #     enable_search_adaptor=True
        # ),
    )

    page_result = client.search(request)

    # Handle the response
    for response in page_result:
        print(response)

    return page_result

Ruby

Weitere Informationen finden Sie in der Referenzdokumentation zur Vertex AI Agent Builder Ruby API.

Richten Sie zur Authentifizierung bei Vertex AI Agent Builder Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

require "google/cloud/discovery_engine/v1beta"

##
# Snippet for the search call in the SearchService service
#
# This snippet has been automatically generated and should be regarded as a code
# template only. It will require modifications to work:
# - It may require correct/in-range values for request initialization.
# - It may require specifying regional endpoints when creating the service
# client as shown in https://cloud.google.com/ruby/docs/reference.
#
# This is an auto-generated example demonstrating basic usage of
# Google::Cloud::DiscoveryEngine::V1beta::SearchService::Client#search.
#
def search
  # Create a client object. The client can be reused for multiple calls.
  client = Google::Cloud::DiscoveryEngine::V1beta::SearchService::Client.new

  # Create a request. To set request fields, pass in keyword arguments.
  request = Google::Cloud::DiscoveryEngine::V1beta::SearchRequest.new

  # Call the search method.
  result = client.search request

  # The returned object is of type Gapic::PagedEnumerable. You can iterate
  # over elements, and API calls will be issued to fetch pages as needed.
  result.each do |item|
    # Each element is of type ::Google::Cloud::DiscoveryEngine::V1beta::SearchResponse::SearchResult.
    p item
  end
end

Suchergebnisse für eine App mit Websitedaten abrufen (API-Schlüssel)

Wenn Sie den Aufruf der Suchmethode mit einem API-Schlüssel authentifizieren möchten, anstatt OAuth 2.0 über ein Dienstkonto oder ein Nutzerkonto zu verwenden, folgen Sie dieser Anleitung, bei der die Methode searchLite verwendet wird. Die searchLite-Methode bietet dieselben Funktionen wie die search-Methode, kann aber nur für die Suche auf öffentlichen Websites verwendet werden.

Die searchLite-Methode eignet sich besonders gut für folgende Fälle:

  • Sie haben eine statische Website, für die die Einrichtung von OAuth 2.0 über ein Dienstkonto oder ein Nutzerkonto nicht praktikabel ist.

  • Sie haben von der benutzerdefinierten Suchergebnisseite mit eingeschränkter JSON API der Programmable Search Engine zu Vertex AI Search migriert.

  • Sie möchten das Such-Widget nicht verwenden.

Hinweise

Bevor Sie die Methode servingConfigs.searchLite aufrufen können, benötigen Sie einen API-Schlüssel. Wenn Sie noch keinen API-Schlüssel haben, führen Sie Schritt 1 der Anleitung zum Bereitstellen der Suchanwendung (API-Schlüssel) aus.

Prozedur

REST

Wenn Sie mit der API Suchergebnisse für eine App mit öffentlichen Websitedaten abrufen möchten, die mit einem API-Schlüssel authentifiziert wurden, verwenden Sie die Methode engines.servingConfigs.searchLite:

  1. Suchen Sie Ihre App-ID. Wenn Sie bereits eine App-ID haben, fahren Sie mit dem nächsten Schritt fort.

    1. Rufen Sie in der Google Cloud Console die Seite Agent Builder auf.

      Zu Apps wechseln

    2. Suchen Sie auf der Seite Apps nach dem Namen Ihrer App und sehen Sie sich die ID der App in der Spalte ID an.

  2. Führen Sie den folgenden curl-Befehl aus, um Suchergebnisse zu erhalten:

    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",
    }'
    

    Ersetzen Sie Folgendes:

    • PROJECT_ID: die ID Ihres Google Cloud Projekts.

    • API_KEY: Ihren API-Schlüsselstring.

    • PROJECT_ID: die ID Ihres Google Cloud Projekts.

    • APP_ID: Die ID der Vertex AI Search-App, die Sie abfragen möchten.

    • QUERY: Der Suchtext.

Python

Weitere Informationen finden Sie in der Referenzdokumentation zur Vertex AI Agent Builder Python API.

Richten Sie zur Authentifizierung bei Vertex AI Agent Builder Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.


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", "us", "eu"
# engine_id = "YOUR_APP_ID"
# api_key = "YOUR_API_KEY"
# search_query = "YOUR_SEARCH_QUERY"


def search_lite_sample(
    project_id: str,
    location: str,
    engine_id: str,
    api_key: str,
    search_query: str,
) -> discoveryengine.services.search_service.pagers.SearchLitePager:

    client_options = ClientOptions(
        # For information on API Keys, refer to:
        # https://cloud.google.com/generative-ai-app-builder/docs/migrate-from-cse#api-key-deploy
        api_key=api_key,
        #  For more information, refer to:
        # https://cloud.google.com/generative-ai-app-builder/docs/locations#specify_a_multi-region_for_your_data_store
        api_endpoint=(
            f"{location}-discoveryengine.googleapis.com"
            if location != "global"
            else None
        ),
    )

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

    # The full resource name of the search app serving config
    serving_config = f"projects/{project_id}/locations/{location}/collections/default_collection/engines/{engine_id}/servingConfigs/default_config"

    # Refer to the `SearchRequest` reference for all supported fields:
    # https://cloud.google.com/python/docs/reference/discoveryengine/latest/google.cloud.discoveryengine_v1.types.SearchRequest
    request = discoveryengine.SearchRequest(
        serving_config=serving_config,
        query=search_query,
    )

    page_result = client.search_lite(request)

    # Handle the response
    for response in page_result:
        print(response)

    return page_result

Suchergebnisse für eine App mit strukturierten oder unstrukturierten Daten abrufen

Sie können sich eine Vorschau der Suchergebnisse in der Google Cloud Console ansehen oder Suchergebnisse mithilfe der API abrufen.

Console

So rufen Sie in der Google Cloud Console eine Vorschau der Suchergebnisse für eine App mit strukturierten oder unstrukturierten Daten auf:

  1. Öffnen Sie in der Console die Seite Vorabversion.
  2. Geben Sie eine Suchanfrage ein.
    1. Wenn Sie die automatische Vervollständigung in Schritt 1 aktiviert haben, wird während der Eingabe eine Liste mit Vorschlägen für die automatische Vervollständigung unter der Suchleiste angezeigt.
  3. Optional: Wenn Sie mehrere Datenspeicher mit Ihrer App verbunden haben, aber nur Ergebnisse aus einem bestimmten Datenspeicher erhalten möchten, wählen Sie den Datenspeicher aus, aus dem Ergebnisse abgerufen werden sollen.
  4. Klicken Sie auf die Eingabetaste, um die Abfrage zu senden.
    1. Unter der Suchleiste wird eine Liste mit Suchergebnissen angezeigt.
    2. Wenn auf der Seite Konfigurationen keine Attributzuordnung definiert ist, wird jedes Suchergebnis als Liste von Rohattributnamen und ‑werten angezeigt.
    3. Wenn auf der Seite Konfigurationen Attributzuordnungen gespeichert wurden, werden in den Suchergebnissen dieselben Bilder angezeigt, die Sie in der Vorschau auf der Seite Konfigurationen sehen.
  5. Wenn auf der Seite Konfigurationen Facetten angegeben wurden, werden sie auf die gleiche Weise angezeigt.
  6. Klicken Sie auf den Pfeil unter der Ergebnisseite, um die nächste Ergebnisseite zu laden.

REST

Wenn Sie mit der API Suchergebnisse für eine App mit strukturierten oder unstrukturierten Daten abrufen möchten, verwenden Sie die Methode engines.servingConfigs.search:

  1. Suchen Sie Ihre App-ID. Wenn Sie bereits eine App-ID haben, fahren Sie mit dem nächsten Schritt fort.

    1. Rufen Sie in der Google Cloud Console die Seite Agent Builder auf.

      Zu Apps wechseln

    2. Suchen Sie auf der Seite Apps nach dem Namen Ihrer App und sehen Sie sich die ID der App in der Spalte ID an.

  2. Suchergebnisse abrufen

    curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/servingConfigs/default_search:search" \
    -d '{
    "query": "QUERY",
    "userPseudoId": "USER_PSEUDO_ID",
    "pageSize": "PAGE_SIZE",
    "offset": "OFFSET",
    "orderBy": "ORDER_BY",
    "filter": "FILTER",
    "boostSpec": "BOOST_SPEC",
    "facetSpec": "FACET_SPEC",
    "queryExpansionSpec": "QUERY_EXPANSION_SPEC",
    "spellCorrectionSpec": "SPELL_CORRECTION_SPEC",
    "contentSearchSpec": "CONTENT_SEARCH_SPEC",
    "dataStoreSpecs": [{"DATA_STORE_SPEC"}],
    }'
    

    Ersetzen Sie Folgendes:

    • PROJECT_ID: die ID Ihres Google Cloud Projekts.
    • PROJECT_ID: die ID Ihres Google Cloud Projekts.
    • APP_ID: Die ID der Vertex AI Search-App, die Sie abfragen möchten.
    • QUERY: Der Suchtext.
    • USER_PSEUDO_ID: Optional. Dies ist eine pseudonymisierte Kennung für das Tracking eines Suchbesuchers. Google empfiehlt dringend, dieses Feld zu verwenden, da sich dadurch die Modellleistung und die Qualität der Personalisierung verbessern. Sie können für dieses Feld ein HTTP-Cookie verwenden, das einen Besucher auf einem einzelnen Gerät eindeutig identifiziert. Diese Kennung ändert sich nicht, wenn sich der Besucher auf einer Website an- oder abmeldet. Legen Sie für mehrere Nutzer nicht dieselbe Kennung für dieses Feld fest. Andernfalls werden ihre Ereignisverläufe kombiniert und die Modellqualität sinkt. Geben Sie in dieses Feld keine personenidentifizierbaren Informationen an.
    • PAGE_SIZE: Die Anzahl der von der Suche zurückgegebenen Ergebnisse. Die maximal zulässige Seitengröße hängt vom Datentyp ab. Seitengrößen über dem Höchstwert werden auf den Höchstwert festgelegt.

      • Websites mit grundlegender Indexierung: Standard 10, maximal 25
      • Websites mit erweiterter Indexierung: Standard 25, maximal 50
      • Sonstiges: Standard 50, maximal 100
    • OFFSET: Optional. Der Startindex der Ergebnisse. Der Standardwert ist 0.

      Wenn der Offset beispielsweise 2, die Seitengröße 10 und die Anzahl der Ergebnisse 15 ist, werden auf der ersten Seite die Ergebnisse 2 bis 11 zurückgegeben.

    • ORDER_BY: Optional. Die Reihenfolge, in der die Ergebnisse angeordnet sind.

    • FILTER: Optional. Ein Textfeld, mit dem Sie Ihre Suche mithilfe eines Filterausdrucks filtern können. Der Standardwert ist ein leerer String, was bedeutet, dass kein Filter angewendet wird.

      Beispiel: color: ANY("red", "blue") AND score: IN(*, 100.0e)

      Weitere Informationen finden Sie unter Suche nach strukturierten oder unstrukturierten Daten filtern.

    • BOOST_SPEC: Optional. Eine Spezifikation, um Dokumente zu präsentieren oder zu verbergen. Werte:

      • BOOST: eine Gleitkommazahl im Bereich [−1,1]. Wenn der Wert negativ ist, werden die Ergebnisse herabgestuft (sie werden weiter unten in den Ergebnissen angezeigt). Wenn der Wert positiv ist, werden die Ergebnisse hervorgehoben (sie werden weiter oben in den Ergebnissen angezeigt).
      • CONDITION: Textfilterausdruck, um die Dokumente auszuwählen, auf die die Steigerung angewendet werden soll. Der Filter muss einen booleschen Wert ergeben.

      Weitere Informationen zur Optimierung für die strukturierte Suche finden Sie unter Suchergebnisse optimieren.

    • FACET_SPEC: Optional. Eine Facettspezifikation für die Attributsuche.

    • QUERY_EXPANSION_SPEC: Optional. Eine Spezifikation, mit der festgelegt wird, unter welchen Bedingungen die Suchanfrage erweitert werden soll. Standardmäßig ist DISABLED festgelegt.

    • SPELL_CORRECTION_SPEC: Optional. Eine Spezifikation, die festlegt, unter welchen Bedingungen die Rechtschreibkorrektur erfolgen soll. Standardmäßig ist AUTO festgelegt.

    • CONTENT_SEARCH_SPEC: Optional. Zum Abrufen von Snippets, Antworttexten, Segmenten und Suchzusammenfassungen. Nur für unstrukturierte Daten. Weitere Informationen finden Sie unter:

    • DATA_STORE_SPEC: Filter für einen bestimmten Datenspeicher, in dem gesucht werden soll. Dies kann verwendet werden, wenn Ihre Suchanwendung mit mehreren Datenspeichern verbunden ist.

    • So rufen Sie Ergebnisse der interaktiven Suche in der Antwort auf die Suchanfrage auf:

      Ergebnisse der interaktiven Suche werden mit Suchantworten für die strukturierte und unstrukturierte Suche zurückgegeben. Das Ergebnis der interaktiven Suche enthält eine Liste der extrahierten Attribut-Schlüssel/Wert-Paare, die auf den Suchergebnisdokumenten basieren. So können Nutzer ihre Suchergebnisse verfeinern, indem sie einige Attributschlüssel und ‑werte als Filter verwenden.

      In dieser Beispielantwort wurde die Farbe Grün verwendet, um die Suchergebnisse zu verfeinern. Dazu wurde eine neue Suchanfrage mit dem Filterfeld _gs.color: ANY("green") gesendet:

      {
      "guidedSearchResult": {
        "refinementAttributes": [
          {
            "attributeKey": "_gs.color",
            "attributeValue" : "green"
          },
          {
            "attributeKey": "_gs.category",
            "attributeValue" : "shoe"
          }
        ]
      }
      }
      

C#

Weitere Informationen finden Sie in der Referenzdokumentation zur Vertex AI Agent Builder C# API.

Richten Sie zur Authentifizierung bei Vertex AI Agent Builder Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

using Google.Api.Gaxs="devsite-xref-link" href="https://cloud.google.com/dotnet/docs/reference/Google.Protobuf/latest/Google.Protobuf.WellKnownTypes.Api.html" track-type="exampleCode" track-nam<e="xref>Link" track-metada<ta-lang=>"DOTNET" <track-m>etadata-modifier="Google.Protobuf.WellKnownTypes" track-metadata-href="https://cloud.google.com/dotnet/docs/reference/Google.Protobuf/latest/Google.Protobuf.WellKnownTypes.Api.html">Api.Gax;
using Google.Cloud.DiscoveryEngine.V1Beta;
using Google.Protobuf.WellKnownTypes;
using System;

public sealed partial class GeneratedSearchServiceClientSnippets
{
    /// summarySnippet for Search/summary
    /// remarks
    /// This< snippet> has been automatically generated and should be regarded as a code template only.
    /// It will require modifications to work:
    /// - It may require correct/in-range values for request initialization.
    /// - It may require specifying regional endpoints when creating the service client as shown in
    ///   https://cloud.google.com/dotnet/docs/refere"nce/help/"cl"ient-confi"gu"ration#endpo"in"t.
    /// /rema"rks
    public void SearchRequestObject()
    {
        // Create client
        S"earchServ"ic"eClient se"ar"chServiceCli"en"t = Sear"chServiceClient.Create("");
        // Initialize request argument(s)
  ""      SearchRequest requ""est = new SearchRequest
        {
            ServingConfigAsServingConfigName = ServingConfigName.FromProjectLocationDataStoreServingConfig([PROJECT], [LOCATION], [DATA_STORE], [SERVING_CONFIG])"",
            BranchAsBranchName = BranchName.FromProjectLocationDataStoreBranch([PROJECT], [LOCATION], [DATA_STORE], [BRANCH]),
            Query = ,
            Offset = 0,
            Filter = ,
         ""   OrderBy = ,
            FacetSpecs =
            {
                new SearchRequest.Types.FacetSpec(),
            },
            BoostSpec = new SearchRequest.T""yp""es.BoostSpec(),
            Params = { { , new Value() }, },
            QueryExpansionSpec = new SearchRequest.Types.QueryExpansionSpec(),
            SpellCorrectionSpec = new SearchR""equest.Types.SpellCorrectionSpec(),
            UserPseudoId = ,
            ImageQuery = new SearchRequest.Types.ImageQuery(),
            SafeSearc""h = false,
            UserInfo = new UserInfo(),
            UserLabels = { { ,  }, },
            EmbeddingSpec = new SearchRequest.Types.EmbeddingSpec(),
            ContentSearchSpec = new SearchRequest.Types.ContentSearc""hSpec(),
            Rankin""gExpression = ,
            NaturalLanguageQueryUnderstandingSpec = new SearchRequest".Types.Na"tu"ralLanguag"eQ"ueryUndersta"nd"ingSpec()",
            CanonicalFilter = ,
            SearchAsYouTypeSpec = new SearchRequest.Types.SearchAsYouTypeSpec(),
            DataStoreSpecs =
            {
                new SearchRequest.Types.DataStoreSpec(),
            },
            LanguageCode = ,
            RegionCode = ,
            SessionAsSessionName = Session<Name.FromProjectLocationDataStoreSession([PROJECT>], [LOCATION], [DATA_STORE], [SESSION]),
            SessionSpec = new SearchRequest.Types.SessionSpec(),
            RelevanceThreshold = SearchRequest.Types.RelevanceThreshold.Unspecified,
            PersonalizationSpec = new SearchRequest.Types.PersonalizationSpec(),
            OneBoxPageSize = 0,
        };
        // Make the request
        PagedEnumerableSearchResponse, SearchResponse.Types.SearchResult response = searchServiceClient.Search(request);

        // Iterate over all response items, lazily performing RPCs as required
 "       foreach (Se"archResponse.Types.SearchResult item in response)
        {
            // Do something with each item
            Console.WriteLine(item);
        }

        // Or iterate over pages (of server-defined size), performing one RPC per page
        foreach (Searc'hResponse page in response.AsRawResponses())
        {
            // Do something with each p<age of items
            Console.>WriteLine(A page of results:);
            foreach (SearchResponse.Types.SearchResult item in page)
            {
   "             // Do something with each 'item
             "   Console.WriteLine(item);
            }
        }

        // Or retrieve a single page of known size (unless its the final page), performing as many RPCs as required
        int pageSize = 10;
        PageSearchResponse.Types.SearchResult singlePage = response.ReadPage(pageSize);
        // Do something with the page of items
        Console.WriteLine($A page of {pageSize} results (unless its the final page):);
        foreach (SearchResponse.Types.SearchResult item in singlePage)
        {
            // Do something with each item
            Console.WriteLine(item);
        }
        // Store the pageToken, for when the next page is required.
        string nextPageToken = singlePage.NextPageToken;
    }
}

Java

Weitere Informationen finden Sie in der Referenzdokumentation zur Vertex AI Agent Builder Java API.

Richten Sie zur Authentifizierung bei Vertex AI Agent Builder Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.


import com.google.cloud.discoveryengine.v1.SearchRequest;
import com.google.cloud.discoveryengine.v1.SearchResponse;
import com.google.cloud.discoveryengine.v1.SearchServiceClient;
import com.google.cloud.discoveryengine.v1.SearchServiceSettings;
import com.google.cloud.discoveryengine.v1.ServingConfigName;
import java.io.IOException;
import java.util.concurrent.ExecutionException;

public class Search {
  public static void main() throws IOException, ExecutionException {
    // TODO(developer): Replace these variables before running the sample.
    // Project ID or project number of the Cloud project you want to use.
    String projectId = "PROJECT_ID";
    // Location of the data store. Options: "global", "us", "eu"
    String location = "global";
    // Collection containing the data store.
    String collectionId = "default_collection";
    // Data store ID.
    String dataStoreId = "DATA_STORE_ID";
    // Serving configuration. Options: "default_search"
    String servingConfigId = "default_search";
    // Search Query for the data store.
    String searchQuery = "Google";
    search(projectId, location, collectionId, dataStoreId, servingConfigId, searchQuery);
  }

  /** Performs a search on a given datastore. */
  public static void search(
      String projectId,
      String location,
      String collectionId,
      String dataStoreId,
      String servingConfigId,
      String searchQuery)
      throws IOException, ExecutionException {
    // For more information, refer to:
    // https://cloud.google.com/generative-ai-app-builder/docs/locations#specify_a_multi-region_for_your_data_store
    String endpoint = (location.equals("global")) 
        ? String.format("discoveryengine.googleapis.com:443", location) 
        : String.format("%s-discoveryengine.googleapis.com:443", location);
    SearchServiceSettings settings =
        SearchServiceSettings.newBuilder().setEndpoint(endpoint).build();
    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests. After completing all of your requests, call
    // the `searchServiceClient.close()` method on the client to safely
    // clean up any remaining background resources.
    try (SearchServiceClient searchServiceClient = SearchServiceClient.create(settings)) {
      SearchRequest request =
          SearchRequest.newBuilder()
              .setServingConfig(
                  ServingConfigName.formatProjectLocationCollectionDataStoreServingConfigName(
                      projectId, location, collectionId, dataStoreId, servingConfigId))
              .setQuery(searchQuery)
              .setPageSize(10)
              .build();
      SearchResponse response = searchServiceClient.search(request).getPage().getResponse();
      for (SearchResponse.SearchResult element : response.getResultsList()) {
        System.out.println("Response content: " + element);
      }
    }
  }
}

Node.js

Weitere Informationen finden Sie in der Referenzdokumentation zur Vertex AI Agent Builder Node.js API.

Richten Sie zur Authentifizierung bei Vertex AI Agent Builder Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

/**
 * TODO(developer): Uncomment these variables before running the sample.
 */
// const projectId = 'YOUR_PROJECT_ID';
// const location = 'YOUR_LOCATION';              // Options: 'global', 'us', 'eu'
// const collectionId = 'default_collection';     // Options: 'default_collection'
// const dataStoreId = 'YOUR_DATA_STORE_ID'       // Create in Cloud Console
// const servingConfigId = 'default_config';      // Options: 'default_config'
// const searchQuery = 'Google';

const {SearchServiceClient} = require('@google-cloud/discoveryengine').v1beta;

// For more information, refer to:
// https://cloud.google.com/generative-ai-app-builder/docs/locations#specify_a_multi-region_for_your_data_store
const apiEndpoint =
  location === 'global'
    ? 'discoveryengine.googleapis.com'
    : `${location}-discoveryengine.googleapis.com`;

// Instantiates a client
const client = new SearchServiceClient({apiEndpoint: apiEndpoint});

async function search() {
  // The full resource name of the search engine serving configuration.
  // Example: projects/{projectId}/locations/{location}/collections/{collectionId}/dataStores/{dataStoreId}/servingConfigs/{servingConfigId}
  // You must create a search engine in the Cloud Console first.
  const name = client.projectLocationCollectionDataStoreServingConfigPath(
    projectId,
    location,
    collectionId,
    dataStoreId,
    servingConfigId
  );

  const request = {
    pageSize: 10,
    query: searchQuery,
    servingConfig: name,
  };

  const IResponseParams = {
    ISearchResult: 0,
    ISearchRequest: 1,
    ISearchResponse: 2,
  };

  // Perform search request
  const response = await client.search(request, {
    // Warning: Should always disable autoPaginate to avoid iterate through all pages.
    //
    // By default NodeJS SDK returns an iterable where you can iterate through all
    // search results instead of only the limited number of results requested on
    // pageSize, by sending multiple sequential search requests page-by-page while
    // iterating, until it exhausts all the search results. This will be unexpected and
    // may cause high Search API usage and long wait time, especially when the matched
    // document numbers are huge.
    autoPaginate: false,
  });
  const results = response[IResponseParams.ISearchResponse].results;

  for (const result of results) {
    console.log(result);
  }
}

PHP

Weitere Informationen finden Sie in der Referenzdokumentation zur Vertex AI Agent Builder PHP API.

Richten Sie zur Authentifizierung bei Vertex AI Agent Builder Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

use Google\ApiCore\ApiException;
use Google\ApiCore\PagedListResponse;
use Google\Cloud\DiscoveryEngine\V1beta\Client\SearchServiceClient;
use Google\Cloud\DiscoveryEngine\V1beta\SearchRequest;
use Google\Cloud\DiscoveryEngine\V1beta\SearchResponse\SearchResult;

/**
 * Performs a search.
 *
 * @param string $formattedServingConfig The resource name of the Search serving config, such as
 *                                       `projects/&#42;/locations/global/collections/default_collection/engines/&#42;/servingConfigs/default_serving_config`,
 *                                       or
 *                                       `projects/&#42;/locations/global/collections/default_collection/dataStores/default_data_store/servingConfigs/default_serving_config`.
 *                                       This field is used to identify the serving configuration name, set
 *                                       of models used to make the search. Please see
 *                                       {@see SearchServiceClient::servingConfigName()} for help formatting this field.
 */
function search_sample(string $formattedServingConfig): void
{
    // Create a client.
    $searchServiceClient = new SearchServiceClient();

    // Prepare the request message.
    $request = (new SearchRequest())
        ->setServingConfig($formattedServingConfig);

    // Call the API and handle any network failures.
    try {
        /** @var PagedListResponse $response */
        $response = $searchServiceClient->search($request);

        /** @var SearchResult $element */
        foreach ($response as $element) {
            printf('Element data: %s' . PHP_EOL, $element->serializeToJsonString());
        }
    } catch (ApiException $ex) {
        printf('Call failed with message: %s' . PHP_EOL, $ex->getMessage());
    }
}

/**
 * Helper to execute the sample.
 *
 * This sample has been automatically generated and should be regarded as a code
 * template only. It will require modifications to work:
 *  - It may require correct/in-range values for request initialization.
 *  - It may require specifying regional endpoints when creating the service client,
 *    please see the apiEndpoint client configuration option for more details.
 */
function callSample(): void
{
    $formattedServingConfig = SearchServiceClient::servingConfigName(
        '[PROJECT]',
        '[LOCATION]',
        '[DATA_STORE]',
        '[SERVING_CONFIG]'
    );

    search_sample($formattedServingConfig);
}

Python

Weitere Informationen finden Sie in der Referenzdokumentation zur Vertex AI Agent Builder Python API.

Richten Sie zur Authentifizierung bei Vertex AI Agent Builder Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

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", "us", "eu"
# engine_id = "YOUR_APP_ID"
# search_query = "YOUR_SEARCH_QUERY"


def search_sample(
    project_id: str,
    location: str,
    engine_id: str,
    search_query: str,
) -> discoveryengine.services.search_service.pagers.SearchPager:
    #  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.SearchServiceClient(client_options=client_options)

    # The full resource name of the search app serving config
    serving_config = f"projects/{project_id}/locations/{location}/collections/default_collection/engines/{engine_id}/servingConfigs/default_config"

    # Optional - only supported for unstructured data: Configuration options for search.
    # Refer to the `ContentSearchSpec` reference for all supported fields:
    # https://cloud.google.com/python/docs/reference/discoveryengine/latest/google.cloud.discoveryengine_v1.types.SearchRequest.ContentSearchSpec
    content_search_spec = discoveryengine.SearchRequest.ContentSearchSpec(
        # For information about snippets, refer to:
        # https://cloud.google.com/generative-ai-app-builder/docs/snippets
        snippet_spec=discoveryengine.SearchRequest.ContentSearchSpec.SnippetSpec(
            return_snippet=True
        ),
        # For information about search summaries, refer to:
        # https://cloud.google.com/generative-ai-app-builder/docs/get-search-summaries
        summary_spec=discoveryengine.SearchRequest.ContentSearchSpec.SummarySpec(
            summary_result_count=5,
            include_citations=True,
            ignore_adversarial_query=True,
            ignore_non_summary_seeking_query=True,
            model_prompt_spec=discoveryengine.SearchRequest.ContentSearchSpec.SummarySpec.ModelPromptSpec(
                preamble="YOUR_CUSTOM_PROMPT"
            ),
            model_spec=discoveryengine.SearchRequest.ContentSearchSpec.SummarySpec.ModelSpec(
                version="stable",
            ),
        ),
    )

    # Refer to the `SearchRequest` reference for all supported fields:
    # https://cloud.google.com/python/docs/reference/discoveryengine/latest/google.cloud.discoveryengine_v1.types.SearchRequest
    request = discoveryengine.SearchRequest(
        serving_config=serving_config,
        query=search_query,
        page_size=10,
        content_search_spec=content_search_spec,
        query_expansion_spec=discoveryengine.SearchRequest.QueryExpansionSpec(
            condition=discoveryengine.SearchRequest.QueryExpansionSpec.Condition.AUTO,
        ),
        spell_correction_spec=discoveryengine.SearchRequest.SpellCorrectionSpec(
            mode=discoveryengine.SearchRequest.SpellCorrectionSpec.Mode.AUTO
        ),
        # Optional: Use fine-tuned model for this request
        # custom_fine_tuning_spec=discoveryengine.CustomFineTuningSpec(
        #     enable_search_adaptor=True
        # ),
    )

    page_result = client.search(request)

    # Handle the response
    for response in page_result:
        print(response)

    return page_result

Ruby

Weitere Informationen finden Sie in der Referenzdokumentation zur Vertex AI Agent Builder Ruby API.

Richten Sie zur Authentifizierung bei Vertex AI Agent Builder Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

require "google/cloud/discovery_engine/v1beta"

##
# Snippet for the search call in the SearchService service
#
# This snippet has been automatically generated and should be regarded as a code
# template only. It will require modifications to work:
# - It may require correct/in-range values for request initialization.
# - It may require specifying regional endpoints when creating the service
# client as shown in https://cloud.google.com/ruby/docs/reference.
#
# This is an auto-generated example demonstrating basic usage of
# Google::Cloud::DiscoveryEngine::V1beta::SearchService::Client#search.
#
def search
  # Create a client object. The client can be reused for multiple calls.
  client = Google::Cloud::DiscoveryEngine::V1beta::SearchService::Client.new

  # Create a request. To set request fields, pass in keyword arguments.
  request = Google::Cloud::DiscoveryEngine::V1beta::SearchRequest.new

  # Call the search method.
  result = client.search request

  # The returned object is of type Gapic::PagedEnumerable. You can iterate
  # over elements, and API calls will be issued to fetch pages as needed.
  result.each do |item|
    # Each element is of type ::Google::Cloud::DiscoveryEngine::V1beta::SearchResponse::SearchResult.
    p item
  end
end

Für die Mediensuche bietet Vertex AI Agent Builder zwei Arten von Suchverhalten:

  • Der Nutzer gibt die Suchanfrage ein und drückt die Eingabetaste. Dies ist die Standardeinstellung und entspricht dem Verhalten bei der Suche im Widget und der Suche nach nicht medialen (generischen) Apps. Weitere Informationen finden Sie unter Suchergebnisse für eine App mit strukturierten oder unstrukturierten Daten abrufen.

  • Nach jedem eingegebenen Buchstaben wird ein neues Suchergebnis zurückgegeben. Diese Funktion wird als „Suchen, während Sie tippen“ bezeichnet und ist besonders hilfreich für Nutzer, die ihre Suchanfragen über kompliziertere Oberflächen wie die Fernbedienung eines Fernsehers eingeben.

So erhalten Sie Suchergebnisse bei der Eingabe für eine Medien-App:

Console

So aktivieren Sie die Sucheingabe für eine Widget-App mit der Google Cloud Console:

  1. Rufen Sie in der Google Cloud Console die Seite Agent Builder auf.

    Zum Agent Builder

  2. Klicken Sie auf den Namen der Mediensuch-App, für die Sie die Eingabehilfe verwenden möchten.

  3. Klicken Sie auf Configurations (Konfigurationen).

  4. Klicken Sie auf den Tab UI.

  5. Klicken Sie auf den Schalter Suche während der Eingabe aktivieren.

  6. Geben Sie im Bereich Vorschau eine Abfrage ein.

    Die Suchergebnisse werden nach jedem Tastenanschlag aktualisiert.

  7. Wenn Sie die Einstellung „Suchen, während Sie tippen“ beibehalten möchten, klicken Sie auf Speichern und veröffentlichen.

REST

Verwenden Sie die Methode dataStores.servingConfigs.search, um Suchergebnisse für eine Medien-App abzurufen:

  1. Suchen Sie Ihre App-ID. Wenn Sie bereits eine App-ID haben, fahren Sie mit dem nächsten Schritt fort.

    1. Rufen Sie in der Google Cloud Console die Seite Agent Builder auf.

      Zu Apps wechseln

    2. Suchen Sie auf der Seite Apps nach dem Namen Ihrer App und sehen Sie sich die ID der App in der Spalte ID an.

  2. Führen Sie den folgenden curl-Befehl aus, um Ergebnisse der Sucheingabe zu erhalten.

    Alle Felder mit Ausnahme von contentSearchSpec können in Verbindung mit dem Feld searchAsYouTypeSpec verwendet werden. Zur besseren Verständlichkeit wurden die optionalen Felder aus dem curl-Befehl entfernt. Informationen zu den optionalen Feldern finden Sie unter Suchergebnisse für eine App mit strukturierten oder unstrukturierten Daten abrufen.

    curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/servingConfigs/default_search:search" \
    -d '{
    "query": "QUERY",
    "searchAsYouTypeSpec": {"condition": "ENABLED"}
    }'
    

    Ersetzen Sie Folgendes:

    • PROJECT_ID: die ID Ihres Google Cloud Projekts.
    • PROJECT_ID: die ID Ihres Google Cloud Projekts.
    • APP_ID: Die ID der Vertex AI Search-App, die Sie abfragen möchten.
    • QUERY: Der Suchtext.

    Klicken Sie hier für ein Beispiel für einen cURL-Befehl.

    curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)"
    -H "Content-Type: application/json"
    "https://discoveryengine.googleapis.com/v1/projects/12345/locations/global/collections/default_collection/engines/my-app_4321/servingConfigs/default_search:search"
    -d '{
         "query": "midsummer night",
         "searchAsYouTypeSpec": {"condition": "ENABLED"}
        }'

Nächste Schritte