diff --git a/VectorSearch/metadata/V1/DataObjectSearchService.php b/VectorSearch/metadata/V1/DataObjectSearchService.php
index 7ec518151475..1bea43325bee 100644
--- a/VectorSearch/metadata/V1/DataObjectSearchService.php
+++ b/VectorSearch/metadata/V1/DataObjectSearchService.php
@@ -23,7 +23,7 @@ public static function initOnce() {
\GPBMetadata\Google\Cloud\Vectorsearch\V1\EmbeddingConfig::initOnce();
\GPBMetadata\Google\Protobuf\Struct::initOnce();
$pool->internalAddGeneratedFile(
- "\x0A\xD6)\x0A=google/cloud/vectorsearch/v1/data_object_search_service.proto\x12\x1Cgoogle.cloud.vectorsearch.v1\x1A\x17google/api/client.proto\x1A\x1Fgoogle/api/field_behavior.proto\x1A\x19google/api/resource.proto\x1A)google/cloud/vectorsearch/v1/common.proto\x1A.google/cloud/vectorsearch/v1/data_object.proto\x1A3google/cloud/vectorsearch/v1/embedding_config.proto\x1A\x1Cgoogle/protobuf/struct.proto\"b\x0A\x0COutputFields\x12\x18\x0A\x0Bdata_fields\x18\x01 \x03(\x09B\x03\xE0A\x01\x12\x1A\x0A\x0Dvector_fields\x18\x02 \x03(\x09B\x03\xE0A\x01\x12\x1C\x0A\x0Fmetadata_fields\x18\x03 \x03(\x09B\x03\xE0A\x01\"\x85\x02\x0A\x0ASearchHint\x12I\x0A\x08knn_hint\x18\x03 \x01(\x0B20.google.cloud.vectorsearch.v1.SearchHint.KnnHintB\x03\xE0A\x01H\x00\x12M\x0A\x0Aindex_hint\x18\x04 \x01(\x0B22.google.cloud.vectorsearch.v1.SearchHint.IndexHintB\x03\xE0A\x01H\x00\x1AD\x0A\x09IndexHint\x127\x0A\x04name\x18\x01 \x01(\x09B)\xE0A\x02\xFAA#\x0A!vectorsearch.googleapis.com/Index\x1A\x09\x0A\x07KnnHintB\x0C\x0A\x0Aindex_type\"\xE6\x01\x0A\x06Search\x12C\x0A\x0Dvector_search\x18\x01 \x01(\x0B2*.google.cloud.vectorsearch.v1.VectorSearchH\x00\x12G\x0A\x0Fsemantic_search\x18\x02 \x01(\x0B2,.google.cloud.vectorsearch.v1.SemanticSearchH\x00\x12?\x0A\x0Btext_search\x18\x03 \x01(\x0B2(.google.cloud.vectorsearch.v1.TextSearchH\x00B\x0D\x0A\x0Bsearch_type\"\xE3\x03\x0A\x0CVectorSearch\x12;\x0A\x06vector\x18\x01 \x01(\x0B2).google.cloud.vectorsearch.v1.DenseVectorH\x00\x12C\x0A\x0Dsparse_vector\x18\x02 \x01(\x0B2*.google.cloud.vectorsearch.v1.SparseVectorH\x00\x12\x19\x0A\x0Csearch_field\x18\x08 \x01(\x09B\x03\xE0A\x02\x12,\x0A\x06filter\x18\x04 \x01(\x0B2\x17.google.protobuf.StructB\x03\xE0A\x01\x12\x17\x0A\x05top_k\x18\x05 \x01(\x05B\x03\xE0A\x01H\x01\x88\x01\x01\x12F\x0A\x0Doutput_fields\x18\x07 \x01(\x0B2*.google.cloud.vectorsearch.v1.OutputFieldsB\x03\xE0A\x01\x12B\x0A\x0Bsearch_hint\x18\x09 \x01(\x0B2(.google.cloud.vectorsearch.v1.SearchHintB\x03\xE0A\x01\x12J\x0A\x0Fdistance_metric\x18\x0B \x01(\x0E2,.google.cloud.vectorsearch.v1.DistanceMetricB\x03\xE0A\x01B\x0D\x0A\x0Bvector_typeB\x08\x0A\x06_top_k\"\xEB\x02\x0A\x0ESemanticSearch\x12\x18\x0A\x0Bsearch_text\x18\x01 \x01(\x09B\x03\xE0A\x02\x12\x19\x0A\x0Csearch_field\x18\x02 \x01(\x09B\x03\xE0A\x02\x12G\x0A\x09task_type\x18\x05 \x01(\x0E2/.google.cloud.vectorsearch.v1.EmbeddingTaskTypeB\x03\xE0A\x02\x12F\x0A\x0Doutput_fields\x18\x03 \x01(\x0B2*.google.cloud.vectorsearch.v1.OutputFieldsB\x03\xE0A\x01\x12,\x0A\x06filter\x18\x06 \x01(\x0B2\x17.google.protobuf.StructB\x03\xE0A\x01\x12\x17\x0A\x05top_k\x18\x04 \x01(\x05B\x03\xE0A\x01H\x00\x88\x01\x01\x12B\x0A\x0Bsearch_hint\x18\x07 \x01(\x0B2(.google.cloud.vectorsearch.v1.SearchHintB\x03\xE0A\x01B\x08\x0A\x06_top_k\"\xDE\x01\x0A\x0ATextSearch\x12\x18\x0A\x0Bsearch_text\x18\x01 \x01(\x09B\x03\xE0A\x01\x12\x1D\x0A\x10data_field_names\x18\x02 \x03(\x09B\x03\xE0A\x01\x12F\x0A\x0Doutput_fields\x18\x03 \x01(\x0B2*.google.cloud.vectorsearch.v1.OutputFieldsB\x03\xE0A\x01\x12\x17\x0A\x05top_k\x18\x04 \x01(\x05B\x03\xE0A\x01H\x00\x88\x01\x01\x12,\x0A\x06filter\x18\x05 \x01(\x0B2\x17.google.protobuf.StructB\x03\xE0A\x01B\x08\x0A\x06_top_k\"\xEE\x02\x0A\x18SearchDataObjectsRequest\x12C\x0A\x0Dvector_search\x18\x02 \x01(\x0B2*.google.cloud.vectorsearch.v1.VectorSearchH\x00\x12G\x0A\x0Fsemantic_search\x18\x04 \x01(\x0B2,.google.cloud.vectorsearch.v1.SemanticSearchH\x00\x12D\x0A\x0Btext_search\x18\x07 \x01(\x0B2(.google.cloud.vectorsearch.v1.TextSearchB\x03\xE0A\x01H\x00\x12>\x0A\x06parent\x18\x01 \x01(\x09B.\xE0A\x02\xFAA(\x0A&vectorsearch.googleapis.com/Collection\x12\x16\x0A\x09page_size\x18\x05 \x01(\x05B\x03\xE0A\x01\x12\x17\x0A\x0Apage_token\x18\x06 \x01(\x09B\x03\xE0A\x01B\x0D\x0A\x0Bsearch_type\"{\x0A\x0CSearchResult\x12B\x0A\x0Bdata_object\x18\x01 \x01(\x0B2(.google.cloud.vectorsearch.v1.DataObjectB\x03\xE0A\x03\x12\x1A\x0A\x08distance\x18\x02 \x01(\x01B\x03\xE0A\x03H\x00\x88\x01\x01B\x0B\x0A\x09_distance\"{\x0A\x19SearchDataObjectsResponse\x12@\x0A\x07results\x18\x01 \x03(\x0B2*.google.cloud.vectorsearch.v1.SearchResultB\x03\xE0A\x03\x12\x1C\x0A\x0Fnext_page_token\x18\x02 \x01(\x09B\x03\xE0A\x03\"\xD4\x01\x0A\x1BAggregateDataObjectsRequest\x12>\x0A\x06parent\x18\x01 \x01(\x09B.\xE0A\x02\xFAA(\x0A&vectorsearch.googleapis.com/Collection\x12,\x0A\x06filter\x18\x02 \x01(\x0B2\x17.google.protobuf.StructB\x03\xE0A\x01\x12G\x0A\x09aggregate\x18\x03 \x01(\x0E2/.google.cloud.vectorsearch.v1.AggregationMethodB\x03\xE0A\x02\"W\x0A\x1CAggregateDataObjectsResponse\x127\x0A\x11aggregate_results\x18\x01 \x03(\x0B2\x17.google.protobuf.StructB\x03\xE0A\x03\"\x80\x02\x0A\x17QueryDataObjectsRequest\x12>\x0A\x06parent\x18\x01 \x01(\x09B.\xE0A\x02\xFAA(\x0A&vectorsearch.googleapis.com/Collection\x12,\x0A\x06filter\x18\x02 \x01(\x0B2\x17.google.protobuf.StructB\x03\xE0A\x01\x12F\x0A\x0Doutput_fields\x18\x07 \x01(\x0B2*.google.cloud.vectorsearch.v1.OutputFieldsB\x03\xE0A\x01\x12\x16\x0A\x09page_size\x18\x05 \x01(\x05B\x03\xE0A\x01\x12\x17\x0A\x0Apage_token\x18\x06 \x01(\x09B\x03\xE0A\x01\"}\x0A\x18QueryDataObjectsResponse\x12C\x0A\x0Cdata_objects\x18\x04 \x03(\x0B2(.google.cloud.vectorsearch.v1.DataObjectB\x03\xE0A\x03\x12\x1C\x0A\x0Fnext_page_token\x18\x03 \x01(\x09B\x03\xE0A\x03\"\xB6\x03\x0A\x1DBatchSearchDataObjectsRequest\x12>\x0A\x06parent\x18\x01 \x01(\x09B.\xE0A\x02\xFAA(\x0A&vectorsearch.googleapis.com/Collection\x12;\x0A\x08searches\x18\x02 \x03(\x0B2\$.google.cloud.vectorsearch.v1.SearchB\x03\xE0A\x02\x12g\x0A\x07combine\x18\x03 \x01(\x0B2Q.google.cloud.vectorsearch.v1.BatchSearchDataObjectsRequest.CombineResultsOptionsB\x03\xE0A\x01\x1A\xAE\x01\x0A\x15CombineResultsOptions\x129\x0A\x06ranker\x18\x01 \x01(\x0B2\$.google.cloud.vectorsearch.v1.RankerB\x03\xE0A\x02\x12F\x0A\x0Doutput_fields\x18\x02 \x01(\x0B2*.google.cloud.vectorsearch.v1.OutputFieldsB\x03\xE0A\x01\x12\x12\x0A\x05top_k\x18\x03 \x01(\x05B\x03\xE0A\x01\"U\x0A\x06Ranker\x12A\x0A\x03rrf\x18\x01 \x01(\x0B22.google.cloud.vectorsearch.v1.ReciprocalRankFusionH\x00B\x08\x0A\x06ranker\",\x0A\x14ReciprocalRankFusion\x12\x14\x0A\x07weights\x18\x01 \x03(\x01B\x03\xE0A\x02\"o\x0A\x1EBatchSearchDataObjectsResponse\x12M\x0A\x07results\x18\x01 \x03(\x0B27.google.cloud.vectorsearch.v1.SearchDataObjectsResponseB\x03\xE0A\x03*B\x0A\x11AggregationMethod\x12\"\x0A\x1EAGGREGATION_METHOD_UNSPECIFIED\x10\x00\x12\x09\x0A\x05COUNT\x10\x012\xE6\x07\x0A\x17DataObjectSearchService\x12\xD5\x01\x0A\x11SearchDataObjects\x126.google.cloud.vectorsearch.v1.SearchDataObjectsRequest\x1A7.google.cloud.vectorsearch.v1.SearchDataObjectsResponse\"O\x82\xD3\xE4\x93\x02I\"D/v1/{parent=projects/*/locations/*/collections/*}/dataObjects:search:\x01*\x12\xD1\x01\x0A\x10QueryDataObjects\x125.google.cloud.vectorsearch.v1.QueryDataObjectsRequest\x1A6.google.cloud.vectorsearch.v1.QueryDataObjectsResponse\"N\x82\xD3\xE4\x93\x02H\"C/v1/{parent=projects/*/locations/*/collections/*}/dataObjects:query:\x01*\x12\xE1\x01\x0A\x14AggregateDataObjects\x129.google.cloud.vectorsearch.v1.AggregateDataObjectsRequest\x1A:.google.cloud.vectorsearch.v1.AggregateDataObjectsResponse\"R\x82\xD3\xE4\x93\x02L\"G/v1/{parent=projects/*/locations/*/collections/*}/dataObjects:aggregate:\x01*\x12\xE9\x01\x0A\x16BatchSearchDataObjects\x12;.google.cloud.vectorsearch.v1.BatchSearchDataObjectsRequest\x1A<.google.cloud.vectorsearch.v1.BatchSearchDataObjectsResponse\"T\x82\xD3\xE4\x93\x02N\"I/v1/{parent=projects/*/locations/*/collections/*}/dataObjects:batchSearch:\x01*\x1AO\xCAA\x1Bvectorsearch.googleapis.com\xD2A.https://www.googleapis.com/auth/cloud-platformB\xE8\x01\x0A com.google.cloud.vectorsearch.v1B\x1CDataObjectSearchServiceProtoP\x01ZDcloud.google.com/go/vectorsearch/apiv1/vectorsearchpb;vectorsearchpb\xAA\x02\x1CGoogle.Cloud.VectorSearch.V1\xCA\x02\x1CGoogle\\Cloud\\VectorSearch\\V1\xEA\x02\x1FGoogle::Cloud::VectorSearch::V1b\x06proto3"
+ "\x0A\xAE,\x0A=google/cloud/vectorsearch/v1/data_object_search_service.proto\x12\x1Cgoogle.cloud.vectorsearch.v1\x1A\x17google/api/client.proto\x1A\x1Fgoogle/api/field_behavior.proto\x1A\x19google/api/resource.proto\x1A)google/cloud/vectorsearch/v1/common.proto\x1A.google/cloud/vectorsearch/v1/data_object.proto\x1A3google/cloud/vectorsearch/v1/embedding_config.proto\x1A\x1Cgoogle/protobuf/struct.proto\"b\x0A\x0COutputFields\x12\x18\x0A\x0Bdata_fields\x18\x01 \x03(\x09B\x03\xE0A\x01\x12\x1A\x0A\x0Dvector_fields\x18\x02 \x03(\x09B\x03\xE0A\x01\x12\x1C\x0A\x0Fmetadata_fields\x18\x03 \x03(\x09B\x03\xE0A\x01\"\x85\x02\x0A\x0ASearchHint\x12I\x0A\x08knn_hint\x18\x03 \x01(\x0B20.google.cloud.vectorsearch.v1.SearchHint.KnnHintB\x03\xE0A\x01H\x00\x12M\x0A\x0Aindex_hint\x18\x04 \x01(\x0B22.google.cloud.vectorsearch.v1.SearchHint.IndexHintB\x03\xE0A\x01H\x00\x1AD\x0A\x09IndexHint\x127\x0A\x04name\x18\x01 \x01(\x09B)\xE0A\x02\xFAA#\x0A!vectorsearch.googleapis.com/Index\x1A\x09\x0A\x07KnnHintB\x0C\x0A\x0Aindex_type\"\xE6\x01\x0A\x06Search\x12C\x0A\x0Dvector_search\x18\x01 \x01(\x0B2*.google.cloud.vectorsearch.v1.VectorSearchH\x00\x12G\x0A\x0Fsemantic_search\x18\x02 \x01(\x0B2,.google.cloud.vectorsearch.v1.SemanticSearchH\x00\x12?\x0A\x0Btext_search\x18\x03 \x01(\x0B2(.google.cloud.vectorsearch.v1.TextSearchH\x00B\x0D\x0A\x0Bsearch_type\"\xE3\x03\x0A\x0CVectorSearch\x12;\x0A\x06vector\x18\x01 \x01(\x0B2).google.cloud.vectorsearch.v1.DenseVectorH\x00\x12C\x0A\x0Dsparse_vector\x18\x02 \x01(\x0B2*.google.cloud.vectorsearch.v1.SparseVectorH\x00\x12\x19\x0A\x0Csearch_field\x18\x08 \x01(\x09B\x03\xE0A\x02\x12,\x0A\x06filter\x18\x04 \x01(\x0B2\x17.google.protobuf.StructB\x03\xE0A\x01\x12\x17\x0A\x05top_k\x18\x05 \x01(\x05B\x03\xE0A\x01H\x01\x88\x01\x01\x12F\x0A\x0Doutput_fields\x18\x07 \x01(\x0B2*.google.cloud.vectorsearch.v1.OutputFieldsB\x03\xE0A\x01\x12B\x0A\x0Bsearch_hint\x18\x09 \x01(\x0B2(.google.cloud.vectorsearch.v1.SearchHintB\x03\xE0A\x01\x12J\x0A\x0Fdistance_metric\x18\x0B \x01(\x0E2,.google.cloud.vectorsearch.v1.DistanceMetricB\x03\xE0A\x01B\x0D\x0A\x0Bvector_typeB\x08\x0A\x06_top_k\"\xEB\x02\x0A\x0ESemanticSearch\x12\x18\x0A\x0Bsearch_text\x18\x01 \x01(\x09B\x03\xE0A\x02\x12\x19\x0A\x0Csearch_field\x18\x02 \x01(\x09B\x03\xE0A\x02\x12G\x0A\x09task_type\x18\x05 \x01(\x0E2/.google.cloud.vectorsearch.v1.EmbeddingTaskTypeB\x03\xE0A\x02\x12F\x0A\x0Doutput_fields\x18\x03 \x01(\x0B2*.google.cloud.vectorsearch.v1.OutputFieldsB\x03\xE0A\x01\x12,\x0A\x06filter\x18\x06 \x01(\x0B2\x17.google.protobuf.StructB\x03\xE0A\x01\x12\x17\x0A\x05top_k\x18\x04 \x01(\x05B\x03\xE0A\x01H\x00\x88\x01\x01\x12B\x0A\x0Bsearch_hint\x18\x07 \x01(\x0B2(.google.cloud.vectorsearch.v1.SearchHintB\x03\xE0A\x01B\x08\x0A\x06_top_k\"\xDE\x01\x0A\x0ATextSearch\x12\x18\x0A\x0Bsearch_text\x18\x01 \x01(\x09B\x03\xE0A\x01\x12\x1D\x0A\x10data_field_names\x18\x02 \x03(\x09B\x03\xE0A\x01\x12F\x0A\x0Doutput_fields\x18\x03 \x01(\x0B2*.google.cloud.vectorsearch.v1.OutputFieldsB\x03\xE0A\x01\x12\x17\x0A\x05top_k\x18\x04 \x01(\x05B\x03\xE0A\x01H\x00\x88\x01\x01\x12,\x0A\x06filter\x18\x05 \x01(\x0B2\x17.google.protobuf.StructB\x03\xE0A\x01B\x08\x0A\x06_top_k\"\xEE\x02\x0A\x18SearchDataObjectsRequest\x12C\x0A\x0Dvector_search\x18\x02 \x01(\x0B2*.google.cloud.vectorsearch.v1.VectorSearchH\x00\x12G\x0A\x0Fsemantic_search\x18\x04 \x01(\x0B2,.google.cloud.vectorsearch.v1.SemanticSearchH\x00\x12D\x0A\x0Btext_search\x18\x07 \x01(\x0B2(.google.cloud.vectorsearch.v1.TextSearchB\x03\xE0A\x01H\x00\x12>\x0A\x06parent\x18\x01 \x01(\x09B.\xE0A\x02\xFAA(\x0A&vectorsearch.googleapis.com/Collection\x12\x16\x0A\x09page_size\x18\x05 \x01(\x05B\x03\xE0A\x01\x12\x17\x0A\x0Apage_token\x18\x06 \x01(\x09B\x03\xE0A\x01B\x0D\x0A\x0Bsearch_type\"{\x0A\x0CSearchResult\x12B\x0A\x0Bdata_object\x18\x01 \x01(\x0B2(.google.cloud.vectorsearch.v1.DataObjectB\x03\xE0A\x03\x12\x1A\x0A\x08distance\x18\x02 \x01(\x01B\x03\xE0A\x03H\x00\x88\x01\x01B\x0B\x0A\x09_distance\"{\x0A\x19SearchDataObjectsResponse\x12@\x0A\x07results\x18\x01 \x03(\x0B2*.google.cloud.vectorsearch.v1.SearchResultB\x03\xE0A\x03\x12\x1C\x0A\x0Fnext_page_token\x18\x02 \x01(\x09B\x03\xE0A\x03\"\xD4\x01\x0A\x1BAggregateDataObjectsRequest\x12>\x0A\x06parent\x18\x01 \x01(\x09B.\xE0A\x02\xFAA(\x0A&vectorsearch.googleapis.com/Collection\x12,\x0A\x06filter\x18\x02 \x01(\x0B2\x17.google.protobuf.StructB\x03\xE0A\x01\x12G\x0A\x09aggregate\x18\x03 \x01(\x0E2/.google.cloud.vectorsearch.v1.AggregationMethodB\x03\xE0A\x02\"W\x0A\x1CAggregateDataObjectsResponse\x127\x0A\x11aggregate_results\x18\x01 \x03(\x0B2\x17.google.protobuf.StructB\x03\xE0A\x03\"\x80\x02\x0A\x17QueryDataObjectsRequest\x12>\x0A\x06parent\x18\x01 \x01(\x09B.\xE0A\x02\xFAA(\x0A&vectorsearch.googleapis.com/Collection\x12,\x0A\x06filter\x18\x02 \x01(\x0B2\x17.google.protobuf.StructB\x03\xE0A\x01\x12F\x0A\x0Doutput_fields\x18\x07 \x01(\x0B2*.google.cloud.vectorsearch.v1.OutputFieldsB\x03\xE0A\x01\x12\x16\x0A\x09page_size\x18\x05 \x01(\x05B\x03\xE0A\x01\x12\x17\x0A\x0Apage_token\x18\x06 \x01(\x09B\x03\xE0A\x01\"}\x0A\x18QueryDataObjectsResponse\x12C\x0A\x0Cdata_objects\x18\x04 \x03(\x0B2(.google.cloud.vectorsearch.v1.DataObjectB\x03\xE0A\x03\x12\x1C\x0A\x0Fnext_page_token\x18\x03 \x01(\x09B\x03\xE0A\x03\"\xB6\x03\x0A\x1DBatchSearchDataObjectsRequest\x12>\x0A\x06parent\x18\x01 \x01(\x09B.\xE0A\x02\xFAA(\x0A&vectorsearch.googleapis.com/Collection\x12;\x0A\x08searches\x18\x02 \x03(\x0B2\$.google.cloud.vectorsearch.v1.SearchB\x03\xE0A\x02\x12g\x0A\x07combine\x18\x03 \x01(\x0B2Q.google.cloud.vectorsearch.v1.BatchSearchDataObjectsRequest.CombineResultsOptionsB\x03\xE0A\x01\x1A\xAE\x01\x0A\x15CombineResultsOptions\x129\x0A\x06ranker\x18\x01 \x01(\x0B2\$.google.cloud.vectorsearch.v1.RankerB\x03\xE0A\x02\x12F\x0A\x0Doutput_fields\x18\x02 \x01(\x0B2*.google.cloud.vectorsearch.v1.OutputFieldsB\x03\xE0A\x01\x12\x12\x0A\x05top_k\x18\x03 \x01(\x05B\x03\xE0A\x01\"\xAB\x01\x0A\x06Ranker\x12A\x0A\x03rrf\x18\x01 \x01(\x0B22.google.cloud.vectorsearch.v1.ReciprocalRankFusionH\x00\x12H\x0A\x0Dvertex_ranker\x18\x02 \x01(\x0B2*.google.cloud.vectorsearch.v1.VertexRankerB\x03\xE0A\x01H\x01B\x08\x0A\x06rankerB\x0A\x0A\x08reranker\",\x0A\x14ReciprocalRankFusion\x12\x14\x0A\x07weights\x18\x01 \x03(\x01B\x03\xE0A\x02\"\xFE\x01\x0A\x0CVertexRanker\x12U\x0A\x10text_record_spec\x18\x06 \x01(\x0B29.google.cloud.vectorsearch.v1.VertexRanker.TextRecordSpecH\x00\x12\x12\x0A\x05model\x18\x04 \x01(\x09B\x03\xE0A\x02\x12\x12\x0A\x05top_n\x18\x05 \x01(\x05B\x03\xE0A\x02\x1A`\x0A\x0ETextRecordSpec\x12\x12\x0A\x05query\x18\x01 \x01(\x09B\x03\xE0A\x02\x12\x1B\x0A\x0Etitle_template\x18\x02 \x01(\x09B\x03\xE0A\x01\x12\x1D\x0A\x10content_template\x18\x03 \x01(\x09B\x03\xE0A\x01B\x0D\x0A\x0Brecord_spec\"o\x0A\x1EBatchSearchDataObjectsResponse\x12M\x0A\x07results\x18\x01 \x03(\x0B27.google.cloud.vectorsearch.v1.SearchDataObjectsResponseB\x03\xE0A\x03*B\x0A\x11AggregationMethod\x12\"\x0A\x1EAGGREGATION_METHOD_UNSPECIFIED\x10\x00\x12\x09\x0A\x05COUNT\x10\x012\xE6\x07\x0A\x17DataObjectSearchService\x12\xD5\x01\x0A\x11SearchDataObjects\x126.google.cloud.vectorsearch.v1.SearchDataObjectsRequest\x1A7.google.cloud.vectorsearch.v1.SearchDataObjectsResponse\"O\x82\xD3\xE4\x93\x02I\"D/v1/{parent=projects/*/locations/*/collections/*}/dataObjects:search:\x01*\x12\xD1\x01\x0A\x10QueryDataObjects\x125.google.cloud.vectorsearch.v1.QueryDataObjectsRequest\x1A6.google.cloud.vectorsearch.v1.QueryDataObjectsResponse\"N\x82\xD3\xE4\x93\x02H\"C/v1/{parent=projects/*/locations/*/collections/*}/dataObjects:query:\x01*\x12\xE1\x01\x0A\x14AggregateDataObjects\x129.google.cloud.vectorsearch.v1.AggregateDataObjectsRequest\x1A:.google.cloud.vectorsearch.v1.AggregateDataObjectsResponse\"R\x82\xD3\xE4\x93\x02L\"G/v1/{parent=projects/*/locations/*/collections/*}/dataObjects:aggregate:\x01*\x12\xE9\x01\x0A\x16BatchSearchDataObjects\x12;.google.cloud.vectorsearch.v1.BatchSearchDataObjectsRequest\x1A<.google.cloud.vectorsearch.v1.BatchSearchDataObjectsResponse\"T\x82\xD3\xE4\x93\x02N\"I/v1/{parent=projects/*/locations/*/collections/*}/dataObjects:batchSearch:\x01*\x1AO\xCAA\x1Bvectorsearch.googleapis.com\xD2A.https://www.googleapis.com/auth/cloud-platformB\xE8\x01\x0A com.google.cloud.vectorsearch.v1B\x1CDataObjectSearchServiceProtoP\x01ZDcloud.google.com/go/vectorsearch/apiv1/vectorsearchpb;vectorsearchpb\xAA\x02\x1CGoogle.Cloud.VectorSearch.V1\xCA\x02\x1CGoogle\\Cloud\\VectorSearch\\V1\xEA\x02\x1FGoogle::Cloud::VectorSearch::V1b\x06proto3"
, true);
static::$is_initialized = true;
diff --git a/VectorSearch/src/V1/Ranker.php b/VectorSearch/src/V1/Ranker.php
index a0aa74f03057..35cc1041ad2c 100644
--- a/VectorSearch/src/V1/Ranker.php
+++ b/VectorSearch/src/V1/Ranker.php
@@ -16,6 +16,7 @@
class Ranker extends \Google\Protobuf\Internal\Message
{
protected $ranker;
+ protected $reranker;
/**
* Constructor.
@@ -25,6 +26,8 @@ class Ranker extends \Google\Protobuf\Internal\Message
*
* @type \Google\Cloud\VectorSearch\V1\ReciprocalRankFusion $rrf
* Reciprocal Rank Fusion ranking.
+ * @type \Google\Cloud\VectorSearch\V1\VertexRanker $vertex_ranker
+ * Optional. Vertex AI ranking.
* }
*/
public function __construct($data = NULL) {
@@ -63,6 +66,37 @@ public function setRrf($var)
return $this;
}
+ /**
+ * Optional. Vertex AI ranking.
+ *
+ * Generated from protobuf field .google.cloud.vectorsearch.v1.VertexRanker vertex_ranker = 2 [(.google.api.field_behavior) = OPTIONAL];
+ * @return \Google\Cloud\VectorSearch\V1\VertexRanker|null
+ */
+ public function getVertexRanker()
+ {
+ return $this->readOneof(2);
+ }
+
+ public function hasVertexRanker()
+ {
+ return $this->hasOneof(2);
+ }
+
+ /**
+ * Optional. Vertex AI ranking.
+ *
+ * Generated from protobuf field .google.cloud.vectorsearch.v1.VertexRanker vertex_ranker = 2 [(.google.api.field_behavior) = OPTIONAL];
+ * @param \Google\Cloud\VectorSearch\V1\VertexRanker $var
+ * @return $this
+ */
+ public function setVertexRanker($var)
+ {
+ GPBUtil::checkMessage($var, \Google\Cloud\VectorSearch\V1\VertexRanker::class);
+ $this->writeOneof(2, $var);
+
+ return $this;
+ }
+
/**
* @return string
*/
@@ -71,5 +105,13 @@ public function getRanker()
return $this->whichOneof("ranker");
}
+ /**
+ * @return string
+ */
+ public function getReranker()
+ {
+ return $this->whichOneof("reranker");
+ }
+
}
diff --git a/VectorSearch/src/V1/VertexRanker.php b/VectorSearch/src/V1/VertexRanker.php
index 9482129ef358..c5b54234c800 100644
--- a/VectorSearch/src/V1/VertexRanker.php
+++ b/VectorSearch/src/V1/VertexRanker.php
@@ -5,8 +5,8 @@
namespace Google\Cloud\VectorSearch\V1;
use Google\Protobuf\Internal\GPBType;
-use Google\Protobuf\Internal\RepeatedField;
use Google\Protobuf\Internal\GPBUtil;
+use Google\Protobuf\RepeatedField;
/**
* Defines a ranker using the Vertex AI ranking service.
@@ -18,30 +18,21 @@
class VertexRanker extends \Google\Protobuf\Internal\Message
{
/**
- * Required. The query against which the records are ranked and scored.
+ * Required. The model used for ranking documents. The list of available
+ * models is described in
+ * https://docs.cloud.google.com/generative-ai-app-builder/docs/ranking#models.
+ * Currently, only `semantic-ranker-fast\@latest` is supported.
*
- * Generated from protobuf field string query = 1 [(.google.api.field_behavior) = REQUIRED];
- */
- protected $query = '';
- /**
- * Optional. The template used to generate the record's title.
- *
- * Generated from protobuf field string title_template = 2 [(.google.api.field_behavior) = OPTIONAL];
- */
- protected $title_template = '';
- /**
- * Optional. The template used to generate the record's content.
- *
- * Generated from protobuf field string content_template = 3 [(.google.api.field_behavior) = OPTIONAL];
+ * Generated from protobuf field string model = 4 [(.google.api.field_behavior) = REQUIRED];
*/
- protected $content_template = '';
+ protected $model = '';
/**
- * Required. The model used for ranking documents. If no model is specified,
- * then semantic-ranker-default@latest is used.
+ * Required. The number of documents to be processed for ranking.
*
- * Generated from protobuf field string model = 4 [(.google.api.field_behavior) = REQUIRED];
+ * Generated from protobuf field int32 top_n = 5 [(.google.api.field_behavior) = REQUIRED];
*/
- protected $model = '';
+ protected $top_n = 0;
+ protected $record_spec;
/**
* Constructor.
@@ -49,15 +40,15 @@ class VertexRanker extends \Google\Protobuf\Internal\Message
* @param array $data {
* Optional. Data for populating the Message object.
*
- * @type string $query
- * Required. The query against which the records are ranked and scored.
- * @type string $title_template
- * Optional. The template used to generate the record's title.
- * @type string $content_template
- * Optional. The template used to generate the record's content.
+ * @type \Google\Cloud\VectorSearch\V1\VertexRanker\TextRecordSpec $text_record_spec
+ * The record spec for text search.
* @type string $model
- * Required. The model used for ranking documents. If no model is specified,
- * then semantic-ranker-default@latest is used.
+ * Required. The model used for ranking documents. The list of available
+ * models is described in
+ * https://docs.cloud.google.com/generative-ai-app-builder/docs/ranking#models.
+ * Currently, only `semantic-ranker-fast\@latest` is supported.
+ * @type int $top_n
+ * Required. The number of documents to be processed for ranking.
* }
*/
public function __construct($data = NULL) {
@@ -66,109 +57,100 @@ public function __construct($data = NULL) {
}
/**
- * Required. The query against which the records are ranked and scored.
+ * The record spec for text search.
*
- * Generated from protobuf field string query = 1 [(.google.api.field_behavior) = REQUIRED];
- * @return string
+ * Generated from protobuf field .google.cloud.vectorsearch.v1.VertexRanker.TextRecordSpec text_record_spec = 6;
+ * @return \Google\Cloud\VectorSearch\V1\VertexRanker\TextRecordSpec|null
*/
- public function getQuery()
+ public function getTextRecordSpec()
{
- return $this->query;
+ return $this->readOneof(6);
+ }
+
+ public function hasTextRecordSpec()
+ {
+ return $this->hasOneof(6);
}
/**
- * Required. The query against which the records are ranked and scored.
+ * The record spec for text search.
*
- * Generated from protobuf field string query = 1 [(.google.api.field_behavior) = REQUIRED];
- * @param string $var
+ * Generated from protobuf field .google.cloud.vectorsearch.v1.VertexRanker.TextRecordSpec text_record_spec = 6;
+ * @param \Google\Cloud\VectorSearch\V1\VertexRanker\TextRecordSpec $var
* @return $this
*/
- public function setQuery($var)
+ public function setTextRecordSpec($var)
{
- GPBUtil::checkString($var, True);
- $this->query = $var;
+ GPBUtil::checkMessage($var, \Google\Cloud\VectorSearch\V1\VertexRanker\TextRecordSpec::class);
+ $this->writeOneof(6, $var);
return $this;
}
/**
- * Optional. The template used to generate the record's title.
+ * Required. The model used for ranking documents. The list of available
+ * models is described in
+ * https://docs.cloud.google.com/generative-ai-app-builder/docs/ranking#models.
+ * Currently, only `semantic-ranker-fast\@latest` is supported.
*
- * Generated from protobuf field string title_template = 2 [(.google.api.field_behavior) = OPTIONAL];
+ * Generated from protobuf field string model = 4 [(.google.api.field_behavior) = REQUIRED];
* @return string
*/
- public function getTitleTemplate()
+ public function getModel()
{
- return $this->title_template;
+ return $this->model;
}
/**
- * Optional. The template used to generate the record's title.
+ * Required. The model used for ranking documents. The list of available
+ * models is described in
+ * https://docs.cloud.google.com/generative-ai-app-builder/docs/ranking#models.
+ * Currently, only `semantic-ranker-fast\@latest` is supported.
*
- * Generated from protobuf field string title_template = 2 [(.google.api.field_behavior) = OPTIONAL];
+ * Generated from protobuf field string model = 4 [(.google.api.field_behavior) = REQUIRED];
* @param string $var
* @return $this
*/
- public function setTitleTemplate($var)
+ public function setModel($var)
{
GPBUtil::checkString($var, True);
- $this->title_template = $var;
+ $this->model = $var;
return $this;
}
/**
- * Optional. The template used to generate the record's content.
+ * Required. The number of documents to be processed for ranking.
*
- * Generated from protobuf field string content_template = 3 [(.google.api.field_behavior) = OPTIONAL];
- * @return string
+ * Generated from protobuf field int32 top_n = 5 [(.google.api.field_behavior) = REQUIRED];
+ * @return int
*/
- public function getContentTemplate()
+ public function getTopN()
{
- return $this->content_template;
+ return $this->top_n;
}
/**
- * Optional. The template used to generate the record's content.
+ * Required. The number of documents to be processed for ranking.
*
- * Generated from protobuf field string content_template = 3 [(.google.api.field_behavior) = OPTIONAL];
- * @param string $var
+ * Generated from protobuf field int32 top_n = 5 [(.google.api.field_behavior) = REQUIRED];
+ * @param int $var
* @return $this
*/
- public function setContentTemplate($var)
+ public function setTopN($var)
{
- GPBUtil::checkString($var, True);
- $this->content_template = $var;
+ GPBUtil::checkInt32($var);
+ $this->top_n = $var;
return $this;
}
/**
- * Required. The model used for ranking documents. If no model is specified,
- * then semantic-ranker-default@latest is used.
- *
- * Generated from protobuf field string model = 4 [(.google.api.field_behavior) = REQUIRED];
* @return string
*/
- public function getModel()
+ public function getRecordSpec()
{
- return $this->model;
- }
-
- /**
- * Required. The model used for ranking documents. If no model is specified,
- * then semantic-ranker-default@latest is used.
- *
- * Generated from protobuf field string model = 4 [(.google.api.field_behavior) = REQUIRED];
- * @param string $var
- * @return $this
- */
- public function setModel($var)
- {
- GPBUtil::checkString($var, True);
- $this->model = $var;
-
- return $this;
+ return $this->whichOneof("record_spec");
}
}
diff --git a/VectorSearch/src/V1/VertexRanker/TextRecordSpec.php b/VectorSearch/src/V1/VertexRanker/TextRecordSpec.php
new file mode 100644
index 000000000000..e38cd254f5fe
--- /dev/null
+++ b/VectorSearch/src/V1/VertexRanker/TextRecordSpec.php
@@ -0,0 +1,135 @@
+google.cloud.vectorsearch.v1.VertexRanker.TextRecordSpec
+ */
+class TextRecordSpec extends \Google\Protobuf\Internal\Message
+{
+ /**
+ * Required. The query against which the records are ranked and scored.
+ *
+ * Generated from protobuf field string query = 1 [(.google.api.field_behavior) = REQUIRED];
+ */
+ protected $query = '';
+ /**
+ * Optional. The template used to generate the record's title.
+ *
+ * Generated from protobuf field string title_template = 2 [(.google.api.field_behavior) = OPTIONAL];
+ */
+ protected $title_template = '';
+ /**
+ * Optional. The template used to generate the record's content.
+ *
+ * Generated from protobuf field string content_template = 3 [(.google.api.field_behavior) = OPTIONAL];
+ */
+ protected $content_template = '';
+
+ /**
+ * Constructor.
+ *
+ * @param array $data {
+ * Optional. Data for populating the Message object.
+ *
+ * @type string $query
+ * Required. The query against which the records are ranked and scored.
+ * @type string $title_template
+ * Optional. The template used to generate the record's title.
+ * @type string $content_template
+ * Optional. The template used to generate the record's content.
+ * }
+ */
+ public function __construct($data = NULL) {
+ \GPBMetadata\Google\Cloud\Vectorsearch\V1\DataObjectSearchService::initOnce();
+ parent::__construct($data);
+ }
+
+ /**
+ * Required. The query against which the records are ranked and scored.
+ *
+ * Generated from protobuf field string query = 1 [(.google.api.field_behavior) = REQUIRED];
+ * @return string
+ */
+ public function getQuery()
+ {
+ return $this->query;
+ }
+
+ /**
+ * Required. The query against which the records are ranked and scored.
+ *
+ * Generated from protobuf field string query = 1 [(.google.api.field_behavior) = REQUIRED];
+ * @param string $var
+ * @return $this
+ */
+ public function setQuery($var)
+ {
+ GPBUtil::checkString($var, True);
+ $this->query = $var;
+
+ return $this;
+ }
+
+ /**
+ * Optional. The template used to generate the record's title.
+ *
+ * Generated from protobuf field string title_template = 2 [(.google.api.field_behavior) = OPTIONAL];
+ * @return string
+ */
+ public function getTitleTemplate()
+ {
+ return $this->title_template;
+ }
+
+ /**
+ * Optional. The template used to generate the record's title.
+ *
+ * Generated from protobuf field string title_template = 2 [(.google.api.field_behavior) = OPTIONAL];
+ * @param string $var
+ * @return $this
+ */
+ public function setTitleTemplate($var)
+ {
+ GPBUtil::checkString($var, True);
+ $this->title_template = $var;
+
+ return $this;
+ }
+
+ /**
+ * Optional. The template used to generate the record's content.
+ *
+ * Generated from protobuf field string content_template = 3 [(.google.api.field_behavior) = OPTIONAL];
+ * @return string
+ */
+ public function getContentTemplate()
+ {
+ return $this->content_template;
+ }
+
+ /**
+ * Optional. The template used to generate the record's content.
+ *
+ * Generated from protobuf field string content_template = 3 [(.google.api.field_behavior) = OPTIONAL];
+ * @param string $var
+ * @return $this
+ */
+ public function setContentTemplate($var)
+ {
+ GPBUtil::checkString($var, True);
+ $this->content_template = $var;
+
+ return $this;
+ }
+
+}
+