@google-cloud/discoveryengine 1.1.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/README.md +26 -0
  3. package/build/protos/google/cloud/discoveryengine/v1alpha/common.proto +155 -0
  4. package/build/protos/google/cloud/discoveryengine/v1alpha/completion_service.proto +134 -0
  5. package/build/protos/google/cloud/discoveryengine/v1alpha/conversation.proto +138 -0
  6. package/build/protos/google/cloud/discoveryengine/v1alpha/conversational_search_service.proto +306 -0
  7. package/build/protos/google/cloud/discoveryengine/v1alpha/document.proto +121 -0
  8. package/build/protos/google/cloud/discoveryengine/v1alpha/document_service.proto +318 -0
  9. package/build/protos/google/cloud/discoveryengine/v1alpha/import_config.proto +343 -0
  10. package/build/protos/google/cloud/discoveryengine/v1alpha/purge_config.proto +159 -0
  11. package/build/protos/google/cloud/discoveryengine/v1alpha/recommendation_service.proto +221 -0
  12. package/build/protos/google/cloud/discoveryengine/v1alpha/schema.proto +312 -0
  13. package/build/protos/google/cloud/discoveryengine/v1alpha/schema_service.proto +260 -0
  14. package/build/protos/google/cloud/discoveryengine/v1alpha/search_service.proto +851 -0
  15. package/build/protos/google/cloud/discoveryengine/v1alpha/site_search_engine_service.proto +152 -0
  16. package/build/protos/google/cloud/discoveryengine/v1alpha/user_event.proto +475 -0
  17. package/build/protos/google/cloud/discoveryengine/v1alpha/user_event_service.proto +154 -0
  18. package/build/protos/protos.d.ts +12587 -7
  19. package/build/protos/protos.js +34918 -3126
  20. package/build/protos/protos.json +3458 -5
  21. package/build/src/index.d.ts +3 -1
  22. package/build/src/index.js +4 -1
  23. package/build/src/v1alpha/completion_service_client.d.ts +603 -0
  24. package/build/src/v1alpha/completion_service_client.js +843 -0
  25. package/build/src/v1alpha/completion_service_client_config.json +43 -0
  26. package/build/src/v1alpha/conversational_search_service_client.d.ts +998 -0
  27. package/build/src/v1alpha/conversational_search_service_client.js +1275 -0
  28. package/build/src/v1alpha/conversational_search_service_client_config.json +68 -0
  29. package/build/src/v1alpha/document_service_client.d.ts +1140 -0
  30. package/build/src/v1alpha/document_service_client.js +1393 -0
  31. package/build/src/v1alpha/document_service_client_config.json +82 -0
  32. package/build/src/v1alpha/index.d.ts +8 -0
  33. package/build/src/v1alpha/index.js +37 -0
  34. package/build/src/v1alpha/recommendation_service_client.d.ts +735 -0
  35. package/build/src/v1alpha/recommendation_service_client.js +938 -0
  36. package/build/src/v1alpha/recommendation_service_client_config.json +43 -0
  37. package/build/src/v1alpha/schema_service_client.d.ts +935 -0
  38. package/build/src/v1alpha/schema_service_client.js +1327 -0
  39. package/build/src/v1alpha/schema_service_client_config.json +63 -0
  40. package/build/src/v1alpha/search_service_client.d.ts +1208 -0
  41. package/build/src/v1alpha/search_service_client.js +1432 -0
  42. package/build/src/v1alpha/search_service_client_config.json +43 -0
  43. package/build/src/v1alpha/site_search_engine_service_client.d.ts +704 -0
  44. package/build/src/v1alpha/site_search_engine_service_client.js +1087 -0
  45. package/build/src/v1alpha/site_search_engine_service_client_config.json +30 -0
  46. package/build/src/v1alpha/user_event_service_client.d.ts +853 -0
  47. package/build/src/v1alpha/user_event_service_client.js +1174 -0
  48. package/build/src/v1alpha/user_event_service_client_config.json +67 -0
  49. package/package.json +3 -3
@@ -0,0 +1,851 @@
1
+ // Copyright 2022 Google LLC
2
+ //
3
+ // Licensed under the Apache License, Version 2.0 (the "License");
4
+ // you may not use this file except in compliance with the License.
5
+ // You may obtain a copy of the License at
6
+ //
7
+ // http://www.apache.org/licenses/LICENSE-2.0
8
+ //
9
+ // Unless required by applicable law or agreed to in writing, software
10
+ // distributed under the License is distributed on an "AS IS" BASIS,
11
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ // See the License for the specific language governing permissions and
13
+ // limitations under the License.
14
+
15
+ syntax = "proto3";
16
+
17
+ package google.cloud.discoveryengine.v1alpha;
18
+
19
+ import "google/api/annotations.proto";
20
+ import "google/api/client.proto";
21
+ import "google/api/field_behavior.proto";
22
+ import "google/api/resource.proto";
23
+ import "google/cloud/discoveryengine/v1alpha/common.proto";
24
+ import "google/cloud/discoveryengine/v1alpha/document.proto";
25
+ import "google/protobuf/struct.proto";
26
+
27
+ option csharp_namespace = "Google.Cloud.DiscoveryEngine.V1Alpha";
28
+ option go_package = "cloud.google.com/go/discoveryengine/apiv1alpha/discoveryenginepb;discoveryenginepb";
29
+ option java_multiple_files = true;
30
+ option java_outer_classname = "SearchServiceProto";
31
+ option java_package = "com.google.cloud.discoveryengine.v1alpha";
32
+ option objc_class_prefix = "DISCOVERYENGINE";
33
+ option php_namespace = "Google\\Cloud\\DiscoveryEngine\\V1alpha";
34
+ option ruby_package = "Google::Cloud::DiscoveryEngine::V1alpha";
35
+
36
+ // Service for search.
37
+ service SearchService {
38
+ option (google.api.default_host) = "discoveryengine.googleapis.com";
39
+ option (google.api.oauth_scopes) =
40
+ "https://www.googleapis.com/auth/cloud-platform";
41
+
42
+ // Performs a search.
43
+ rpc Search(SearchRequest) returns (SearchResponse) {
44
+ option (google.api.http) = {
45
+ post: "/v1alpha/{serving_config=projects/*/locations/*/dataStores/*/servingConfigs/*}:search"
46
+ body: "*"
47
+ additional_bindings {
48
+ post: "/v1alpha/{serving_config=projects/*/locations/*/collections/*/dataStores/*/servingConfigs/*}:search"
49
+ body: "*"
50
+ }
51
+ additional_bindings {
52
+ post: "/v1alpha/{serving_config=projects/*/locations/*/collections/*/engines/*/servingConfigs/*}:search"
53
+ body: "*"
54
+ }
55
+ };
56
+ }
57
+ }
58
+
59
+ // Request message for
60
+ // [SearchService.Search][google.cloud.discoveryengine.v1alpha.SearchService.Search]
61
+ // method.
62
+ message SearchRequest {
63
+ // Specifies the image query input.
64
+ message ImageQuery {
65
+ oneof image {
66
+ // Base64 encoded image bytes. Supported image formats: JPEG, PNG, and
67
+ // BMP.
68
+ string image_bytes = 1;
69
+ }
70
+ }
71
+
72
+ // A facet specification to perform faceted search.
73
+ message FacetSpec {
74
+ // Specifies how a facet is computed.
75
+ message FacetKey {
76
+ // Required. Supported textual and numerical facet keys in
77
+ // [Document][google.cloud.discoveryengine.v1alpha.Document] object, over
78
+ // which the facet values are computed. Facet key is case-sensitive.
79
+ string key = 1 [(google.api.field_behavior) = REQUIRED];
80
+
81
+ // Set only if values should be bucketed into intervals. Must be set
82
+ // for facets with numerical values. Must not be set for facet with text
83
+ // values. Maximum number of intervals is 30.
84
+ repeated Interval intervals = 2;
85
+
86
+ // Only get facet for the given restricted values. Only supported on
87
+ // textual fields. For example, suppose "category" has three values
88
+ // "Action > 2022", "Action > 2021" and "Sci-Fi > 2022". If set
89
+ // "restricted_values" to "Action > 2022", the "category" facet only
90
+ // contains "Action > 2022". Only supported on textual fields. Maximum
91
+ // is 10.
92
+ repeated string restricted_values = 3;
93
+
94
+ // Only get facet values that start with the given string prefix. For
95
+ // example, suppose "category" has three values "Action > 2022",
96
+ // "Action > 2021" and "Sci-Fi > 2022". If set "prefixes" to "Action", the
97
+ // "category" facet only contains "Action > 2022" and "Action > 2021".
98
+ // Only supported on textual fields. Maximum is 10.
99
+ repeated string prefixes = 4;
100
+
101
+ // Only get facet values that contains the given strings. For example,
102
+ // suppose "category" has three values "Action > 2022",
103
+ // "Action > 2021" and "Sci-Fi > 2022". If set "contains" to "2022", the
104
+ // "category" facet only contains "Action > 2022" and "Sci-Fi > 2022".
105
+ // Only supported on textual fields. Maximum is 10.
106
+ repeated string contains = 5;
107
+
108
+ // True to make facet keys case insensitive when getting faceting
109
+ // values with prefixes or contains; false otherwise.
110
+ bool case_insensitive = 6;
111
+
112
+ // The order in which documents are returned.
113
+ //
114
+ // Allowed values are:
115
+ //
116
+ // * "count desc", which means order by
117
+ // [SearchResponse.Facet.values.count][google.cloud.discoveryengine.v1alpha.SearchResponse.Facet.FacetValue.count]
118
+ // descending.
119
+ //
120
+ // * "value desc", which means order by
121
+ // [SearchResponse.Facet.values.value][google.cloud.discoveryengine.v1alpha.SearchResponse.Facet.FacetValue.value]
122
+ // descending.
123
+ // Only applies to textual facets.
124
+ //
125
+ // If not set, textual values are sorted in [natural
126
+ // order](https://en.wikipedia.org/wiki/Natural_sort_order); numerical
127
+ // intervals are sorted in the order given by
128
+ // [FacetSpec.FacetKey.intervals][google.cloud.discoveryengine.v1alpha.SearchRequest.FacetSpec.FacetKey.intervals].
129
+ string order_by = 7;
130
+ }
131
+
132
+ // Required. The facet key specification.
133
+ FacetKey facet_key = 1 [(google.api.field_behavior) = REQUIRED];
134
+
135
+ // Maximum of facet values that should be returned for this facet. If
136
+ // unspecified, defaults to 20. The maximum allowed value is 300. Values
137
+ // above 300 are coerced to 300.
138
+ //
139
+ // If this field is negative, an `INVALID_ARGUMENT` is returned.
140
+ int32 limit = 2;
141
+
142
+ // List of keys to exclude when faceting.
143
+ //
144
+ //
145
+ // By default,
146
+ // [FacetKey.key][google.cloud.discoveryengine.v1alpha.SearchRequest.FacetSpec.FacetKey.key]
147
+ // is not excluded from the filter unless it is listed in this field.
148
+ //
149
+ // Listing a facet key in this field allows its values to appear as facet
150
+ // results, even when they are filtered out of search results. Using this
151
+ // field does not affect what search results are returned.
152
+ //
153
+ // For example, suppose there are 100 documents with the color facet "Red"
154
+ // and 200 documents with the color facet "Blue". A query containing the
155
+ // filter "color:ANY("Red")" and having "color" as
156
+ // [FacetKey.key][google.cloud.discoveryengine.v1alpha.SearchRequest.FacetSpec.FacetKey.key]
157
+ // would by default return only "Red" documents in the search results, and
158
+ // also return "Red" with count 100 as the only color facet. Although there
159
+ // are also blue documents available, "Blue" would not be shown as an
160
+ // available facet value.
161
+ //
162
+ // If "color" is listed in "excludedFilterKeys", then the query returns the
163
+ // facet values "Red" with count 100 and "Blue" with count 200, because the
164
+ // "color" key is now excluded from the filter. Because this field doesn't
165
+ // affect search results, the search results are still correctly filtered to
166
+ // return only "Red" documents.
167
+ //
168
+ // A maximum of 100 values are allowed. Otherwise, an `INVALID_ARGUMENT`
169
+ // error is returned.
170
+ repeated string excluded_filter_keys = 3;
171
+
172
+ // Enables dynamic position for this facet. If set to true, the position of
173
+ // this facet among all facets in the response is determined automatically.
174
+ // If dynamic facets are enabled, it is ordered together.
175
+ // If set to false, the position of this facet in the
176
+ // response is the same as in the request, and it is ranked before
177
+ // the facets with dynamic position enable and all dynamic facets.
178
+ //
179
+ // For example, you may always want to have rating facet returned in
180
+ // the response, but it's not necessarily to always display the rating facet
181
+ // at the top. In that case, you can set enable_dynamic_position to true so
182
+ // that the position of rating facet in response is determined
183
+ // automatically.
184
+ //
185
+ // Another example, assuming you have the following facets in the request:
186
+ //
187
+ // * "rating", enable_dynamic_position = true
188
+ //
189
+ // * "price", enable_dynamic_position = false
190
+ //
191
+ // * "brands", enable_dynamic_position = false
192
+ //
193
+ // And also you have a dynamic facets enabled, which generates a facet
194
+ // `gender`. Then the final order of the facets in the response can be
195
+ // ("price", "brands", "rating", "gender") or ("price", "brands", "gender",
196
+ // "rating") depends on how API orders "gender" and "rating" facets.
197
+ // However, notice that "price" and "brands" are always
198
+ // ranked at first and second position because their enable_dynamic_position
199
+ // is false.
200
+ bool enable_dynamic_position = 4;
201
+ }
202
+
203
+ // Boost specification to boost certain documents.
204
+ message BoostSpec {
205
+ // Boost applies to documents which match a condition.
206
+ message ConditionBoostSpec {
207
+ // An expression which specifies a boost condition. The syntax and
208
+ // supported fields are the same as a filter expression. See
209
+ // [SearchRequest.filter][google.cloud.discoveryengine.v1alpha.SearchRequest.filter]
210
+ // for detail syntax and limitations.
211
+ //
212
+ // Examples:
213
+ //
214
+ // * To boost documents with document ID "doc_1" or "doc_2", and
215
+ // color
216
+ // "Red" or "Blue":
217
+ // * (id: ANY("doc_1", "doc_2")) AND (color: ANY("Red","Blue"))
218
+ string condition = 1;
219
+
220
+ // Strength of the condition boost, which should be in [-1, 1]. Negative
221
+ // boost means demotion. Default is 0.0.
222
+ //
223
+ // Setting to 1.0 gives the document a big promotion. However, it does not
224
+ // necessarily mean that the boosted document will be the top result at
225
+ // all times, nor that other documents will be excluded. Results could
226
+ // still be shown even when none of them matches the condition. And
227
+ // results that are significantly more relevant to the search query can
228
+ // still trump your heavily favored but irrelevant documents.
229
+ //
230
+ // Setting to -1.0 gives the document a big demotion. However, results
231
+ // that are deeply relevant might still be shown. The document will have
232
+ // an upstream battle to get a fairly high ranking, but it is not blocked
233
+ // out completely.
234
+ //
235
+ // Setting to 0.0 means no boost applied. The boosting condition is
236
+ // ignored.
237
+ float boost = 2;
238
+ }
239
+
240
+ // Condition boost specifications. If a document matches multiple conditions
241
+ // in the specifictions, boost scores from these specifications are all
242
+ // applied and combined in a non-linear way. Maximum number of
243
+ // specifications is 20.
244
+ repeated ConditionBoostSpec condition_boost_specs = 1;
245
+ }
246
+
247
+ // Specification to determine under which conditions query expansion should
248
+ // occur.
249
+ message QueryExpansionSpec {
250
+ // Enum describing under which condition query expansion should occur.
251
+ enum Condition {
252
+ // Unspecified query expansion condition. In this case, server behavior
253
+ // defaults to
254
+ // [Condition.DISABLED][google.cloud.discoveryengine.v1alpha.SearchRequest.QueryExpansionSpec.Condition.DISABLED].
255
+ CONDITION_UNSPECIFIED = 0;
256
+
257
+ // Disabled query expansion. Only the exact search query is used, even if
258
+ // [SearchResponse.total_size][google.cloud.discoveryengine.v1alpha.SearchResponse.total_size]
259
+ // is zero.
260
+ DISABLED = 1;
261
+
262
+ // Automatic query expansion built by the Search API.
263
+ AUTO = 2;
264
+ }
265
+
266
+ // The condition under which query expansion should occur. Default to
267
+ // [Condition.DISABLED][google.cloud.discoveryengine.v1alpha.SearchRequest.QueryExpansionSpec.Condition.DISABLED].
268
+ Condition condition = 1;
269
+
270
+ // Whether to pin unexpanded results. If this field is set to true,
271
+ // unexpanded products are always at the top of the search results, followed
272
+ // by the expanded results.
273
+ bool pin_unexpanded_results = 2;
274
+ }
275
+
276
+ // The specification for query spell correction.
277
+ message SpellCorrectionSpec {
278
+ // Enum describing under which mode spell correction should occur.
279
+ enum Mode {
280
+ // Unspecified spell correction mode. In this case, server behavior
281
+ // defaults to
282
+ // [Mode.AUTO][google.cloud.discoveryengine.v1alpha.SearchRequest.SpellCorrectionSpec.Mode.AUTO].
283
+ MODE_UNSPECIFIED = 0;
284
+
285
+ // Search API will try to find a spell suggestion if there
286
+ // is any and put in the
287
+ // [SearchResponse.corrected_query][google.cloud.discoveryengine.v1alpha.SearchResponse.corrected_query].
288
+ // The spell suggestion will not be used as the search query.
289
+ SUGGESTION_ONLY = 1;
290
+
291
+ // Automatic spell correction built by the Search API. Search will
292
+ // be based on the corrected query if found.
293
+ AUTO = 2;
294
+ }
295
+
296
+ // The mode under which spell correction should take effect to
297
+ // replace the original search query. Default to
298
+ // [Mode.AUTO][google.cloud.discoveryengine.v1alpha.SearchRequest.SpellCorrectionSpec.Mode.AUTO].
299
+ Mode mode = 1;
300
+ }
301
+
302
+ // A specification for configuring the behavior of content search.
303
+ message ContentSearchSpec {
304
+ // A specification for configuring snippets in a search response.
305
+ message SnippetSpec {
306
+ // [DEPRECATED] This field is deprecated. To control snippet return, use
307
+ // `return_snippet` field. For backwards compatibility, we will return
308
+ // snippet if max_snippet_count > 0.
309
+ int32 max_snippet_count = 1 [deprecated = true];
310
+
311
+ // [DEPRECATED] This field is deprecated and will have no affect on the
312
+ // snippet.
313
+ bool reference_only = 2 [deprecated = true];
314
+
315
+ // If `true`, then return snippet. If no snippet can be generated, we
316
+ // return "No snippet is available for this page." A `snippet_status` with
317
+ // `SUCCESS` or `NO_SNIPPET_AVAILABLE` will also be returned.
318
+ bool return_snippet = 3;
319
+ }
320
+
321
+ // A specification for configuring a summary returned in a search
322
+ // response.
323
+ message SummarySpec {
324
+ // The number of top results to generate the summary from. If the number
325
+ // of results returned is less than `summaryResultCount`, the summary is
326
+ // generated from all of the results.
327
+ //
328
+ // At most five results can be used to generate a summary.
329
+ int32 summary_result_count = 1;
330
+
331
+ // Specifies whether to include citations in the summary. The default
332
+ // value is `false`.
333
+ //
334
+ // When this field is set to `true`, summaries include in-line citation
335
+ // numbers.
336
+ //
337
+ // Example summary including citations:
338
+ //
339
+ // BigQuery is Google Cloud's fully managed and completely serverless
340
+ // enterprise data warehouse [1]. BigQuery supports all data types, works
341
+ // across clouds, and has built-in machine learning and business
342
+ // intelligence, all within a unified platform [2, 3].
343
+ //
344
+ // The citation numbers refer to the returned search results and are
345
+ // 1-indexed. For example, [1] means that the sentence is attributed to
346
+ // the first search result. [2, 3] means that the sentence is attributed
347
+ // to both the second and third search results.
348
+ bool include_citations = 2;
349
+
350
+ // Specifies whether to filter out adversarial queries. The default value
351
+ // is `false`.
352
+ //
353
+ // Google employs search-query classification to detect adversarial
354
+ // queries. No summary is returned if the search query is classified as an
355
+ // adversarial query. For example, a user might ask a question regarding
356
+ // negative comments about the company or submit a query designed to
357
+ // generate unsafe, policy-violating output. If this field is set to
358
+ // `true`, we skip generating summaries for adversarial queries and return
359
+ // fallback messages instead.
360
+ bool ignore_adversarial_query = 3;
361
+
362
+ // Specifies whether to filter out queries that are not summary-seeking.
363
+ // The default value is `false`.
364
+ //
365
+ // Google employs search-query classification to detect summary-seeking
366
+ // queries. No summary is returned if the search query is classified as a
367
+ // non-summary seeking query. For example, `why is the sky blue` and `Who
368
+ // is the best soccer player in the world?` are summary-seeking queries,
369
+ // but `SFO airport` and `world cup 2026` are not. They are most likely
370
+ // navigational queries. If this field is set to `true`, we skip
371
+ // generating summaries for non-summary seeking queries and return
372
+ // fallback messages instead.
373
+ bool ignore_non_summary_seeking_query = 4;
374
+
375
+ // Language code for Summary. Use language tags defined by
376
+ // [BCP47](https://www.rfc-editor.org/rfc/bcp/bcp47.txt).
377
+ // Note: This is an experimental feature.
378
+ string language_code = 6;
379
+ }
380
+
381
+ // A specification for configuring the extractive content in a search
382
+ // response.
383
+ message ExtractiveContentSpec {
384
+ // The maximum number of extractive answers returned in each search
385
+ // result.
386
+ //
387
+ // An extractive answer is a verbatim answer extracted from the original
388
+ // document, which provides a precise and contextually relevant answer to
389
+ // the search query.
390
+ //
391
+ // If the number of matching answers is less than the
392
+ // `max_extractive_answer_count`, return all of the answers. Otherwise,
393
+ // return the `max_extractive_answer_count`.
394
+ //
395
+ // At most one answer is returned for each
396
+ // [SearchResult][google.cloud.discoveryengine.v1alpha.SearchResponse.SearchResult].
397
+ int32 max_extractive_answer_count = 1;
398
+
399
+ // The max number of extractive segments returned in each search result.
400
+ // Only applied if the
401
+ // [DataStore][google.cloud.discoveryengine.v1alpha.DataStore] is set to
402
+ // [DataStore.ContentConfig.CONTENT_REQUIRED][google.cloud.discoveryengine.v1alpha.DataStore.ContentConfig.CONTENT_REQUIRED]
403
+ // or
404
+ // [DataStore.solution_types][google.cloud.discoveryengine.v1alpha.DataStore.solution_types]
405
+ // is
406
+ // [SOLUTION_TYPE_CHAT][google.cloud.discoveryengine.v1alpha.SolutionType.SOLUTION_TYPE_CHAT].
407
+ //
408
+ // An extractive segment is a text segment extracted from the original
409
+ // document that is relevant to the search query, and, in general, more
410
+ // verbose than an extractive answer. The segment could then be used as
411
+ // input for LLMs to generate summaries and answers.
412
+ //
413
+ // If the number of matching segments is less than
414
+ // `max_extractive_segment_count`, return all of the segments. Otherwise,
415
+ // return the `max_extractive_segment_count`.
416
+ int32 max_extractive_segment_count = 2;
417
+
418
+ // Specifies whether to return the confidence score from the extractive
419
+ // segments in each search result. The default value is `false`.
420
+ //
421
+ // Note: this is a priavte preview feature and only works for allowlisted
422
+ // users, please reach out to Cloud Support team if you want to use it.
423
+ bool return_extractive_segment_score = 3;
424
+
425
+ // Specifies whether to also include the adjacent from each selected
426
+ // segments.
427
+ // Return at most `num_previous_segments` segments before each selected
428
+ // segments.
429
+ int32 num_previous_segments = 4;
430
+
431
+ // Return at most `num_next_segments` segments after each selected
432
+ // segments.
433
+ int32 num_next_segments = 5;
434
+ }
435
+
436
+ // If `snippetSpec` is not specified, snippets are not included in the
437
+ // search response.
438
+ SnippetSpec snippet_spec = 1;
439
+
440
+ // If `summarySpec` is not specified, summaries are not included in the
441
+ // search response.
442
+ SummarySpec summary_spec = 2;
443
+
444
+ // If there is no extractive_content_spec provided, there will be no
445
+ // extractive answer in the search response.
446
+ ExtractiveContentSpec extractive_content_spec = 3;
447
+ }
448
+
449
+ // The specification that uses customized query embedding vector to do
450
+ // semantic document retrieval.
451
+ message EmbeddingSpec {
452
+ // Embedding vector.
453
+ message EmbeddingVector {
454
+ // Embedding field path in schema.
455
+ string field_path = 1;
456
+
457
+ // Query embedding vector.
458
+ repeated float vector = 2;
459
+ }
460
+
461
+ // The embedding vector used for retrieval. Limit to 1.
462
+ repeated EmbeddingVector embedding_vectors = 1;
463
+ }
464
+
465
+ // Required. The resource name of the Search serving config, such as
466
+ // `projects/*/locations/global/collections/default_collection/dataStores/default_data_store/servingConfigs/default_serving_config`.
467
+ // This field is used to identify the serving configuration name, set
468
+ // of models used to make the search.
469
+ string serving_config = 1 [
470
+ (google.api.field_behavior) = REQUIRED,
471
+ (google.api.resource_reference) = {
472
+ type: "discoveryengine.googleapis.com/ServingConfig"
473
+ }
474
+ ];
475
+
476
+ // The branch resource name, such as
477
+ // `projects/*/locations/global/collections/default_collection/dataStores/default_data_store/branches/0`.
478
+ //
479
+ // Use `default_branch` as the branch ID or leave this field empty, to search
480
+ // documents under the default branch.
481
+ string branch = 2 [(google.api.resource_reference) = {
482
+ type: "discoveryengine.googleapis.com/Branch"
483
+ }];
484
+
485
+ // Raw search query.
486
+ string query = 3;
487
+
488
+ // Raw image query.
489
+ ImageQuery image_query = 19;
490
+
491
+ // Maximum number of
492
+ // [Document][google.cloud.discoveryengine.v1alpha.Document]s to return. If
493
+ // unspecified, defaults to a reasonable value. The maximum allowed value is
494
+ // 100. Values above 100 are coerced to 100.
495
+ //
496
+ // If this field is negative, an `INVALID_ARGUMENT` is returned.
497
+ int32 page_size = 4;
498
+
499
+ // A page token received from a previous
500
+ // [SearchService.Search][google.cloud.discoveryengine.v1alpha.SearchService.Search]
501
+ // call. Provide this to retrieve the subsequent page.
502
+ //
503
+ // When paginating, all other parameters provided to
504
+ // [SearchService.Search][google.cloud.discoveryengine.v1alpha.SearchService.Search]
505
+ // must match the call that provided the page token. Otherwise, an
506
+ // `INVALID_ARGUMENT` error is returned.
507
+ string page_token = 5;
508
+
509
+ // A 0-indexed integer that specifies the current offset (that is, starting
510
+ // result location, amongst the
511
+ // [Document][google.cloud.discoveryengine.v1alpha.Document]s deemed by the
512
+ // API as relevant) in search results. This field is only considered if
513
+ // [page_token][google.cloud.discoveryengine.v1alpha.SearchRequest.page_token]
514
+ // is unset.
515
+ //
516
+ // If this field is negative, an `INVALID_ARGUMENT` is returned.
517
+ int32 offset = 6;
518
+
519
+ // The filter syntax consists of an expression language for constructing a
520
+ // predicate from one or more fields of the documents being filtered. Filter
521
+ // expression is case-sensitive.
522
+ //
523
+ // If this field is unrecognizable, an `INVALID_ARGUMENT` is returned.
524
+ string filter = 7;
525
+
526
+ // The order in which documents are returned. Documents can be ordered by
527
+ // a field in an [Document][google.cloud.discoveryengine.v1alpha.Document]
528
+ // object. Leave it unset if ordered by relevance. `order_by` expression is
529
+ // case-sensitive.
530
+ //
531
+ // If this field is unrecognizable, an `INVALID_ARGUMENT` is returned.
532
+ string order_by = 8;
533
+
534
+ // Information about the end user.
535
+ // Highly recommended for analytics.
536
+ // [UserInfo.user_agent][google.cloud.discoveryengine.v1alpha.UserInfo.user_agent]
537
+ // is used to deduce `device_type` for analytics.
538
+ UserInfo user_info = 21;
539
+
540
+ // Facet specifications for faceted search. If empty, no facets are returned.
541
+ //
542
+ // A maximum of 100 values are allowed. Otherwise, an `INVALID_ARGUMENT`
543
+ // error is returned.
544
+ repeated FacetSpec facet_specs = 9;
545
+
546
+ // Boost specification to boost certain documents.
547
+ BoostSpec boost_spec = 10;
548
+
549
+ // Additional search parameters.
550
+ //
551
+ // For public website search only, supported values are:
552
+ //
553
+ // * `user_country_code`: string. Default empty. If set to non-empty, results
554
+ // are restricted or boosted based on the location provided.
555
+ // * `search_type`: double. Default empty. Enables non-webpage searching
556
+ // depending on the value. The only valid non-default value is 1,
557
+ // which enables image searching.
558
+ map<string, google.protobuf.Value> params = 11;
559
+
560
+ // The query expansion specification that specifies the conditions under which
561
+ // query expansion occurs.
562
+ QueryExpansionSpec query_expansion_spec = 13;
563
+
564
+ // The spell correction specification that specifies the mode under
565
+ // which spell correction takes effect.
566
+ SpellCorrectionSpec spell_correction_spec = 14;
567
+
568
+ // A unique identifier for tracking visitors. For example, this could be
569
+ // implemented with an HTTP cookie, which should be able to uniquely identify
570
+ // a visitor on a single device. This unique identifier should not change if
571
+ // the visitor logs in or out of the website.
572
+ //
573
+ // This field should NOT have a fixed value such as `unknown_visitor`.
574
+ //
575
+ // This should be the same identifier as
576
+ // [UserEvent.user_pseudo_id][google.cloud.discoveryengine.v1alpha.UserEvent.user_pseudo_id]
577
+ // and
578
+ // [CompleteQueryRequest.user_pseudo_id][google.cloud.discoveryengine.v1alpha.CompleteQueryRequest.user_pseudo_id]
579
+ //
580
+ // The field must be a UTF-8 encoded string with a length limit of 128
581
+ // characters. Otherwise, an `INVALID_ARGUMENT` error is returned.
582
+ string user_pseudo_id = 15;
583
+
584
+ // A specification for configuring the behavior of content search.
585
+ ContentSearchSpec content_search_spec = 24;
586
+
587
+ // Uses the provided embedding to do additional semantic document retrieval.
588
+ // The retrieval is based on the dot product of
589
+ // [SearchRequest.embedding_spec.embedding_vectors.vector][] and the document
590
+ // embedding that is provided in
591
+ // [SearchRequest.embedding_spec.embedding_vectors.field_path][].
592
+ //
593
+ // If [SearchRequest.embedding_spec.embedding_vectors.field_path][] is not
594
+ // provided, it will use [ServingConfig.embedding_config.field_paths][].
595
+ EmbeddingSpec embedding_spec = 23;
596
+
597
+ // The ranking expression controls the customized ranking on retrieval
598
+ // documents. This overrides
599
+ // [ServingConfig.ranking_expression][google.cloud.discoveryengine.v1alpha.ServingConfig.ranking_expression].
600
+ // The ranking expression is a single function or multiple functions that are
601
+ // joint by "+".
602
+ // * ranking_expression = function, { " + ", function };
603
+ // Supported functions:
604
+ // * double * relevance_score
605
+ // * double * dotProduct(embedding_field_path)
606
+ // Function variables:
607
+ // `relevance_score`: pre-defined keywords, used for measure relevance
608
+ // between query and document.
609
+ // `embedding_field_path`: the document embedding field
610
+ // used with query embedding vector.
611
+ // `dotProduct`: embedding function between embedding_field_path and query
612
+ // embedding vector.
613
+ //
614
+ // Example ranking expression:
615
+ // If document has an embedding field doc_embedding, the ranking expression
616
+ // could be `0.5 * relevance_score + 0.3 * dotProduct(doc_embedding)`.
617
+ string ranking_expression = 26;
618
+
619
+ // Whether to turn on safe search. This is only supported for
620
+ // website search.
621
+ bool safe_search = 20;
622
+
623
+ // The user labels applied to a resource must meet the following requirements:
624
+ //
625
+ // * Each resource can have multiple labels, up to a maximum of 64.
626
+ // * Each label must be a key-value pair.
627
+ // * Keys have a minimum length of 1 character and a maximum length of 63
628
+ // characters and cannot be empty. Values can be empty and have a maximum
629
+ // length of 63 characters.
630
+ // * Keys and values can contain only lowercase letters, numeric characters,
631
+ // underscores, and dashes. All characters must use UTF-8 encoding, and
632
+ // international characters are allowed.
633
+ // * The key portion of a label must be unique. However, you can use the same
634
+ // key with multiple resources.
635
+ // * Keys must start with a lowercase letter or international character.
636
+ //
637
+ // See [Google Cloud
638
+ // Document](https://cloud.google.com/resource-manager/docs/creating-managing-labels#requirements)
639
+ // for more details.
640
+ map<string, string> user_labels = 22;
641
+ }
642
+
643
+ // Response message for
644
+ // [SearchService.Search][google.cloud.discoveryengine.v1alpha.SearchService.Search]
645
+ // method.
646
+ message SearchResponse {
647
+ // Represents the search results.
648
+ message SearchResult {
649
+ // [Document.id][google.cloud.discoveryengine.v1alpha.Document.id] of the
650
+ // searched [Document][google.cloud.discoveryengine.v1alpha.Document].
651
+ string id = 1;
652
+
653
+ // The document data snippet in the search response. Only fields that are
654
+ // marked as retrievable are populated.
655
+ Document document = 2;
656
+
657
+ // Google provided available scores.
658
+ map<string, DoubleList> model_scores = 4;
659
+ }
660
+
661
+ // A facet result.
662
+ message Facet {
663
+ // A facet value which contains value names and their count.
664
+ message FacetValue {
665
+ // A facet value which contains values.
666
+ oneof facet_value {
667
+ // Text value of a facet, such as "Black" for facet "colors".
668
+ string value = 1;
669
+
670
+ // Interval value for a facet, such as [10, 20) for facet "price". It
671
+ // matches
672
+ // [SearchRequest.FacetSpec.FacetKey.intervals][google.cloud.discoveryengine.v1alpha.SearchRequest.FacetSpec.FacetKey.intervals].
673
+ Interval interval = 2;
674
+ }
675
+
676
+ // Number of items that have this facet value.
677
+ int64 count = 3;
678
+ }
679
+
680
+ // The key for this facet. E.g., "colors" or "price". It matches
681
+ // [SearchRequest.FacetSpec.FacetKey.key][google.cloud.discoveryengine.v1alpha.SearchRequest.FacetSpec.FacetKey.key].
682
+ string key = 1;
683
+
684
+ // The facet values for this field.
685
+ repeated FacetValue values = 2;
686
+
687
+ // Whether the facet is dynamically generated.
688
+ bool dynamic_facet = 3;
689
+ }
690
+
691
+ // Guided search result. The guided search helps user to refine the search
692
+ // results and narrow down to the real needs from a broaded search results.
693
+ message GuidedSearchResult {
694
+ // Useful attribute for search result refinements.
695
+ message RefinementAttribute {
696
+ // Attribute key used to refine the results e.g. 'movie_type'.
697
+ string attribute_key = 1;
698
+
699
+ // Attribute value used to refine the results e.g. 'drama'.
700
+ string attribute_value = 2;
701
+ }
702
+
703
+ // A list of ranked refinement attributes.
704
+ repeated RefinementAttribute refinement_attributes = 1;
705
+
706
+ // Suggested follow-up questions.
707
+ repeated string follow_up_questions = 2;
708
+ }
709
+
710
+ // Summary of the top N search result specified by the summary spec.
711
+ message Summary {
712
+ // Safety Attribute categories and their associated confidence scores.
713
+ message SafetyAttributes {
714
+ // The display names of Safety Attribute categories associated with the
715
+ // generated content. Order matches the Scores.
716
+ repeated string categories = 1;
717
+
718
+ // The confidence scores of the each category, higher
719
+ // value means higher confidence. Order matches the Categories.
720
+ repeated float scores = 2;
721
+ }
722
+
723
+ // An Enum for summary-skipped reasons.
724
+ enum SummarySkippedReason {
725
+ // Default value. The summary skipped reason is not specified.
726
+ SUMMARY_SKIPPED_REASON_UNSPECIFIED = 0;
727
+
728
+ // The adversarial query ignored case.
729
+ //
730
+ // Only populated when
731
+ // [SummarySpec.ignore_adversarial_query][google.cloud.discoveryengine.v1alpha.SearchRequest.ContentSearchSpec.SummarySpec.ignore_adversarial_query]
732
+ // is set to `true`.
733
+ ADVERSARIAL_QUERY_IGNORED = 1;
734
+
735
+ // The non-summary seeking query ignored case.
736
+ //
737
+ // Only populated when
738
+ // [SummarySpec.ignore_non_summary_seeking_query][google.cloud.discoveryengine.v1alpha.SearchRequest.ContentSearchSpec.SummarySpec.ignore_non_summary_seeking_query]
739
+ // is set to `true`.
740
+ NON_SUMMARY_SEEKING_QUERY_IGNORED = 2;
741
+
742
+ // The out-of-domain query ignored case.
743
+ //
744
+ // Google skips the summary if there are no high-relevance search results.
745
+ // For example, the data store contains facts about company A but the
746
+ // user query is asking questions about company B.
747
+ OUT_OF_DOMAIN_QUERY_IGNORED = 3;
748
+
749
+ // The potential policy violation case.
750
+ //
751
+ // Google skips the summary if there is a potential policy violation
752
+ // detected. This includes content that may be violent or toxic.
753
+ POTENTIAL_POLICY_VIOLATION = 4;
754
+
755
+ // The LLM addon not enabled case.
756
+ //
757
+ // Google skips the summary if the LLM addon is not enabled.
758
+ LLM_ADDON_NOT_ENABLED = 5;
759
+ }
760
+
761
+ // The summary content.
762
+ string summary_text = 1;
763
+
764
+ // Additional summary-skipped reasons. This provides the reason for ignored
765
+ // cases. If nothing is skipped, this field is not set.
766
+ repeated SummarySkippedReason summary_skipped_reasons = 2;
767
+
768
+ // A collection of Safety Attribute categories and their associated
769
+ // confidence scores.
770
+ SafetyAttributes safety_attributes = 3;
771
+ }
772
+
773
+ // Debug information specifically related to forward geocoding issues arising
774
+ // from Geolocation Search.
775
+ message GeoSearchDebugInfo {
776
+ // The address from which forward geocoding ingestion produced issues.
777
+ string original_address_query = 1;
778
+
779
+ // The error produced.
780
+ string error_message = 2;
781
+ }
782
+
783
+ // Information describing query expansion including whether expansion has
784
+ // occurred.
785
+ message QueryExpansionInfo {
786
+ // Bool describing whether query expansion has occurred.
787
+ bool expanded_query = 1;
788
+
789
+ // Number of pinned results. This field will only be set when expansion
790
+ // happens and
791
+ // [SearchRequest.QueryExpansionSpec.pin_unexpanded_results][google.cloud.discoveryengine.v1alpha.SearchRequest.QueryExpansionSpec.pin_unexpanded_results]
792
+ // is set to true.
793
+ int64 pinned_result_count = 2;
794
+ }
795
+
796
+ // A list of matched documents. The order represents the ranking.
797
+ repeated SearchResult results = 1;
798
+
799
+ // Results of facets requested by user.
800
+ repeated Facet facets = 2;
801
+
802
+ // Guided search result.
803
+ GuidedSearchResult guided_search_result = 8;
804
+
805
+ // The estimated total count of matched items irrespective of pagination. The
806
+ // count of
807
+ // [results][google.cloud.discoveryengine.v1alpha.SearchResponse.results]
808
+ // returned by pagination may be less than the
809
+ // [total_size][google.cloud.discoveryengine.v1alpha.SearchResponse.total_size]
810
+ // that matches.
811
+ int32 total_size = 3;
812
+
813
+ // A unique search token. This should be included in the
814
+ // [UserEvent][google.cloud.discoveryengine.v1alpha.UserEvent] logs resulting
815
+ // from this search, which enables accurate attribution of search model
816
+ // performance.
817
+ string attribution_token = 4;
818
+
819
+ // The URI of a customer-defined redirect page. If redirect action is
820
+ // triggered, no search is performed, and only
821
+ // [redirect_uri][google.cloud.discoveryengine.v1alpha.SearchResponse.redirect_uri]
822
+ // and
823
+ // [attribution_token][google.cloud.discoveryengine.v1alpha.SearchResponse.attribution_token]
824
+ // are set in the response.
825
+ string redirect_uri = 12;
826
+
827
+ // A token that can be sent as
828
+ // [SearchRequest.page_token][google.cloud.discoveryengine.v1alpha.SearchRequest.page_token]
829
+ // to retrieve the next page. If this field is omitted, there are no
830
+ // subsequent pages.
831
+ string next_page_token = 5;
832
+
833
+ // Contains the spell corrected query, if found. If the spell correction type
834
+ // is AUTOMATIC, then the search results are based on corrected_query.
835
+ // Otherwise the original query is used for search.
836
+ string corrected_query = 7;
837
+
838
+ // A summary as part of the search results.
839
+ // This field is only returned if
840
+ // [SearchRequest.ContentSearchSpec.summary_spec][google.cloud.discoveryengine.v1alpha.SearchRequest.ContentSearchSpec.summary_spec]
841
+ // is set.
842
+ Summary summary = 9;
843
+
844
+ // Controls applied as part of the Control service.
845
+ repeated string applied_controls = 10;
846
+
847
+ repeated GeoSearchDebugInfo geo_search_debug_info = 16;
848
+
849
+ // Query expansion information for the returned results.
850
+ QueryExpansionInfo query_expansion_info = 14;
851
+ }