| // Copyright 2023 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.ai.generativelanguage.v1beta; |
| |
| import "google/api/field_behavior.proto"; |
| import "google/api/resource.proto"; |
| import "google/protobuf/timestamp.proto"; |
| |
| option go_package = "cloud.google.com/go/ai/generativelanguage/apiv1beta/generativelanguagepb;generativelanguagepb"; |
| option java_multiple_files = true; |
| option java_outer_classname = "RetrieverProto"; |
| option java_package = "com.google.ai.generativelanguage.v1beta"; |
| |
| // A `Corpus` is a collection of `Document`s. |
| // A project can create up to 5 corpora. |
| message Corpus { |
| option (google.api.resource) = { |
| type: "generativelanguage.googleapis.com/Corpus" |
| pattern: "corpora/{corpus}" |
| plural: "corpora" |
| singular: "corpus" |
| }; |
| |
| // Immutable. Identifier. The `Corpus` resource name. The ID (name excluding |
| // the "corpora/" prefix) can contain up to 40 characters that are lowercase |
| // alphanumeric or dashes |
| // (-). The ID cannot start or end with a dash. If the name is empty on |
| // create, a unique name will be derived from `display_name` along with a 12 |
| // character random suffix. |
| // Example: `corpora/my-awesome-corpora-123a456b789c` |
| string name = 1 [ |
| (google.api.field_behavior) = IDENTIFIER, |
| (google.api.field_behavior) = IMMUTABLE |
| ]; |
| |
| // Optional. The human-readable display name for the `Corpus`. The display |
| // name must be no more than 512 characters in length, including spaces. |
| // Example: "Docs on Semantic Retriever" |
| string display_name = 2 [(google.api.field_behavior) = OPTIONAL]; |
| |
| // Output only. The Timestamp of when the `Corpus` was created. |
| google.protobuf.Timestamp create_time = 3 |
| [(google.api.field_behavior) = OUTPUT_ONLY]; |
| |
| // Output only. The Timestamp of when the `Corpus` was last updated. |
| google.protobuf.Timestamp update_time = 4 |
| [(google.api.field_behavior) = OUTPUT_ONLY]; |
| } |
| |
| // A `Document` is a collection of `Chunk`s. |
| // A `Corpus` can have a maximum of 10,000 `Document`s. |
| message Document { |
| option (google.api.resource) = { |
| type: "generativelanguage.googleapis.com/Document" |
| pattern: "corpora/{corpus}/documents/{document}" |
| plural: "documents" |
| singular: "document" |
| }; |
| |
| // Immutable. Identifier. The `Document` resource name. The ID (name excluding |
| // the "corpora/*/documents/" prefix) can contain up to 40 characters that are |
| // lowercase alphanumeric or dashes (-). The ID cannot start or end with a |
| // dash. If the name is empty on create, a unique name will be derived from |
| // `display_name` along with a 12 character random suffix. |
| // Example: `corpora/{corpus_id}/documents/my-awesome-doc-123a456b789c` |
| string name = 1 [ |
| (google.api.field_behavior) = IDENTIFIER, |
| (google.api.field_behavior) = IMMUTABLE |
| ]; |
| |
| // Optional. The human-readable display name for the `Document`. The display |
| // name must be no more than 512 characters in length, including spaces. |
| // Example: "Semantic Retriever Documentation" |
| string display_name = 2 [(google.api.field_behavior) = OPTIONAL]; |
| |
| // Optional. User provided custom metadata stored as key-value pairs used for |
| // querying. A `Document` can have a maximum of 20 `CustomMetadata`. |
| repeated CustomMetadata custom_metadata = 3 |
| [(google.api.field_behavior) = OPTIONAL]; |
| |
| // Output only. The Timestamp of when the `Document` was last updated. |
| google.protobuf.Timestamp update_time = 4 |
| [(google.api.field_behavior) = OUTPUT_ONLY]; |
| |
| // Output only. The Timestamp of when the `Document` was created. |
| google.protobuf.Timestamp create_time = 5 |
| [(google.api.field_behavior) = OUTPUT_ONLY]; |
| } |
| |
| // User provided string values assigned to a single metadata key. |
| message StringList { |
| // The string values of the metadata to store. |
| repeated string values = 1; |
| } |
| |
| // User provided metadata stored as key-value pairs. |
| message CustomMetadata { |
| oneof value { |
| // The string value of the metadata to store. |
| string string_value = 2; |
| |
| // The StringList value of the metadata to store. |
| StringList string_list_value = 6; |
| |
| // The numeric value of the metadata to store. |
| float numeric_value = 7; |
| } |
| |
| // Required. The key of the metadata to store. |
| string key = 1 [(google.api.field_behavior) = REQUIRED]; |
| } |
| |
| // User provided filter to limit retrieval based on `Chunk` or `Document` level |
| // metadata values. |
| // Example (genre = drama OR genre = action): |
| // key = "document.custom_metadata.genre" |
| // conditions = [{string_value = "drama", operation = EQUAL}, |
| // {string_value = "action", operation = EQUAL}] |
| message MetadataFilter { |
| // Required. The key of the metadata to filter on. |
| string key = 1 [(google.api.field_behavior) = REQUIRED]; |
| |
| // Required. The `Condition`s for the given key that will trigger this filter. |
| // Multiple `Condition`s are joined by logical ORs. |
| repeated Condition conditions = 2 [(google.api.field_behavior) = REQUIRED]; |
| } |
| |
| // Filter condition applicable to a single key. |
| message Condition { |
| // Defines the valid operators that can be applied to a key-value pair. |
| enum Operator { |
| // The default value. This value is unused. |
| OPERATOR_UNSPECIFIED = 0; |
| |
| // Supported by numeric. |
| LESS = 1; |
| |
| // Supported by numeric. |
| LESS_EQUAL = 2; |
| |
| // Supported by numeric & string. |
| EQUAL = 3; |
| |
| // Supported by numeric. |
| GREATER_EQUAL = 4; |
| |
| // Supported by numeric. |
| GREATER = 5; |
| |
| // Supported by numeric & string. |
| NOT_EQUAL = 6; |
| |
| // Supported by string only when `CustomMetadata` value type for the given |
| // key has a `string_list_value`. |
| INCLUDES = 7; |
| |
| // Supported by string only when `CustomMetadata` value type for the given |
| // key has a `string_list_value`. |
| EXCLUDES = 8; |
| } |
| |
| // The value type must be consistent with the value type defined in the field |
| // for the corresponding key. If the value types are not consistent, the |
| // result will be an empty set. When the `CustomMetadata` has a `StringList` |
| // value type, the filtering condition should use `string_value` paired with |
| // an INCLUDES/EXCLUDES operation, otherwise the result will also be an empty |
| // set. |
| oneof value { |
| // The string value to filter the metadata on. |
| string string_value = 1; |
| |
| // The numeric value to filter the metadata on. |
| float numeric_value = 6; |
| } |
| |
| // Required. Operator applied to the given key-value pair to trigger the |
| // condition. |
| Operator operation = 5 [(google.api.field_behavior) = REQUIRED]; |
| } |
| |
| // A `Chunk` is a subpart of a `Document` that is treated as an independent unit |
| // for the purposes of vector representation and storage. |
| // A `Corpus` can have a maximum of 1 million `Chunk`s. |
| message Chunk { |
| option (google.api.resource) = { |
| type: "generativelanguage.googleapis.com/Chunk" |
| pattern: "corpora/{corpus}/documents/{document}/chunks/{chunk}" |
| plural: "chunks" |
| singular: "chunk" |
| }; |
| |
| // States for the lifecycle of a `Chunk`. |
| enum State { |
| // The default value. This value is used if the state is omitted. |
| STATE_UNSPECIFIED = 0; |
| |
| // `Chunk` is being processed (embedding and vector storage). |
| STATE_PENDING_PROCESSING = 1; |
| |
| // `Chunk` is processed and available for querying. |
| STATE_ACTIVE = 2; |
| |
| // `Chunk` failed processing. |
| STATE_FAILED = 10; |
| } |
| |
| // Immutable. Identifier. The `Chunk` resource name. The ID (name excluding |
| // the "corpora/*/documents/*/chunks/" prefix) can contain up to 40 characters |
| // that are lowercase alphanumeric or dashes (-). The ID cannot start or end |
| // with a dash. If the name is empty on create, a random 12-character unique |
| // ID will be generated. |
| // Example: `corpora/{corpus_id}/documents/{document_id}/chunks/123a456b789c` |
| string name = 1 [ |
| (google.api.field_behavior) = IDENTIFIER, |
| (google.api.field_behavior) = IMMUTABLE |
| ]; |
| |
| // Required. The content for the `Chunk`, such as the text string. |
| // The maximum number of tokens per chunk is 2043. |
| ChunkData data = 2 [(google.api.field_behavior) = REQUIRED]; |
| |
| // Optional. User provided custom metadata stored as key-value pairs. |
| // The maximum number of `CustomMetadata` per chunk is 20. |
| repeated CustomMetadata custom_metadata = 3 |
| [(google.api.field_behavior) = OPTIONAL]; |
| |
| // Output only. The Timestamp of when the `Chunk` was created. |
| google.protobuf.Timestamp create_time = 4 |
| [(google.api.field_behavior) = OUTPUT_ONLY]; |
| |
| // Output only. The Timestamp of when the `Chunk` was last updated. |
| google.protobuf.Timestamp update_time = 5 |
| [(google.api.field_behavior) = OUTPUT_ONLY]; |
| |
| // Output only. Current state of the `Chunk`. |
| State state = 6 [(google.api.field_behavior) = OUTPUT_ONLY]; |
| } |
| |
| // Extracted data that represents the `Chunk` content. |
| message ChunkData { |
| oneof data { |
| // The `Chunk` content as a string. |
| // The maximum number of tokens per chunk is 2043. |
| string string_value = 1; |
| } |
| } |