@google-cloud/discoveryengine 1.1.0 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
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
+ }