mirror of
https://github.com/googleapis/googleapis.git
synced 2026-08-14 12:42:59 +02:00
feat: support query rephraser model for answer API feat: support end user spec for answer API feat: support grounding and safety rating for answer API feat: support relevance threshold in search feat: support boosting for blended search feat: support auto mode in search as your type feat: support model scores in search feat: support search highlighting feat: support enterprise web retrieval source for grounding feat: support images in web search grounding feat: add sitemap APIs feat: add interpolation boost action and promotion action feat: allow FHIR import to use latest predefined schema feat: allow unstructured data import to force refresh all content feat: support conversion user event feat: support panel aware user event docs: keep the API doc up-to-date with recent changes PiperOrigin-RevId: 740152749
336 lines
13 KiB
Protocol Buffer
336 lines
13 KiB
Protocol Buffer
// Copyright 2025 Google LLC
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
|
|
syntax = "proto3";
|
|
|
|
package google.cloud.discoveryengine.v1;
|
|
|
|
import "google/api/field_behavior.proto";
|
|
import "google/api/resource.proto";
|
|
import "google/cloud/discoveryengine/v1/common.proto";
|
|
import "google/protobuf/timestamp.proto";
|
|
|
|
option csharp_namespace = "Google.Cloud.DiscoveryEngine.V1";
|
|
option go_package = "cloud.google.com/go/discoveryengine/apiv1/discoveryenginepb;discoveryenginepb";
|
|
option java_multiple_files = true;
|
|
option java_outer_classname = "ControlProto";
|
|
option java_package = "com.google.cloud.discoveryengine.v1";
|
|
option objc_class_prefix = "DISCOVERYENGINE";
|
|
option php_namespace = "Google\\Cloud\\DiscoveryEngine\\V1";
|
|
option ruby_package = "Google::Cloud::DiscoveryEngine::V1";
|
|
|
|
// Defines circumstances to be checked before allowing a behavior
|
|
message Condition {
|
|
// Matcher for search request query
|
|
message QueryTerm {
|
|
// The specific query value to match against
|
|
//
|
|
// Must be lowercase, must be UTF-8.
|
|
// Can have at most 3 space separated terms if full_match is true.
|
|
// Cannot be an empty string.
|
|
// Maximum length of 5000 characters.
|
|
string value = 1;
|
|
|
|
// Whether the search query needs to exactly match the query term.
|
|
bool full_match = 2;
|
|
}
|
|
|
|
// Used for time-dependent conditions.
|
|
message TimeRange {
|
|
// Start of time range.
|
|
//
|
|
// Range is inclusive.
|
|
google.protobuf.Timestamp start_time = 1;
|
|
|
|
// End of time range.
|
|
//
|
|
// Range is inclusive.
|
|
// Must be in the future.
|
|
google.protobuf.Timestamp end_time = 2;
|
|
}
|
|
|
|
// Search only
|
|
// A list of terms to match the query on.
|
|
// Cannot be set when
|
|
// [Condition.query_regex][google.cloud.discoveryengine.v1.Condition.query_regex]
|
|
// is set.
|
|
//
|
|
// Maximum of 10 query terms.
|
|
repeated QueryTerm query_terms = 2;
|
|
|
|
// Range of time(s) specifying when condition is active.
|
|
//
|
|
// Maximum of 10 time ranges.
|
|
repeated TimeRange active_time_range = 3;
|
|
|
|
// Optional. Query regex to match the whole search query.
|
|
// Cannot be set when
|
|
// [Condition.query_terms][google.cloud.discoveryengine.v1.Condition.query_terms]
|
|
// is set. This is currently supporting promotion use case.
|
|
string query_regex = 4 [(google.api.field_behavior) = OPTIONAL];
|
|
}
|
|
|
|
// Defines a conditioned behavior to employ during serving.
|
|
// Must be attached to a
|
|
// [ServingConfig][google.cloud.discoveryengine.v1.ServingConfig] to be
|
|
// considered at serving time. Permitted actions dependent on `SolutionType`.
|
|
message Control {
|
|
option (google.api.resource) = {
|
|
type: "discoveryengine.googleapis.com/Control"
|
|
pattern: "projects/{project}/locations/{location}/dataStores/{data_store}/controls/{control}"
|
|
pattern: "projects/{project}/locations/{location}/collections/{collection}/dataStores/{data_store}/controls/{control}"
|
|
pattern: "projects/{project}/locations/{location}/collections/{collection}/engines/{engine}/controls/{control}"
|
|
};
|
|
|
|
// Adjusts order of products in returned list.
|
|
message BoostAction {
|
|
// Specification for custom ranking based on customer specified attribute
|
|
// value. It provides more controls for customized ranking than the simple
|
|
// (condition, boost) combination above.
|
|
message InterpolationBoostSpec {
|
|
// The control points used to define the curve. The curve defined
|
|
// through these control points can only be monotonically increasing
|
|
// or decreasing(constant values are acceptable).
|
|
message ControlPoint {
|
|
// Optional. Can be one of:
|
|
// 1. The numerical field value.
|
|
// 2. The duration spec for freshness:
|
|
// The value must be formatted as an XSD `dayTimeDuration` value (a
|
|
// restricted subset of an ISO 8601 duration value). The pattern for
|
|
// this is: `[nD][T[nH][nM][nS]]`.
|
|
string attribute_value = 1 [(google.api.field_behavior) = OPTIONAL];
|
|
|
|
// Optional. The value between -1 to 1 by which to boost the score if
|
|
// the attribute_value evaluates to the value specified above.
|
|
float boost_amount = 2 [(google.api.field_behavior) = OPTIONAL];
|
|
}
|
|
|
|
// The attribute(or function) for which the custom ranking is to be
|
|
// applied.
|
|
enum AttributeType {
|
|
// Unspecified AttributeType.
|
|
ATTRIBUTE_TYPE_UNSPECIFIED = 0;
|
|
|
|
// The value of the numerical field will be used to dynamically update
|
|
// the boost amount. In this case, the attribute_value (the x value)
|
|
// of the control point will be the actual value of the numerical
|
|
// field for which the boost_amount is specified.
|
|
NUMERICAL = 1;
|
|
|
|
// For the freshness use case the attribute value will be the duration
|
|
// between the current time and the date in the datetime field
|
|
// specified. The value must be formatted as an XSD `dayTimeDuration`
|
|
// value (a restricted subset of an ISO 8601 duration value). The
|
|
// pattern for this is: `[nD][T[nH][nM][nS]]`.
|
|
// For example, `5D`, `3DT12H30M`, `T24H`.
|
|
FRESHNESS = 2;
|
|
}
|
|
|
|
// The interpolation type to be applied. Default will be linear
|
|
// (Piecewise Linear).
|
|
enum InterpolationType {
|
|
// Interpolation type is unspecified. In this case, it defaults to
|
|
// Linear.
|
|
INTERPOLATION_TYPE_UNSPECIFIED = 0;
|
|
|
|
// Piecewise linear interpolation will be applied.
|
|
LINEAR = 1;
|
|
}
|
|
|
|
// Optional. The name of the field whose value will be used to determine
|
|
// the boost amount.
|
|
string field_name = 1 [(google.api.field_behavior) = OPTIONAL];
|
|
|
|
// Optional. The attribute type to be used to determine the boost amount.
|
|
// The attribute value can be derived from the field value of the
|
|
// specified field_name. In the case of numerical it is straightforward
|
|
// i.e. attribute_value = numerical_field_value. In the case of freshness
|
|
// however, attribute_value = (time.now() - datetime_field_value).
|
|
AttributeType attribute_type = 2 [(google.api.field_behavior) = OPTIONAL];
|
|
|
|
// Optional. The interpolation type to be applied to connect the control
|
|
// points listed below.
|
|
InterpolationType interpolation_type = 3
|
|
[(google.api.field_behavior) = OPTIONAL];
|
|
|
|
// Optional. The control points used to define the curve. The monotonic
|
|
// function (defined through the interpolation_type above) passes through
|
|
// the control points listed here.
|
|
repeated ControlPoint control_points = 4
|
|
[(google.api.field_behavior) = OPTIONAL];
|
|
}
|
|
|
|
// Constant value boost or custom ranking based boost specifications.
|
|
oneof boost_spec {
|
|
// Optional. Strength of the boost, which should be in [-1, 1]. Negative
|
|
// boost means demotion. Default is 0.0 (No-op).
|
|
float fixed_boost = 4 [(google.api.field_behavior) = OPTIONAL];
|
|
|
|
// Optional. Complex specification for custom ranking based on customer
|
|
// defined attribute value.
|
|
InterpolationBoostSpec interpolation_boost_spec = 5
|
|
[(google.api.field_behavior) = OPTIONAL];
|
|
}
|
|
|
|
// Strength of the boost, which should be in [-1, 1]. Negative
|
|
// boost means demotion. Default is 0.0 (No-op).
|
|
float boost = 1 [deprecated = true];
|
|
|
|
// Required. Specifies which products to apply the boost to.
|
|
//
|
|
// If no filter is provided all products will be boosted (No-op).
|
|
// Syntax documentation:
|
|
// https://cloud.google.com/retail/docs/filter-and-order
|
|
// Maximum length is 5000 characters.
|
|
// Otherwise an INVALID ARGUMENT error is thrown.
|
|
string filter = 2 [(google.api.field_behavior) = REQUIRED];
|
|
|
|
// Required. Specifies which data store's documents can be boosted by this
|
|
// control. Full data store name e.g.
|
|
// projects/123/locations/global/collections/default_collection/dataStores/default_data_store
|
|
string data_store = 3 [
|
|
(google.api.field_behavior) = REQUIRED,
|
|
(google.api.resource_reference) = {
|
|
type: "discoveryengine.googleapis.com/DataStore"
|
|
}
|
|
];
|
|
}
|
|
|
|
// Specified which products may be included in results.
|
|
// Uses same filter as boost.
|
|
message FilterAction {
|
|
// Required. A filter to apply on the matching condition results.
|
|
//
|
|
// Required
|
|
// Syntax documentation:
|
|
// https://cloud.google.com/retail/docs/filter-and-order
|
|
// Maximum length is 5000 characters. Otherwise an INVALID
|
|
// ARGUMENT error is thrown.
|
|
string filter = 1 [(google.api.field_behavior) = REQUIRED];
|
|
|
|
// Required. Specifies which data store's documents can be filtered by this
|
|
// control. Full data store name e.g.
|
|
// projects/123/locations/global/collections/default_collection/dataStores/default_data_store
|
|
string data_store = 2 [
|
|
(google.api.field_behavior) = REQUIRED,
|
|
(google.api.resource_reference) = {
|
|
type: "discoveryengine.googleapis.com/DataStore"
|
|
}
|
|
];
|
|
}
|
|
|
|
// Redirects a shopper to the provided URI.
|
|
message RedirectAction {
|
|
// Required. The URI to which the shopper will be redirected.
|
|
//
|
|
// Required.
|
|
// URI must have length equal or less than 2000 characters.
|
|
// Otherwise an INVALID ARGUMENT error is thrown.
|
|
string redirect_uri = 1 [(google.api.field_behavior) = REQUIRED];
|
|
}
|
|
|
|
// Creates a set of terms that will act as synonyms of one another.
|
|
//
|
|
// Example: "happy" will also be considered as "glad", "glad" will also be
|
|
// considered as "happy".
|
|
message SynonymsAction {
|
|
// Defines a set of synonyms.
|
|
// Can specify up to 100 synonyms.
|
|
// Must specify at least 2 synonyms. Otherwise an INVALID ARGUMENT error is
|
|
// thrown.
|
|
repeated string synonyms = 1;
|
|
}
|
|
|
|
// Promote certain links based on some trigger queries.
|
|
//
|
|
// Example: Promote shoe store link when searching for `shoe` keyword.
|
|
// The link can be outside of associated data store.
|
|
message PromoteAction {
|
|
// Required. Data store with which this promotion is attached to.
|
|
string data_store = 1 [
|
|
(google.api.field_behavior) = REQUIRED,
|
|
(google.api.resource_reference) = {
|
|
type: "discoveryengine.googleapis.com/DataStore"
|
|
}
|
|
];
|
|
|
|
// Required. Promotion attached to this action.
|
|
SearchLinkPromotion search_link_promotion = 2
|
|
[(google.api.field_behavior) = REQUIRED];
|
|
}
|
|
|
|
// Actions are restricted by Vertical and Solution
|
|
//
|
|
// Required.
|
|
oneof action {
|
|
// Defines a boost-type control
|
|
BoostAction boost_action = 6;
|
|
|
|
// Defines a filter-type control
|
|
// Currently not supported by Recommendation
|
|
FilterAction filter_action = 7;
|
|
|
|
// Defines a redirect-type control.
|
|
RedirectAction redirect_action = 9;
|
|
|
|
// Treats a group of terms as synonyms of one another.
|
|
SynonymsAction synonyms_action = 10;
|
|
|
|
// Promote certain links based on predefined trigger queries.
|
|
//
|
|
// This now only supports basic site search.
|
|
PromoteAction promote_action = 15;
|
|
}
|
|
|
|
// Immutable. Fully qualified name
|
|
// `projects/*/locations/global/dataStore/*/controls/*`
|
|
string name = 1 [(google.api.field_behavior) = IMMUTABLE];
|
|
|
|
// Required. Human readable name. The identifier used in UI views.
|
|
//
|
|
// Must be UTF-8 encoded string. Length limit is 128 characters.
|
|
// Otherwise an INVALID ARGUMENT error is thrown.
|
|
string display_name = 2 [(google.api.field_behavior) = REQUIRED];
|
|
|
|
// Output only. List of all
|
|
// [ServingConfig][google.cloud.discoveryengine.v1.ServingConfig] IDs this
|
|
// control is attached to. May take up to 10 minutes to update after changes.
|
|
repeated string associated_serving_config_ids = 3
|
|
[(google.api.field_behavior) = OUTPUT_ONLY];
|
|
|
|
// Required. Immutable. What solution the control belongs to.
|
|
//
|
|
// Must be compatible with vertical of resource.
|
|
// Otherwise an INVALID ARGUMENT error is thrown.
|
|
SolutionType solution_type = 4 [
|
|
(google.api.field_behavior) = REQUIRED,
|
|
(google.api.field_behavior) = IMMUTABLE
|
|
];
|
|
|
|
// Specifies the use case for the control.
|
|
// Affects what condition fields can be set.
|
|
// Only applies to
|
|
// [SOLUTION_TYPE_SEARCH][google.cloud.discoveryengine.v1.SolutionType.SOLUTION_TYPE_SEARCH].
|
|
// Currently only allow one use case per control.
|
|
// Must be set when solution_type is
|
|
// [SolutionType.SOLUTION_TYPE_SEARCH][google.cloud.discoveryengine.v1.SolutionType.SOLUTION_TYPE_SEARCH].
|
|
repeated SearchUseCase use_cases = 8;
|
|
|
|
// Determines when the associated action will trigger.
|
|
//
|
|
// Omit to always apply the action.
|
|
// Currently only a single condition may be specified.
|
|
// Otherwise an INVALID ARGUMENT error is thrown.
|
|
repeated Condition conditions = 5;
|
|
}
|