From 9c4295b5402c17ffad6d954a125225c3ac8f4370 Mon Sep 17 00:00:00 2001 From: Ivan Despot <66276597+g-despot@users.noreply.github.com> Date: Tue, 14 Apr 2026 16:01:06 +0200 Subject: [PATCH 1/6] Add query profiling --- integration/test_collection_query_profile.py | 217 ++++++++++++++++++ weaviate/collections/classes/grpc.py | 4 + weaviate/collections/classes/internal.py | 29 +++ weaviate/collections/grpc/query.py | 1 + weaviate/collections/queries/base_executor.py | 42 +++- weaviate/outputs/query.py | 6 + weaviate/proto/v1/v4216/v1/search_get_pb2.py | 62 +++-- weaviate/proto/v1/v4216/v1/search_get_pb2.pyi | 46 +++- weaviate/proto/v1/v5261/v1/search_get_pb2.py | 62 +++-- weaviate/proto/v1/v5261/v1/search_get_pb2.pyi | 46 +++- weaviate/proto/v1/v6300/v1/search_get_pb2.py | 62 +++-- weaviate/proto/v1/v6300/v1/search_get_pb2.pyi | 46 +++- 12 files changed, 536 insertions(+), 87 deletions(-) create mode 100644 integration/test_collection_query_profile.py diff --git a/integration/test_collection_query_profile.py b/integration/test_collection_query_profile.py new file mode 100644 index 000000000..021c83802 --- /dev/null +++ b/integration/test_collection_query_profile.py @@ -0,0 +1,217 @@ +import re + +import pytest + +import weaviate +from weaviate.collections.classes.config import Configure, DataType, Property +from weaviate.collections.classes.data import DataObject +from weaviate.collections.classes.grpc import MetadataQuery +from weaviate.collections.classes.internal import SearchProfileReturn + +GO_DURATION_RE = re.compile(r"[\d.]+(ns|µs|ms|s|m|h)") + + +def assert_go_duration(value: str, label: str = "") -> None: + """Assert that a string looks like a Go duration (e.g. '1.234ms', '5.458µs').""" + assert GO_DURATION_RE.fullmatch( + value + ), f"Expected Go duration format for {label!r}, got {value!r}" + + +def assert_common_profile(profile: SearchProfileReturn) -> None: + """Assertions shared by every search profile regardless of type.""" + assert len(profile.details) > 0, "Profile details should not be empty" + assert "total_took" in profile.details + assert_go_duration(profile.details["total_took"], "total_took") + for key, value in profile.details.items(): + assert isinstance(key, str) and key != "" + assert isinstance(value, str) and value != "" + + +@pytest.fixture(scope="module") +def client(): + client = weaviate.connect_to_local() + yield client + client.close() + + +@pytest.fixture(scope="module") +def collection_with_data(client: weaviate.WeaviateClient): + name = "TestQueryProfile" + client.collections.delete(name) + collection = client.collections.create( + name=name, + vectorizer_config=Configure.Vectorizer.none(), + properties=[ + Property(name="text", data_type=DataType.TEXT), + ], + ) + collection.data.insert_many( + [ + DataObject(properties={"text": "hello world"}, vector=[1.0, 0.0, 0.0]), + DataObject(properties={"text": "goodbye world"}, vector=[0.0, 1.0, 0.0]), + DataObject(properties={"text": "foo bar baz"}, vector=[0.0, 0.0, 1.0]), + ] + ) + yield collection + client.collections.delete(name) + + +def test_fetch_objects_with_query_profile(collection_with_data): + """Test that query profiling works with fetch_objects (object lookup).""" + result = collection_with_data.query.fetch_objects( + return_metadata=MetadataQuery(query_profile=True), + ) + assert len(result.objects) == 3 + assert result.query_profile is not None + assert len(result.query_profile.shards) > 0 + + shard = result.query_profile.shards[0] + assert shard.name != "" + assert shard.node != "" + + assert "object" in shard.searches + assert_common_profile(shard.searches["object"]) + + +def test_near_vector_with_query_profile(collection_with_data): + """Test that query profiling works with near_vector search.""" + result = collection_with_data.query.near_vector( + near_vector=[1.0, 0.0, 0.0], + return_metadata=MetadataQuery(query_profile=True, distance=True), + limit=2, + ) + assert len(result.objects) == 2 + assert result.query_profile is not None + assert len(result.query_profile.shards) > 0 + + shard = result.query_profile.shards[0] + assert "vector" in shard.searches + vector_profile = shard.searches["vector"] + assert_common_profile(vector_profile) + + assert "vector_search_took" in vector_profile.details + assert_go_duration( + vector_profile.details["vector_search_took"], "vector_search_took" + ) + + assert "hnsw_flat_search" in vector_profile.details + assert vector_profile.details["hnsw_flat_search"] in ("true", "false") + + layer_keys = [ + k for k in vector_profile.details if k.startswith("knn_search_layer_") + ] + assert len(layer_keys) > 0, "Expected at least one knn_search_layer_*_took key" + for k in layer_keys: + assert_go_duration(vector_profile.details[k], k) + + assert "objects_took" in vector_profile.details + assert_go_duration(vector_profile.details["objects_took"], "objects_took") + + +def test_bm25_with_query_profile(collection_with_data): + """Test that query profiling works with BM25 keyword search.""" + result = collection_with_data.query.bm25( + query="hello", + return_metadata=MetadataQuery(query_profile=True, score=True), + ) + assert result.query_profile is not None + assert len(result.query_profile.shards) > 0 + + shard = result.query_profile.shards[0] + assert "keyword" in shard.searches + keyword_profile = shard.searches["keyword"] + assert_common_profile(keyword_profile) + + assert "kwd_method" in keyword_profile.details + assert keyword_profile.details["kwd_method"] != "" + + assert "kwd_time" in keyword_profile.details + assert_go_duration(keyword_profile.details["kwd_time"], "kwd_time") + + assert "kwd_1_tok_time" in keyword_profile.details + assert_go_duration(keyword_profile.details["kwd_1_tok_time"], "kwd_1_tok_time") + + assert "kwd_6_res_count" in keyword_profile.details + assert keyword_profile.details["kwd_6_res_count"].isdigit() + assert int(keyword_profile.details["kwd_6_res_count"]) >= 0 + + +def test_hybrid_with_query_profile(collection_with_data): + """Test that query profiling works with hybrid search (both vector and keyword).""" + result = collection_with_data.query.hybrid( + query="hello", + vector=[1.0, 0.0, 0.0], + return_metadata=MetadataQuery(query_profile=True), + limit=2, + ) + assert result.query_profile is not None + assert len(result.query_profile.shards) > 0 + + shard = result.query_profile.shards[0] + assert "vector" in shard.searches, "Hybrid should produce a 'vector' profile" + assert "keyword" in shard.searches, "Hybrid should produce a 'keyword' profile" + + assert_common_profile(shard.searches["vector"]) + assert "vector_search_took" in shard.searches["vector"].details + + assert_common_profile(shard.searches["keyword"]) + assert "kwd_method" in shard.searches["keyword"].details + + +def test_near_vector_group_by_with_query_profile(collection_with_data): + """Test that query profiling works with group_by (mirrors C# QueryProfiling_NearText_GroupBy_Returns_Profile).""" + from weaviate.collections.classes.grpc import GroupBy + + result = collection_with_data.query.near_vector( + near_vector=[1.0, 0.0, 0.0], + return_metadata=MetadataQuery(query_profile=True), + group_by=GroupBy(prop="text", objects_per_group=1, number_of_groups=3), + ) + assert result.query_profile is not None + assert len(result.query_profile.shards) > 0 + + shard = result.query_profile.shards[0] + assert "vector" in shard.searches + assert_common_profile(shard.searches["vector"]) + + +def test_no_query_profile_when_not_requested(collection_with_data): + """Test that query_profile is None when not requested.""" + result = collection_with_data.query.fetch_objects( + return_metadata=MetadataQuery(distance=True), + ) + assert result.query_profile is None + + +def test_query_profile_with_metadata_list(collection_with_data): + """Test that query profiling works when using list-style metadata.""" + result = collection_with_data.query.near_vector( + near_vector=[1.0, 0.0, 0.0], + return_metadata=["query_profile", "distance"], + limit=2, + ) + assert result.query_profile is not None + assert len(result.query_profile.shards) > 0 + + shard = result.query_profile.shards[0] + assert "vector" in shard.searches + assert_common_profile(shard.searches["vector"]) + + +def test_query_profile_details_are_strings(collection_with_data): + """Test that all detail keys and values are non-empty strings.""" + result = collection_with_data.query.near_vector( + near_vector=[1.0, 0.0, 0.0], + return_metadata=MetadataQuery(query_profile=True), + limit=1, + ) + assert result.query_profile is not None + for shard in result.query_profile.shards: + assert len(shard.searches) > 0, "Shard should have at least one search profile" + for search_type, profile in shard.searches.items(): + assert isinstance(search_type, str) and search_type != "" + assert len(profile.details) > 0 + for key, value in profile.details.items(): + assert isinstance(key, str) and key != "" + assert isinstance(value, str) and value != "" diff --git a/weaviate/collections/classes/grpc.py b/weaviate/collections/classes/grpc.py index bff0e35ca..20ece3bc0 100644 --- a/weaviate/collections/classes/grpc.py +++ b/weaviate/collections/classes/grpc.py @@ -90,6 +90,7 @@ class MetadataQuery(_WeaviateInput): score: bool = Field(default=False) explain_score: bool = Field(default=False) is_consistent: bool = Field(default=False) + query_profile: bool = Field(default=False) @classmethod def full(cls) -> "MetadataQuery": @@ -117,6 +118,7 @@ class _MetadataQuery: explain_score: bool = False is_consistent: bool = False vectors: Optional[List[str]] = None + query_profile: bool = False @classmethod def from_public( @@ -138,6 +140,7 @@ def from_public( score=public.score, explain_score=public.explain_score, is_consistent=public.is_consistent, + query_profile=public.query_profile, ) ) @@ -152,6 +155,7 @@ def from_public( "score", "explain_score", "is_consistent", + "query_profile", ] ], MetadataQuery, diff --git a/weaviate/collections/classes/internal.py b/weaviate/collections/classes/internal.py index f4d542f66..55a69c5cd 100644 --- a/weaviate/collections/classes/internal.py +++ b/weaviate/collections/classes/internal.py @@ -90,6 +90,29 @@ def _is_empty(self) -> bool: ) +@dataclass +class SearchProfileReturn: + """Profiling details for a single search type within a shard.""" + + details: Dict[str, str] + + +@dataclass +class ShardProfileReturn: + """Profiling data for a single shard.""" + + name: str + node: str + searches: Dict[str, SearchProfileReturn] + + +@dataclass +class QueryProfileReturn: + """Per-shard query profiling data returned when `query_profile=True` is set in metadata.""" + + shards: List[ShardProfileReturn] + + @dataclass class GroupByMetadataReturn: """Metadata of an object returned by a group by query.""" @@ -210,6 +233,7 @@ class GenerativeReturn(Generic[P, R]): __generated: Optional[str] objects: List[GenerativeObject[P, R]] generative: Optional[GenerativeGrouped] + query_profile: Optional[QueryProfileReturn] # init required because of nuances of dataclass when defining @property generated and private var __generated def __init__( @@ -217,10 +241,12 @@ def __init__( generated: Optional[str], objects: List[GenerativeObject[P, R]], generative: Optional[GenerativeGrouped], + query_profile: Optional[QueryProfileReturn] = None, ) -> None: self.__generated = generated self.objects = objects self.generative = generative + self.query_profile = query_profile @property @deprecated( @@ -257,6 +283,7 @@ class GenerativeGroupByReturn(Generic[P, R]): objects: List[GroupByObject[P, R]] groups: Dict[str, GenerativeGroup[P, R]] generated: Optional[str] + query_profile: Optional[QueryProfileReturn] = None @dataclass @@ -265,6 +292,7 @@ class GroupByReturn(Generic[P, R]): objects: List[GroupByObject[P, R]] groups: Dict[str, Group[P, R]] + query_profile: Optional[QueryProfileReturn] = None @dataclass @@ -272,6 +300,7 @@ class QueryReturn(Generic[P, R]): """The return type of a query within the `.query` namespace of a collection.""" objects: List[Object[P, R]] + query_profile: Optional[QueryProfileReturn] = None _GQLEntryReturnType: TypeAlias = Dict[str, List[Dict[str, Any]]] diff --git a/weaviate/collections/grpc/query.py b/weaviate/collections/grpc/query.py index 1ac014ada..d635a3f2f 100644 --- a/weaviate/collections/grpc/query.py +++ b/weaviate/collections/grpc/query.py @@ -521,6 +521,7 @@ def _metadata_to_grpc(self, metadata: _MetadataQuery) -> search_get_pb2.Metadata score=metadata.score, is_consistent=metadata.is_consistent, vectors=metadata.vectors, + query_profile=metadata.query_profile, ) def __resolve_property(self, prop: QueryNested) -> search_get_pb2.ObjectPropertiesRequest: diff --git a/weaviate/collections/queries/base_executor.py b/weaviate/collections/queries/base_executor.py index e721d9edb..f3eb36399 100644 --- a/weaviate/collections/queries/base_executor.py +++ b/weaviate/collections/queries/base_executor.py @@ -40,9 +40,12 @@ GroupByReturn, MetadataReturn, Object, + QueryProfileReturn, QueryReturn, ReturnProperties, ReturnReferences, + SearchProfileReturn, + ShardProfileReturn, WeaviateProperties, _CrossReference, _extract_properties_from_data_model, @@ -53,7 +56,7 @@ from weaviate.collections.grpc.query import _QueryGRPC from weaviate.collections.grpc.shared import _ByteOps, _Unpack from weaviate.connect.v4 import ConnectionType -from weaviate.exceptions import WeaviateInvalidInputError +from weaviate.exceptions import WeaviateInvalidInputError, WeaviateUnsupportedFeatureError from weaviate.proto.v1 import base_pb2, generative_pb2, properties_pb2, search_get_pb2 from weaviate.types import INCLUDE_VECTOR from weaviate.util import ( @@ -452,6 +455,25 @@ def __result_to_group_by_object( belongs_to_group=group_name, ) + def __extract_query_profile( + self, res: search_get_pb2.SearchReply + ) -> Optional[QueryProfileReturn]: + if not res.HasField("query_profile"): + return None + return QueryProfileReturn( + shards=[ + ShardProfileReturn( + name=shard.name, + node=shard.node, + searches={ + key: SearchProfileReturn(details=dict(profile.details)) + for key, profile in shard.searches.items() + }, + ) + for shard in res.query_profile.shards + ] + ) + def _result_to_query_return( self, res: search_get_pb2.SearchReply, @@ -461,7 +483,8 @@ def _result_to_query_return( objects=[ self.__result_to_query_object(obj.properties, obj.metadata, options) for obj in res.results - ] + ], + query_profile=self.__extract_query_profile(res), ) def _result_to_generative_query_return( @@ -480,6 +503,7 @@ def _result_to_generative_query_return( generative=self.__extract_generative_grouped_from_generative( res.generative_grouped_results ), + query_profile=self.__extract_query_profile(res), ) def _result_to_generative_return( @@ -507,7 +531,11 @@ def _result_to_groupby_return( objects_group_by: List[GroupByObject] = [ obj for group in groups.values() for obj in group.objects ] - return GroupByReturn(objects=objects_group_by, groups=groups) + return GroupByReturn( + objects=objects_group_by, + groups=groups, + query_profile=self.__extract_query_profile(res), + ) def _result_to_generative_groupby_return( self, @@ -537,6 +565,7 @@ def _result_to_generative_groupby_return( generated=( res.generative_grouped_result if res.generative_grouped_result != "" else None ), + query_profile=self.__extract_query_profile(res), ) def _result_to_query_or_groupby_return( @@ -615,6 +644,13 @@ def _parse_return_metadata( ret_md = cast(MetadataQuery, return_metadata) else: ret_md = MetadataQuery(**{str(prop): True for prop in return_metadata}) + + if ret_md is not None and ret_md.query_profile: + if self._connection._weaviate_version.is_lower_than(1, 36, 9): + raise WeaviateUnsupportedFeatureError( + "Query profiling", str(self._connection._weaviate_version), "1.36.9" + ) + return _MetadataQuery.from_public(ret_md, include_vector) def _parse_return_references( diff --git a/weaviate/outputs/query.py b/weaviate/outputs/query.py index 42ede14b3..625d669d8 100644 --- a/weaviate/outputs/query.py +++ b/weaviate/outputs/query.py @@ -32,11 +32,14 @@ Object, ObjectSingleReturn, QueryNearMediaReturnType, + QueryProfileReturn, QueryReturn, QueryReturnType, QuerySingleReturn, ReferenceInput, ReferenceInputs, + SearchProfileReturn, + ShardProfileReturn, ) from weaviate.collections.classes.types import ( GeoCoordinate, @@ -75,11 +78,14 @@ "GenerativeGroup", "PhoneNumberType", "QueryNearMediaReturnType", + "QueryProfileReturn", "QueryReturnType", "QueryReturn", "QuerySingleReturn", "ReferenceInput", "ReferenceInputs", + "SearchProfileReturn", + "ShardProfileReturn", "Sorting", "TargetVectorJoinType", "WeaviateField", diff --git a/weaviate/proto/v1/v4216/v1/search_get_pb2.py b/weaviate/proto/v1/v4216/v1/search_get_pb2.py index 7885e57d6..78f20076e 100644 --- a/weaviate/proto/v1/v4216/v1/search_get_pb2.py +++ b/weaviate/proto/v1/v4216/v1/search_get_pb2.py @@ -17,7 +17,7 @@ from weaviate.proto.v1.v4216.v1 import properties_pb2 as v1_dot_properties__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x13v1/search_get.proto\x12\x0bweaviate.v1\x1a\rv1/base.proto\x1a\x14v1/base_search.proto\x1a\x13v1/generative.proto\x1a\x13v1/properties.proto\"\x9c\x0b\n\rSearchRequest\x12\x12\n\ncollection\x18\x01 \x01(\t\x12\x0e\n\x06tenant\x18\n \x01(\t\x12=\n\x11\x63onsistency_level\x18\x0b \x01(\x0e\x32\x1d.weaviate.v1.ConsistencyLevelH\x00\x88\x01\x01\x12\x37\n\nproperties\x18\x14 \x01(\x0b\x32\x1e.weaviate.v1.PropertiesRequestH\x01\x88\x01\x01\x12\x33\n\x08metadata\x18\x15 \x01(\x0b\x32\x1c.weaviate.v1.MetadataRequestH\x02\x88\x01\x01\x12+\n\x08group_by\x18\x16 \x01(\x0b\x32\x14.weaviate.v1.GroupByH\x03\x88\x01\x01\x12\r\n\x05limit\x18\x1e \x01(\r\x12\x0e\n\x06offset\x18\x1f \x01(\r\x12\x0f\n\x07\x61utocut\x18 \x01(\r\x12\r\n\x05\x61\x66ter\x18! \x01(\t\x12$\n\x07sort_by\x18\" \x03(\x0b\x32\x13.weaviate.v1.SortBy\x12*\n\x07\x66ilters\x18( \x01(\x0b\x32\x14.weaviate.v1.FiltersH\x04\x88\x01\x01\x12/\n\rhybrid_search\x18) \x01(\x0b\x32\x13.weaviate.v1.HybridH\x05\x88\x01\x01\x12+\n\x0b\x62m25_search\x18* \x01(\x0b\x32\x11.weaviate.v1.BM25H\x06\x88\x01\x01\x12\x31\n\x0bnear_vector\x18+ \x01(\x0b\x32\x17.weaviate.v1.NearVectorH\x07\x88\x01\x01\x12\x31\n\x0bnear_object\x18, \x01(\x0b\x32\x17.weaviate.v1.NearObjectH\x08\x88\x01\x01\x12\x33\n\tnear_text\x18- \x01(\x0b\x32\x1b.weaviate.v1.NearTextSearchH\t\x88\x01\x01\x12\x35\n\nnear_image\x18. \x01(\x0b\x32\x1c.weaviate.v1.NearImageSearchH\n\x88\x01\x01\x12\x35\n\nnear_audio\x18/ \x01(\x0b\x32\x1c.weaviate.v1.NearAudioSearchH\x0b\x88\x01\x01\x12\x35\n\nnear_video\x18\x30 \x01(\x0b\x32\x1c.weaviate.v1.NearVideoSearchH\x0c\x88\x01\x01\x12\x35\n\nnear_depth\x18\x31 \x01(\x0b\x32\x1c.weaviate.v1.NearDepthSearchH\r\x88\x01\x01\x12\x39\n\x0cnear_thermal\x18\x32 \x01(\x0b\x32\x1e.weaviate.v1.NearThermalSearchH\x0e\x88\x01\x01\x12\x31\n\x08near_imu\x18\x33 \x01(\x0b\x32\x1a.weaviate.v1.NearIMUSearchH\x0f\x88\x01\x01\x12\x36\n\ngenerative\x18< \x01(\x0b\x32\x1d.weaviate.v1.GenerativeSearchH\x10\x88\x01\x01\x12(\n\x06rerank\x18= \x01(\x0b\x32\x13.weaviate.v1.RerankH\x11\x88\x01\x01\x12\x18\n\x0cuses_123_api\x18\x64 \x01(\x08\x42\x02\x18\x01\x12\x18\n\x0cuses_125_api\x18\x65 \x01(\x08\x42\x02\x18\x01\x12\x14\n\x0cuses_127_api\x18\x66 \x01(\x08\x42\x14\n\x12_consistency_levelB\r\n\x0b_propertiesB\x0b\n\t_metadataB\x0b\n\t_group_byB\n\n\x08_filtersB\x10\n\x0e_hybrid_searchB\x0e\n\x0c_bm25_searchB\x0e\n\x0c_near_vectorB\x0e\n\x0c_near_objectB\x0c\n\n_near_textB\r\n\x0b_near_imageB\r\n\x0b_near_audioB\r\n\x0b_near_videoB\r\n\x0b_near_depthB\x0f\n\r_near_thermalB\x0b\n\t_near_imuB\r\n\x0b_generativeB\t\n\x07_rerank\"L\n\x07GroupBy\x12\x0c\n\x04path\x18\x01 \x03(\t\x12\x18\n\x10number_of_groups\x18\x02 \x01(\x05\x12\x19\n\x11objects_per_group\x18\x03 \x01(\x05\")\n\x06SortBy\x12\x11\n\tascending\x18\x01 \x01(\x08\x12\x0c\n\x04path\x18\x02 \x03(\t\"\xdd\x01\n\x0fMetadataRequest\x12\x0c\n\x04uuid\x18\x01 \x01(\x08\x12\x0e\n\x06vector\x18\x02 \x01(\x08\x12\x1a\n\x12\x63reation_time_unix\x18\x03 \x01(\x08\x12\x1d\n\x15last_update_time_unix\x18\x04 \x01(\x08\x12\x10\n\x08\x64istance\x18\x05 \x01(\x08\x12\x11\n\tcertainty\x18\x06 \x01(\x08\x12\r\n\x05score\x18\x07 \x01(\x08\x12\x15\n\rexplain_score\x18\x08 \x01(\x08\x12\x15\n\ris_consistent\x18\t \x01(\x08\x12\x0f\n\x07vectors\x18\n \x03(\t\"\xd1\x01\n\x11PropertiesRequest\x12\x1a\n\x12non_ref_properties\x18\x01 \x03(\t\x12\x39\n\x0eref_properties\x18\x02 \x03(\x0b\x32!.weaviate.v1.RefPropertiesRequest\x12?\n\x11object_properties\x18\x03 \x03(\x0b\x32$.weaviate.v1.ObjectPropertiesRequest\x12$\n\x1creturn_all_nonref_properties\x18\x0b \x01(\x08\"\x8b\x01\n\x17ObjectPropertiesRequest\x12\x11\n\tprop_name\x18\x01 \x01(\t\x12\x1c\n\x14primitive_properties\x18\x02 \x03(\t\x12?\n\x11object_properties\x18\x03 \x03(\x0b\x32$.weaviate.v1.ObjectPropertiesRequest\"\xb1\x01\n\x14RefPropertiesRequest\x12\x1a\n\x12reference_property\x18\x01 \x01(\t\x12\x32\n\nproperties\x18\x02 \x01(\x0b\x32\x1e.weaviate.v1.PropertiesRequest\x12.\n\x08metadata\x18\x03 \x01(\x0b\x32\x1c.weaviate.v1.MetadataRequest\x12\x19\n\x11target_collection\x18\x04 \x01(\t\"8\n\x06Rerank\x12\x10\n\x08property\x18\x01 \x01(\t\x12\x12\n\x05query\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x08\n\x06_query\"\xae\x02\n\x0bSearchReply\x12\x0c\n\x04took\x18\x01 \x01(\x02\x12*\n\x07results\x18\x02 \x03(\x0b\x32\x19.weaviate.v1.SearchResult\x12*\n\x19generative_grouped_result\x18\x03 \x01(\tB\x02\x18\x01H\x00\x88\x01\x01\x12\x34\n\x10group_by_results\x18\x04 \x03(\x0b\x32\x1a.weaviate.v1.GroupByResult\x12\x46\n\x1agenerative_grouped_results\x18\x05 \x01(\x0b\x32\x1d.weaviate.v1.GenerativeResultH\x01\x88\x01\x01\x42\x1c\n\x1a_generative_grouped_resultB\x1d\n\x1b_generative_grouped_results\"\x1c\n\x0bRerankReply\x12\r\n\x05score\x18\x01 \x01(\x01\"\xe9\x02\n\rGroupByResult\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x14\n\x0cmin_distance\x18\x02 \x01(\x02\x12\x14\n\x0cmax_distance\x18\x03 \x01(\x02\x12\x19\n\x11number_of_objects\x18\x04 \x01(\x03\x12*\n\x07objects\x18\x05 \x03(\x0b\x32\x19.weaviate.v1.SearchResult\x12-\n\x06rerank\x18\x06 \x01(\x0b\x32\x18.weaviate.v1.RerankReplyH\x00\x88\x01\x01\x12\x39\n\ngenerative\x18\x07 \x01(\x0b\x32\x1c.weaviate.v1.GenerativeReplyB\x02\x18\x01H\x01\x88\x01\x01\x12=\n\x11generative_result\x18\x08 \x01(\x0b\x32\x1d.weaviate.v1.GenerativeResultH\x02\x88\x01\x01\x42\t\n\x07_rerankB\r\n\x0b_generativeB\x14\n\x12_generative_result\"\xb7\x01\n\x0cSearchResult\x12\x31\n\nproperties\x18\x01 \x01(\x0b\x32\x1d.weaviate.v1.PropertiesResult\x12-\n\x08metadata\x18\x02 \x01(\x0b\x32\x1b.weaviate.v1.MetadataResult\x12\x36\n\ngenerative\x18\x03 \x01(\x0b\x32\x1d.weaviate.v1.GenerativeResultH\x00\x88\x01\x01\x42\r\n\x0b_generative\"\xf7\x04\n\x0eMetadataResult\x12\n\n\x02id\x18\x01 \x01(\t\x12\x12\n\x06vector\x18\x02 \x03(\x02\x42\x02\x18\x01\x12\x1a\n\x12\x63reation_time_unix\x18\x03 \x01(\x03\x12\"\n\x1a\x63reation_time_unix_present\x18\x04 \x01(\x08\x12\x1d\n\x15last_update_time_unix\x18\x05 \x01(\x03\x12%\n\x1dlast_update_time_unix_present\x18\x06 \x01(\x08\x12\x10\n\x08\x64istance\x18\x07 \x01(\x02\x12\x18\n\x10\x64istance_present\x18\x08 \x01(\x08\x12\x11\n\tcertainty\x18\t \x01(\x02\x12\x19\n\x11\x63\x65rtainty_present\x18\n \x01(\x08\x12\r\n\x05score\x18\x0b \x01(\x02\x12\x15\n\rscore_present\x18\x0c \x01(\x08\x12\x15\n\rexplain_score\x18\r \x01(\t\x12\x1d\n\x15\x65xplain_score_present\x18\x0e \x01(\x08\x12\x1a\n\ris_consistent\x18\x0f \x01(\x08H\x00\x88\x01\x01\x12\x16\n\ngenerative\x18\x10 \x01(\tB\x02\x18\x01\x12\x1e\n\x12generative_present\x18\x11 \x01(\x08\x42\x02\x18\x01\x12\x1d\n\x15is_consistent_present\x18\x12 \x01(\x08\x12\x14\n\x0cvector_bytes\x18\x13 \x01(\x0c\x12\x13\n\x0bid_as_bytes\x18\x14 \x01(\x0c\x12\x14\n\x0crerank_score\x18\x15 \x01(\x01\x12\x1c\n\x14rerank_score_present\x18\x16 \x01(\x08\x12%\n\x07vectors\x18\x17 \x03(\x0b\x32\x14.weaviate.v1.VectorsB\x10\n\x0e_is_consistent\"\x88\x02\n\x10PropertiesResult\x12\x33\n\tref_props\x18\x02 \x03(\x0b\x32 .weaviate.v1.RefPropertiesResult\x12\x19\n\x11target_collection\x18\x03 \x01(\t\x12-\n\x08metadata\x18\x04 \x01(\x0b\x32\x1b.weaviate.v1.MetadataResult\x12.\n\rnon_ref_props\x18\x0b \x01(\x0b\x32\x17.weaviate.v1.Properties\x12\x1b\n\x13ref_props_requested\x18\x0c \x01(\x08J\x04\x08\x01\x10\x02J\x04\x08\x05\x10\x06J\x04\x08\x06\x10\x07J\x04\x08\x07\x10\x08J\x04\x08\x08\x10\tJ\x04\x08\t\x10\nJ\x04\x08\n\x10\x0b\"[\n\x13RefPropertiesResult\x12\x31\n\nproperties\x18\x01 \x03(\x0b\x32\x1d.weaviate.v1.PropertiesResult\x12\x11\n\tprop_name\x18\x02 \x01(\tBs\n#io.weaviate.client.grpc.protocol.v1B\x16WeaviateProtoSearchGetZ4github.com/weaviate/weaviate/grpc/generated;protocolb\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x13v1/search_get.proto\x12\x0bweaviate.v1\x1a\rv1/base.proto\x1a\x14v1/base_search.proto\x1a\x13v1/generative.proto\x1a\x13v1/properties.proto\"\x9c\x0b\n\rSearchRequest\x12\x12\n\ncollection\x18\x01 \x01(\t\x12\x0e\n\x06tenant\x18\n \x01(\t\x12=\n\x11\x63onsistency_level\x18\x0b \x01(\x0e\x32\x1d.weaviate.v1.ConsistencyLevelH\x00\x88\x01\x01\x12\x37\n\nproperties\x18\x14 \x01(\x0b\x32\x1e.weaviate.v1.PropertiesRequestH\x01\x88\x01\x01\x12\x33\n\x08metadata\x18\x15 \x01(\x0b\x32\x1c.weaviate.v1.MetadataRequestH\x02\x88\x01\x01\x12+\n\x08group_by\x18\x16 \x01(\x0b\x32\x14.weaviate.v1.GroupByH\x03\x88\x01\x01\x12\r\n\x05limit\x18\x1e \x01(\r\x12\x0e\n\x06offset\x18\x1f \x01(\r\x12\x0f\n\x07\x61utocut\x18 \x01(\r\x12\r\n\x05\x61\x66ter\x18! \x01(\t\x12$\n\x07sort_by\x18\" \x03(\x0b\x32\x13.weaviate.v1.SortBy\x12*\n\x07\x66ilters\x18( \x01(\x0b\x32\x14.weaviate.v1.FiltersH\x04\x88\x01\x01\x12/\n\rhybrid_search\x18) \x01(\x0b\x32\x13.weaviate.v1.HybridH\x05\x88\x01\x01\x12+\n\x0b\x62m25_search\x18* \x01(\x0b\x32\x11.weaviate.v1.BM25H\x06\x88\x01\x01\x12\x31\n\x0bnear_vector\x18+ \x01(\x0b\x32\x17.weaviate.v1.NearVectorH\x07\x88\x01\x01\x12\x31\n\x0bnear_object\x18, \x01(\x0b\x32\x17.weaviate.v1.NearObjectH\x08\x88\x01\x01\x12\x33\n\tnear_text\x18- \x01(\x0b\x32\x1b.weaviate.v1.NearTextSearchH\t\x88\x01\x01\x12\x35\n\nnear_image\x18. \x01(\x0b\x32\x1c.weaviate.v1.NearImageSearchH\n\x88\x01\x01\x12\x35\n\nnear_audio\x18/ \x01(\x0b\x32\x1c.weaviate.v1.NearAudioSearchH\x0b\x88\x01\x01\x12\x35\n\nnear_video\x18\x30 \x01(\x0b\x32\x1c.weaviate.v1.NearVideoSearchH\x0c\x88\x01\x01\x12\x35\n\nnear_depth\x18\x31 \x01(\x0b\x32\x1c.weaviate.v1.NearDepthSearchH\r\x88\x01\x01\x12\x39\n\x0cnear_thermal\x18\x32 \x01(\x0b\x32\x1e.weaviate.v1.NearThermalSearchH\x0e\x88\x01\x01\x12\x31\n\x08near_imu\x18\x33 \x01(\x0b\x32\x1a.weaviate.v1.NearIMUSearchH\x0f\x88\x01\x01\x12\x36\n\ngenerative\x18< \x01(\x0b\x32\x1d.weaviate.v1.GenerativeSearchH\x10\x88\x01\x01\x12(\n\x06rerank\x18= \x01(\x0b\x32\x13.weaviate.v1.RerankH\x11\x88\x01\x01\x12\x18\n\x0cuses_123_api\x18\x64 \x01(\x08\x42\x02\x18\x01\x12\x18\n\x0cuses_125_api\x18\x65 \x01(\x08\x42\x02\x18\x01\x12\x14\n\x0cuses_127_api\x18\x66 \x01(\x08\x42\x14\n\x12_consistency_levelB\r\n\x0b_propertiesB\x0b\n\t_metadataB\x0b\n\t_group_byB\n\n\x08_filtersB\x10\n\x0e_hybrid_searchB\x0e\n\x0c_bm25_searchB\x0e\n\x0c_near_vectorB\x0e\n\x0c_near_objectB\x0c\n\n_near_textB\r\n\x0b_near_imageB\r\n\x0b_near_audioB\r\n\x0b_near_videoB\r\n\x0b_near_depthB\x0f\n\r_near_thermalB\x0b\n\t_near_imuB\r\n\x0b_generativeB\t\n\x07_rerank\"L\n\x07GroupBy\x12\x0c\n\x04path\x18\x01 \x03(\t\x12\x18\n\x10number_of_groups\x18\x02 \x01(\x05\x12\x19\n\x11objects_per_group\x18\x03 \x01(\x05\")\n\x06SortBy\x12\x11\n\tascending\x18\x01 \x01(\x08\x12\x0c\n\x04path\x18\x02 \x03(\t\"\xf4\x01\n\x0fMetadataRequest\x12\x0c\n\x04uuid\x18\x01 \x01(\x08\x12\x0e\n\x06vector\x18\x02 \x01(\x08\x12\x1a\n\x12\x63reation_time_unix\x18\x03 \x01(\x08\x12\x1d\n\x15last_update_time_unix\x18\x04 \x01(\x08\x12\x10\n\x08\x64istance\x18\x05 \x01(\x08\x12\x11\n\tcertainty\x18\x06 \x01(\x08\x12\r\n\x05score\x18\x07 \x01(\x08\x12\x15\n\rexplain_score\x18\x08 \x01(\x08\x12\x15\n\ris_consistent\x18\t \x01(\x08\x12\x0f\n\x07vectors\x18\n \x03(\t\x12\x15\n\rquery_profile\x18\x0b \x01(\x08\"\xd1\x01\n\x11PropertiesRequest\x12\x1a\n\x12non_ref_properties\x18\x01 \x03(\t\x12\x39\n\x0eref_properties\x18\x02 \x03(\x0b\x32!.weaviate.v1.RefPropertiesRequest\x12?\n\x11object_properties\x18\x03 \x03(\x0b\x32$.weaviate.v1.ObjectPropertiesRequest\x12$\n\x1creturn_all_nonref_properties\x18\x0b \x01(\x08\"\x8b\x01\n\x17ObjectPropertiesRequest\x12\x11\n\tprop_name\x18\x01 \x01(\t\x12\x1c\n\x14primitive_properties\x18\x02 \x03(\t\x12?\n\x11object_properties\x18\x03 \x03(\x0b\x32$.weaviate.v1.ObjectPropertiesRequest\"\xb1\x01\n\x14RefPropertiesRequest\x12\x1a\n\x12reference_property\x18\x01 \x01(\t\x12\x32\n\nproperties\x18\x02 \x01(\x0b\x32\x1e.weaviate.v1.PropertiesRequest\x12.\n\x08metadata\x18\x03 \x01(\x0b\x32\x1c.weaviate.v1.MetadataRequest\x12\x19\n\x11target_collection\x18\x04 \x01(\t\"8\n\x06Rerank\x12\x10\n\x08property\x18\x01 \x01(\t\x12\x12\n\x05query\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x08\n\x06_query\"\xf7\x02\n\x0bSearchReply\x12\x0c\n\x04took\x18\x01 \x01(\x02\x12*\n\x07results\x18\x02 \x03(\x0b\x32\x19.weaviate.v1.SearchResult\x12*\n\x19generative_grouped_result\x18\x03 \x01(\tB\x02\x18\x01H\x00\x88\x01\x01\x12\x34\n\x10group_by_results\x18\x04 \x03(\x0b\x32\x1a.weaviate.v1.GroupByResult\x12\x46\n\x1agenerative_grouped_results\x18\x05 \x01(\x0b\x32\x1d.weaviate.v1.GenerativeResultH\x01\x88\x01\x01\x12\x35\n\rquery_profile\x18\x06 \x01(\x0b\x32\x19.weaviate.v1.QueryProfileH\x02\x88\x01\x01\x42\x1c\n\x1a_generative_grouped_resultB\x1d\n\x1b_generative_grouped_resultsB\x10\n\x0e_query_profile\"\x9e\x03\n\x0cQueryProfile\x12\x36\n\x06shards\x18\x01 \x03(\x0b\x32&.weaviate.v1.QueryProfile.ShardProfile\x1a\x86\x01\n\rSearchProfile\x12\x45\n\x07\x64\x65tails\x18\x01 \x03(\x0b\x32\x34.weaviate.v1.QueryProfile.SearchProfile.DetailsEntry\x1a.\n\x0c\x44\x65tailsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a\xcc\x01\n\x0cShardProfile\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0c\n\x04node\x18\x02 \x01(\t\x12\x46\n\x08searches\x18\x03 \x03(\x0b\x32\x34.weaviate.v1.QueryProfile.ShardProfile.SearchesEntry\x1aX\n\rSearchesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x36\n\x05value\x18\x02 \x01(\x0b\x32\'.weaviate.v1.QueryProfile.SearchProfile:\x02\x38\x01\"\x1c\n\x0bRerankReply\x12\r\n\x05score\x18\x01 \x01(\x01\"\xe9\x02\n\rGroupByResult\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x14\n\x0cmin_distance\x18\x02 \x01(\x02\x12\x14\n\x0cmax_distance\x18\x03 \x01(\x02\x12\x19\n\x11number_of_objects\x18\x04 \x01(\x03\x12*\n\x07objects\x18\x05 \x03(\x0b\x32\x19.weaviate.v1.SearchResult\x12-\n\x06rerank\x18\x06 \x01(\x0b\x32\x18.weaviate.v1.RerankReplyH\x00\x88\x01\x01\x12\x39\n\ngenerative\x18\x07 \x01(\x0b\x32\x1c.weaviate.v1.GenerativeReplyB\x02\x18\x01H\x01\x88\x01\x01\x12=\n\x11generative_result\x18\x08 \x01(\x0b\x32\x1d.weaviate.v1.GenerativeResultH\x02\x88\x01\x01\x42\t\n\x07_rerankB\r\n\x0b_generativeB\x14\n\x12_generative_result\"\xb7\x01\n\x0cSearchResult\x12\x31\n\nproperties\x18\x01 \x01(\x0b\x32\x1d.weaviate.v1.PropertiesResult\x12-\n\x08metadata\x18\x02 \x01(\x0b\x32\x1b.weaviate.v1.MetadataResult\x12\x36\n\ngenerative\x18\x03 \x01(\x0b\x32\x1d.weaviate.v1.GenerativeResultH\x00\x88\x01\x01\x42\r\n\x0b_generative\"\xf7\x04\n\x0eMetadataResult\x12\n\n\x02id\x18\x01 \x01(\t\x12\x12\n\x06vector\x18\x02 \x03(\x02\x42\x02\x18\x01\x12\x1a\n\x12\x63reation_time_unix\x18\x03 \x01(\x03\x12\"\n\x1a\x63reation_time_unix_present\x18\x04 \x01(\x08\x12\x1d\n\x15last_update_time_unix\x18\x05 \x01(\x03\x12%\n\x1dlast_update_time_unix_present\x18\x06 \x01(\x08\x12\x10\n\x08\x64istance\x18\x07 \x01(\x02\x12\x18\n\x10\x64istance_present\x18\x08 \x01(\x08\x12\x11\n\tcertainty\x18\t \x01(\x02\x12\x19\n\x11\x63\x65rtainty_present\x18\n \x01(\x08\x12\r\n\x05score\x18\x0b \x01(\x02\x12\x15\n\rscore_present\x18\x0c \x01(\x08\x12\x15\n\rexplain_score\x18\r \x01(\t\x12\x1d\n\x15\x65xplain_score_present\x18\x0e \x01(\x08\x12\x1a\n\ris_consistent\x18\x0f \x01(\x08H\x00\x88\x01\x01\x12\x16\n\ngenerative\x18\x10 \x01(\tB\x02\x18\x01\x12\x1e\n\x12generative_present\x18\x11 \x01(\x08\x42\x02\x18\x01\x12\x1d\n\x15is_consistent_present\x18\x12 \x01(\x08\x12\x14\n\x0cvector_bytes\x18\x13 \x01(\x0c\x12\x13\n\x0bid_as_bytes\x18\x14 \x01(\x0c\x12\x14\n\x0crerank_score\x18\x15 \x01(\x01\x12\x1c\n\x14rerank_score_present\x18\x16 \x01(\x08\x12%\n\x07vectors\x18\x17 \x03(\x0b\x32\x14.weaviate.v1.VectorsB\x10\n\x0e_is_consistent\"\x88\x02\n\x10PropertiesResult\x12\x33\n\tref_props\x18\x02 \x03(\x0b\x32 .weaviate.v1.RefPropertiesResult\x12\x19\n\x11target_collection\x18\x03 \x01(\t\x12-\n\x08metadata\x18\x04 \x01(\x0b\x32\x1b.weaviate.v1.MetadataResult\x12.\n\rnon_ref_props\x18\x0b \x01(\x0b\x32\x17.weaviate.v1.Properties\x12\x1b\n\x13ref_props_requested\x18\x0c \x01(\x08J\x04\x08\x01\x10\x02J\x04\x08\x05\x10\x06J\x04\x08\x06\x10\x07J\x04\x08\x07\x10\x08J\x04\x08\x08\x10\tJ\x04\x08\t\x10\nJ\x04\x08\n\x10\x0b\"[\n\x13RefPropertiesResult\x12\x31\n\nproperties\x18\x01 \x03(\x0b\x32\x1d.weaviate.v1.PropertiesResult\x12\x11\n\tprop_name\x18\x02 \x01(\tBs\n#io.weaviate.client.grpc.protocol.v1B\x16WeaviateProtoSearchGetZ4github.com/weaviate/weaviate/grpc/generated;protocolb\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -31,6 +31,10 @@ _SEARCHREQUEST.fields_by_name['uses_125_api']._serialized_options = b'\030\001' _SEARCHREPLY.fields_by_name['generative_grouped_result']._options = None _SEARCHREPLY.fields_by_name['generative_grouped_result']._serialized_options = b'\030\001' + _QUERYPROFILE_SEARCHPROFILE_DETAILSENTRY._options = None + _QUERYPROFILE_SEARCHPROFILE_DETAILSENTRY._serialized_options = b'8\001' + _QUERYPROFILE_SHARDPROFILE_SEARCHESENTRY._options = None + _QUERYPROFILE_SHARDPROFILE_SEARCHESENTRY._serialized_options = b'8\001' _GROUPBYRESULT.fields_by_name['generative']._options = None _GROUPBYRESULT.fields_by_name['generative']._serialized_options = b'\030\001' _METADATARESULT.fields_by_name['vector']._options = None @@ -46,27 +50,37 @@ _globals['_SORTBY']._serialized_start=1632 _globals['_SORTBY']._serialized_end=1673 _globals['_METADATAREQUEST']._serialized_start=1676 - _globals['_METADATAREQUEST']._serialized_end=1897 - _globals['_PROPERTIESREQUEST']._serialized_start=1900 - _globals['_PROPERTIESREQUEST']._serialized_end=2109 - _globals['_OBJECTPROPERTIESREQUEST']._serialized_start=2112 - _globals['_OBJECTPROPERTIESREQUEST']._serialized_end=2251 - _globals['_REFPROPERTIESREQUEST']._serialized_start=2254 - _globals['_REFPROPERTIESREQUEST']._serialized_end=2431 - _globals['_RERANK']._serialized_start=2433 - _globals['_RERANK']._serialized_end=2489 - _globals['_SEARCHREPLY']._serialized_start=2492 - _globals['_SEARCHREPLY']._serialized_end=2794 - _globals['_RERANKREPLY']._serialized_start=2796 - _globals['_RERANKREPLY']._serialized_end=2824 - _globals['_GROUPBYRESULT']._serialized_start=2827 - _globals['_GROUPBYRESULT']._serialized_end=3188 - _globals['_SEARCHRESULT']._serialized_start=3191 - _globals['_SEARCHRESULT']._serialized_end=3374 - _globals['_METADATARESULT']._serialized_start=3377 - _globals['_METADATARESULT']._serialized_end=4008 - _globals['_PROPERTIESRESULT']._serialized_start=4011 - _globals['_PROPERTIESRESULT']._serialized_end=4275 - _globals['_REFPROPERTIESRESULT']._serialized_start=4277 - _globals['_REFPROPERTIESRESULT']._serialized_end=4368 + _globals['_METADATAREQUEST']._serialized_end=1920 + _globals['_PROPERTIESREQUEST']._serialized_start=1923 + _globals['_PROPERTIESREQUEST']._serialized_end=2132 + _globals['_OBJECTPROPERTIESREQUEST']._serialized_start=2135 + _globals['_OBJECTPROPERTIESREQUEST']._serialized_end=2274 + _globals['_REFPROPERTIESREQUEST']._serialized_start=2277 + _globals['_REFPROPERTIESREQUEST']._serialized_end=2454 + _globals['_RERANK']._serialized_start=2456 + _globals['_RERANK']._serialized_end=2512 + _globals['_SEARCHREPLY']._serialized_start=2515 + _globals['_SEARCHREPLY']._serialized_end=2890 + _globals['_QUERYPROFILE']._serialized_start=2893 + _globals['_QUERYPROFILE']._serialized_end=3307 + _globals['_QUERYPROFILE_SEARCHPROFILE']._serialized_start=2966 + _globals['_QUERYPROFILE_SEARCHPROFILE']._serialized_end=3100 + _globals['_QUERYPROFILE_SEARCHPROFILE_DETAILSENTRY']._serialized_start=3054 + _globals['_QUERYPROFILE_SEARCHPROFILE_DETAILSENTRY']._serialized_end=3100 + _globals['_QUERYPROFILE_SHARDPROFILE']._serialized_start=3103 + _globals['_QUERYPROFILE_SHARDPROFILE']._serialized_end=3307 + _globals['_QUERYPROFILE_SHARDPROFILE_SEARCHESENTRY']._serialized_start=3219 + _globals['_QUERYPROFILE_SHARDPROFILE_SEARCHESENTRY']._serialized_end=3307 + _globals['_RERANKREPLY']._serialized_start=3309 + _globals['_RERANKREPLY']._serialized_end=3337 + _globals['_GROUPBYRESULT']._serialized_start=3340 + _globals['_GROUPBYRESULT']._serialized_end=3701 + _globals['_SEARCHRESULT']._serialized_start=3704 + _globals['_SEARCHRESULT']._serialized_end=3887 + _globals['_METADATARESULT']._serialized_start=3890 + _globals['_METADATARESULT']._serialized_end=4521 + _globals['_PROPERTIESRESULT']._serialized_start=4524 + _globals['_PROPERTIESRESULT']._serialized_end=4788 + _globals['_REFPROPERTIESRESULT']._serialized_start=4790 + _globals['_REFPROPERTIESRESULT']._serialized_end=4881 # @@protoc_insertion_point(module_scope) diff --git a/weaviate/proto/v1/v4216/v1/search_get_pb2.pyi b/weaviate/proto/v1/v4216/v1/search_get_pb2.pyi index 9dd1ee0d0..a0300e672 100644 --- a/weaviate/proto/v1/v4216/v1/search_get_pb2.pyi +++ b/weaviate/proto/v1/v4216/v1/search_get_pb2.pyi @@ -88,7 +88,7 @@ class SortBy(_message.Message): def __init__(self, ascending: bool = ..., path: _Optional[_Iterable[str]] = ...) -> None: ... class MetadataRequest(_message.Message): - __slots__ = ["uuid", "vector", "creation_time_unix", "last_update_time_unix", "distance", "certainty", "score", "explain_score", "is_consistent", "vectors"] + __slots__ = ["uuid", "vector", "creation_time_unix", "last_update_time_unix", "distance", "certainty", "score", "explain_score", "is_consistent", "vectors", "query_profile"] UUID_FIELD_NUMBER: _ClassVar[int] VECTOR_FIELD_NUMBER: _ClassVar[int] CREATION_TIME_UNIX_FIELD_NUMBER: _ClassVar[int] @@ -99,6 +99,7 @@ class MetadataRequest(_message.Message): EXPLAIN_SCORE_FIELD_NUMBER: _ClassVar[int] IS_CONSISTENT_FIELD_NUMBER: _ClassVar[int] VECTORS_FIELD_NUMBER: _ClassVar[int] + QUERY_PROFILE_FIELD_NUMBER: _ClassVar[int] uuid: bool vector: bool creation_time_unix: bool @@ -109,7 +110,8 @@ class MetadataRequest(_message.Message): explain_score: bool is_consistent: bool vectors: _containers.RepeatedScalarFieldContainer[str] - def __init__(self, uuid: bool = ..., vector: bool = ..., creation_time_unix: bool = ..., last_update_time_unix: bool = ..., distance: bool = ..., certainty: bool = ..., score: bool = ..., explain_score: bool = ..., is_consistent: bool = ..., vectors: _Optional[_Iterable[str]] = ...) -> None: ... + query_profile: bool + def __init__(self, uuid: bool = ..., vector: bool = ..., creation_time_unix: bool = ..., last_update_time_unix: bool = ..., distance: bool = ..., certainty: bool = ..., score: bool = ..., explain_score: bool = ..., is_consistent: bool = ..., vectors: _Optional[_Iterable[str]] = ..., query_profile: bool = ...) -> None: ... class PropertiesRequest(_message.Message): __slots__ = ["non_ref_properties", "ref_properties", "object_properties", "return_all_nonref_properties"] @@ -154,18 +156,54 @@ class Rerank(_message.Message): def __init__(self, property: _Optional[str] = ..., query: _Optional[str] = ...) -> None: ... class SearchReply(_message.Message): - __slots__ = ["took", "results", "generative_grouped_result", "group_by_results", "generative_grouped_results"] + __slots__ = ["took", "results", "generative_grouped_result", "group_by_results", "generative_grouped_results", "query_profile"] TOOK_FIELD_NUMBER: _ClassVar[int] RESULTS_FIELD_NUMBER: _ClassVar[int] GENERATIVE_GROUPED_RESULT_FIELD_NUMBER: _ClassVar[int] GROUP_BY_RESULTS_FIELD_NUMBER: _ClassVar[int] GENERATIVE_GROUPED_RESULTS_FIELD_NUMBER: _ClassVar[int] + QUERY_PROFILE_FIELD_NUMBER: _ClassVar[int] took: float results: _containers.RepeatedCompositeFieldContainer[SearchResult] generative_grouped_result: str group_by_results: _containers.RepeatedCompositeFieldContainer[GroupByResult] generative_grouped_results: _generative_pb2.GenerativeResult - def __init__(self, took: _Optional[float] = ..., results: _Optional[_Iterable[_Union[SearchResult, _Mapping]]] = ..., generative_grouped_result: _Optional[str] = ..., group_by_results: _Optional[_Iterable[_Union[GroupByResult, _Mapping]]] = ..., generative_grouped_results: _Optional[_Union[_generative_pb2.GenerativeResult, _Mapping]] = ...) -> None: ... + query_profile: QueryProfile + def __init__(self, took: _Optional[float] = ..., results: _Optional[_Iterable[_Union[SearchResult, _Mapping]]] = ..., generative_grouped_result: _Optional[str] = ..., group_by_results: _Optional[_Iterable[_Union[GroupByResult, _Mapping]]] = ..., generative_grouped_results: _Optional[_Union[_generative_pb2.GenerativeResult, _Mapping]] = ..., query_profile: _Optional[_Union[QueryProfile, _Mapping]] = ...) -> None: ... + +class QueryProfile(_message.Message): + __slots__ = ["shards"] + class SearchProfile(_message.Message): + __slots__ = ["details"] + class DetailsEntry(_message.Message): + __slots__ = ["key", "value"] + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: str + value: str + def __init__(self, key: _Optional[str] = ..., value: _Optional[str] = ...) -> None: ... + DETAILS_FIELD_NUMBER: _ClassVar[int] + details: _containers.ScalarMap[str, str] + def __init__(self, details: _Optional[_Mapping[str, str]] = ...) -> None: ... + class ShardProfile(_message.Message): + __slots__ = ["name", "node", "searches"] + class SearchesEntry(_message.Message): + __slots__ = ["key", "value"] + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: str + value: QueryProfile.SearchProfile + def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[QueryProfile.SearchProfile, _Mapping]] = ...) -> None: ... + NAME_FIELD_NUMBER: _ClassVar[int] + NODE_FIELD_NUMBER: _ClassVar[int] + SEARCHES_FIELD_NUMBER: _ClassVar[int] + name: str + node: str + searches: _containers.MessageMap[str, QueryProfile.SearchProfile] + def __init__(self, name: _Optional[str] = ..., node: _Optional[str] = ..., searches: _Optional[_Mapping[str, QueryProfile.SearchProfile]] = ...) -> None: ... + SHARDS_FIELD_NUMBER: _ClassVar[int] + shards: _containers.RepeatedCompositeFieldContainer[QueryProfile.ShardProfile] + def __init__(self, shards: _Optional[_Iterable[_Union[QueryProfile.ShardProfile, _Mapping]]] = ...) -> None: ... class RerankReply(_message.Message): __slots__ = ["score"] diff --git a/weaviate/proto/v1/v5261/v1/search_get_pb2.py b/weaviate/proto/v1/v5261/v1/search_get_pb2.py index 04356c19f..7686973af 100644 --- a/weaviate/proto/v1/v5261/v1/search_get_pb2.py +++ b/weaviate/proto/v1/v5261/v1/search_get_pb2.py @@ -18,7 +18,7 @@ from weaviate.proto.v1.v5261.v1 import properties_pb2 as v1_dot_properties__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x13v1/search_get.proto\x12\x0bweaviate.v1\x1a\rv1/base.proto\x1a\x14v1/base_search.proto\x1a\x13v1/generative.proto\x1a\x13v1/properties.proto\"\x9c\x0b\n\rSearchRequest\x12\x12\n\ncollection\x18\x01 \x01(\t\x12\x0e\n\x06tenant\x18\n \x01(\t\x12=\n\x11\x63onsistency_level\x18\x0b \x01(\x0e\x32\x1d.weaviate.v1.ConsistencyLevelH\x00\x88\x01\x01\x12\x37\n\nproperties\x18\x14 \x01(\x0b\x32\x1e.weaviate.v1.PropertiesRequestH\x01\x88\x01\x01\x12\x33\n\x08metadata\x18\x15 \x01(\x0b\x32\x1c.weaviate.v1.MetadataRequestH\x02\x88\x01\x01\x12+\n\x08group_by\x18\x16 \x01(\x0b\x32\x14.weaviate.v1.GroupByH\x03\x88\x01\x01\x12\r\n\x05limit\x18\x1e \x01(\r\x12\x0e\n\x06offset\x18\x1f \x01(\r\x12\x0f\n\x07\x61utocut\x18 \x01(\r\x12\r\n\x05\x61\x66ter\x18! \x01(\t\x12$\n\x07sort_by\x18\" \x03(\x0b\x32\x13.weaviate.v1.SortBy\x12*\n\x07\x66ilters\x18( \x01(\x0b\x32\x14.weaviate.v1.FiltersH\x04\x88\x01\x01\x12/\n\rhybrid_search\x18) \x01(\x0b\x32\x13.weaviate.v1.HybridH\x05\x88\x01\x01\x12+\n\x0b\x62m25_search\x18* \x01(\x0b\x32\x11.weaviate.v1.BM25H\x06\x88\x01\x01\x12\x31\n\x0bnear_vector\x18+ \x01(\x0b\x32\x17.weaviate.v1.NearVectorH\x07\x88\x01\x01\x12\x31\n\x0bnear_object\x18, \x01(\x0b\x32\x17.weaviate.v1.NearObjectH\x08\x88\x01\x01\x12\x33\n\tnear_text\x18- \x01(\x0b\x32\x1b.weaviate.v1.NearTextSearchH\t\x88\x01\x01\x12\x35\n\nnear_image\x18. \x01(\x0b\x32\x1c.weaviate.v1.NearImageSearchH\n\x88\x01\x01\x12\x35\n\nnear_audio\x18/ \x01(\x0b\x32\x1c.weaviate.v1.NearAudioSearchH\x0b\x88\x01\x01\x12\x35\n\nnear_video\x18\x30 \x01(\x0b\x32\x1c.weaviate.v1.NearVideoSearchH\x0c\x88\x01\x01\x12\x35\n\nnear_depth\x18\x31 \x01(\x0b\x32\x1c.weaviate.v1.NearDepthSearchH\r\x88\x01\x01\x12\x39\n\x0cnear_thermal\x18\x32 \x01(\x0b\x32\x1e.weaviate.v1.NearThermalSearchH\x0e\x88\x01\x01\x12\x31\n\x08near_imu\x18\x33 \x01(\x0b\x32\x1a.weaviate.v1.NearIMUSearchH\x0f\x88\x01\x01\x12\x36\n\ngenerative\x18< \x01(\x0b\x32\x1d.weaviate.v1.GenerativeSearchH\x10\x88\x01\x01\x12(\n\x06rerank\x18= \x01(\x0b\x32\x13.weaviate.v1.RerankH\x11\x88\x01\x01\x12\x18\n\x0cuses_123_api\x18\x64 \x01(\x08\x42\x02\x18\x01\x12\x18\n\x0cuses_125_api\x18\x65 \x01(\x08\x42\x02\x18\x01\x12\x14\n\x0cuses_127_api\x18\x66 \x01(\x08\x42\x14\n\x12_consistency_levelB\r\n\x0b_propertiesB\x0b\n\t_metadataB\x0b\n\t_group_byB\n\n\x08_filtersB\x10\n\x0e_hybrid_searchB\x0e\n\x0c_bm25_searchB\x0e\n\x0c_near_vectorB\x0e\n\x0c_near_objectB\x0c\n\n_near_textB\r\n\x0b_near_imageB\r\n\x0b_near_audioB\r\n\x0b_near_videoB\r\n\x0b_near_depthB\x0f\n\r_near_thermalB\x0b\n\t_near_imuB\r\n\x0b_generativeB\t\n\x07_rerank\"L\n\x07GroupBy\x12\x0c\n\x04path\x18\x01 \x03(\t\x12\x18\n\x10number_of_groups\x18\x02 \x01(\x05\x12\x19\n\x11objects_per_group\x18\x03 \x01(\x05\")\n\x06SortBy\x12\x11\n\tascending\x18\x01 \x01(\x08\x12\x0c\n\x04path\x18\x02 \x03(\t\"\xdd\x01\n\x0fMetadataRequest\x12\x0c\n\x04uuid\x18\x01 \x01(\x08\x12\x0e\n\x06vector\x18\x02 \x01(\x08\x12\x1a\n\x12\x63reation_time_unix\x18\x03 \x01(\x08\x12\x1d\n\x15last_update_time_unix\x18\x04 \x01(\x08\x12\x10\n\x08\x64istance\x18\x05 \x01(\x08\x12\x11\n\tcertainty\x18\x06 \x01(\x08\x12\r\n\x05score\x18\x07 \x01(\x08\x12\x15\n\rexplain_score\x18\x08 \x01(\x08\x12\x15\n\ris_consistent\x18\t \x01(\x08\x12\x0f\n\x07vectors\x18\n \x03(\t\"\xd1\x01\n\x11PropertiesRequest\x12\x1a\n\x12non_ref_properties\x18\x01 \x03(\t\x12\x39\n\x0eref_properties\x18\x02 \x03(\x0b\x32!.weaviate.v1.RefPropertiesRequest\x12?\n\x11object_properties\x18\x03 \x03(\x0b\x32$.weaviate.v1.ObjectPropertiesRequest\x12$\n\x1creturn_all_nonref_properties\x18\x0b \x01(\x08\"\x8b\x01\n\x17ObjectPropertiesRequest\x12\x11\n\tprop_name\x18\x01 \x01(\t\x12\x1c\n\x14primitive_properties\x18\x02 \x03(\t\x12?\n\x11object_properties\x18\x03 \x03(\x0b\x32$.weaviate.v1.ObjectPropertiesRequest\"\xb1\x01\n\x14RefPropertiesRequest\x12\x1a\n\x12reference_property\x18\x01 \x01(\t\x12\x32\n\nproperties\x18\x02 \x01(\x0b\x32\x1e.weaviate.v1.PropertiesRequest\x12.\n\x08metadata\x18\x03 \x01(\x0b\x32\x1c.weaviate.v1.MetadataRequest\x12\x19\n\x11target_collection\x18\x04 \x01(\t\"8\n\x06Rerank\x12\x10\n\x08property\x18\x01 \x01(\t\x12\x12\n\x05query\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x08\n\x06_query\"\xae\x02\n\x0bSearchReply\x12\x0c\n\x04took\x18\x01 \x01(\x02\x12*\n\x07results\x18\x02 \x03(\x0b\x32\x19.weaviate.v1.SearchResult\x12*\n\x19generative_grouped_result\x18\x03 \x01(\tB\x02\x18\x01H\x00\x88\x01\x01\x12\x34\n\x10group_by_results\x18\x04 \x03(\x0b\x32\x1a.weaviate.v1.GroupByResult\x12\x46\n\x1agenerative_grouped_results\x18\x05 \x01(\x0b\x32\x1d.weaviate.v1.GenerativeResultH\x01\x88\x01\x01\x42\x1c\n\x1a_generative_grouped_resultB\x1d\n\x1b_generative_grouped_results\"\x1c\n\x0bRerankReply\x12\r\n\x05score\x18\x01 \x01(\x01\"\xe9\x02\n\rGroupByResult\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x14\n\x0cmin_distance\x18\x02 \x01(\x02\x12\x14\n\x0cmax_distance\x18\x03 \x01(\x02\x12\x19\n\x11number_of_objects\x18\x04 \x01(\x03\x12*\n\x07objects\x18\x05 \x03(\x0b\x32\x19.weaviate.v1.SearchResult\x12-\n\x06rerank\x18\x06 \x01(\x0b\x32\x18.weaviate.v1.RerankReplyH\x00\x88\x01\x01\x12\x39\n\ngenerative\x18\x07 \x01(\x0b\x32\x1c.weaviate.v1.GenerativeReplyB\x02\x18\x01H\x01\x88\x01\x01\x12=\n\x11generative_result\x18\x08 \x01(\x0b\x32\x1d.weaviate.v1.GenerativeResultH\x02\x88\x01\x01\x42\t\n\x07_rerankB\r\n\x0b_generativeB\x14\n\x12_generative_result\"\xb7\x01\n\x0cSearchResult\x12\x31\n\nproperties\x18\x01 \x01(\x0b\x32\x1d.weaviate.v1.PropertiesResult\x12-\n\x08metadata\x18\x02 \x01(\x0b\x32\x1b.weaviate.v1.MetadataResult\x12\x36\n\ngenerative\x18\x03 \x01(\x0b\x32\x1d.weaviate.v1.GenerativeResultH\x00\x88\x01\x01\x42\r\n\x0b_generative\"\xf7\x04\n\x0eMetadataResult\x12\n\n\x02id\x18\x01 \x01(\t\x12\x12\n\x06vector\x18\x02 \x03(\x02\x42\x02\x18\x01\x12\x1a\n\x12\x63reation_time_unix\x18\x03 \x01(\x03\x12\"\n\x1a\x63reation_time_unix_present\x18\x04 \x01(\x08\x12\x1d\n\x15last_update_time_unix\x18\x05 \x01(\x03\x12%\n\x1dlast_update_time_unix_present\x18\x06 \x01(\x08\x12\x10\n\x08\x64istance\x18\x07 \x01(\x02\x12\x18\n\x10\x64istance_present\x18\x08 \x01(\x08\x12\x11\n\tcertainty\x18\t \x01(\x02\x12\x19\n\x11\x63\x65rtainty_present\x18\n \x01(\x08\x12\r\n\x05score\x18\x0b \x01(\x02\x12\x15\n\rscore_present\x18\x0c \x01(\x08\x12\x15\n\rexplain_score\x18\r \x01(\t\x12\x1d\n\x15\x65xplain_score_present\x18\x0e \x01(\x08\x12\x1a\n\ris_consistent\x18\x0f \x01(\x08H\x00\x88\x01\x01\x12\x16\n\ngenerative\x18\x10 \x01(\tB\x02\x18\x01\x12\x1e\n\x12generative_present\x18\x11 \x01(\x08\x42\x02\x18\x01\x12\x1d\n\x15is_consistent_present\x18\x12 \x01(\x08\x12\x14\n\x0cvector_bytes\x18\x13 \x01(\x0c\x12\x13\n\x0bid_as_bytes\x18\x14 \x01(\x0c\x12\x14\n\x0crerank_score\x18\x15 \x01(\x01\x12\x1c\n\x14rerank_score_present\x18\x16 \x01(\x08\x12%\n\x07vectors\x18\x17 \x03(\x0b\x32\x14.weaviate.v1.VectorsB\x10\n\x0e_is_consistent\"\x88\x02\n\x10PropertiesResult\x12\x33\n\tref_props\x18\x02 \x03(\x0b\x32 .weaviate.v1.RefPropertiesResult\x12\x19\n\x11target_collection\x18\x03 \x01(\t\x12-\n\x08metadata\x18\x04 \x01(\x0b\x32\x1b.weaviate.v1.MetadataResult\x12.\n\rnon_ref_props\x18\x0b \x01(\x0b\x32\x17.weaviate.v1.Properties\x12\x1b\n\x13ref_props_requested\x18\x0c \x01(\x08J\x04\x08\x01\x10\x02J\x04\x08\x05\x10\x06J\x04\x08\x06\x10\x07J\x04\x08\x07\x10\x08J\x04\x08\x08\x10\tJ\x04\x08\t\x10\nJ\x04\x08\n\x10\x0b\"[\n\x13RefPropertiesResult\x12\x31\n\nproperties\x18\x01 \x03(\x0b\x32\x1d.weaviate.v1.PropertiesResult\x12\x11\n\tprop_name\x18\x02 \x01(\tBs\n#io.weaviate.client.grpc.protocol.v1B\x16WeaviateProtoSearchGetZ4github.com/weaviate/weaviate/grpc/generated;protocolb\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x13v1/search_get.proto\x12\x0bweaviate.v1\x1a\rv1/base.proto\x1a\x14v1/base_search.proto\x1a\x13v1/generative.proto\x1a\x13v1/properties.proto\"\x9c\x0b\n\rSearchRequest\x12\x12\n\ncollection\x18\x01 \x01(\t\x12\x0e\n\x06tenant\x18\n \x01(\t\x12=\n\x11\x63onsistency_level\x18\x0b \x01(\x0e\x32\x1d.weaviate.v1.ConsistencyLevelH\x00\x88\x01\x01\x12\x37\n\nproperties\x18\x14 \x01(\x0b\x32\x1e.weaviate.v1.PropertiesRequestH\x01\x88\x01\x01\x12\x33\n\x08metadata\x18\x15 \x01(\x0b\x32\x1c.weaviate.v1.MetadataRequestH\x02\x88\x01\x01\x12+\n\x08group_by\x18\x16 \x01(\x0b\x32\x14.weaviate.v1.GroupByH\x03\x88\x01\x01\x12\r\n\x05limit\x18\x1e \x01(\r\x12\x0e\n\x06offset\x18\x1f \x01(\r\x12\x0f\n\x07\x61utocut\x18 \x01(\r\x12\r\n\x05\x61\x66ter\x18! \x01(\t\x12$\n\x07sort_by\x18\" \x03(\x0b\x32\x13.weaviate.v1.SortBy\x12*\n\x07\x66ilters\x18( \x01(\x0b\x32\x14.weaviate.v1.FiltersH\x04\x88\x01\x01\x12/\n\rhybrid_search\x18) \x01(\x0b\x32\x13.weaviate.v1.HybridH\x05\x88\x01\x01\x12+\n\x0b\x62m25_search\x18* \x01(\x0b\x32\x11.weaviate.v1.BM25H\x06\x88\x01\x01\x12\x31\n\x0bnear_vector\x18+ \x01(\x0b\x32\x17.weaviate.v1.NearVectorH\x07\x88\x01\x01\x12\x31\n\x0bnear_object\x18, \x01(\x0b\x32\x17.weaviate.v1.NearObjectH\x08\x88\x01\x01\x12\x33\n\tnear_text\x18- \x01(\x0b\x32\x1b.weaviate.v1.NearTextSearchH\t\x88\x01\x01\x12\x35\n\nnear_image\x18. \x01(\x0b\x32\x1c.weaviate.v1.NearImageSearchH\n\x88\x01\x01\x12\x35\n\nnear_audio\x18/ \x01(\x0b\x32\x1c.weaviate.v1.NearAudioSearchH\x0b\x88\x01\x01\x12\x35\n\nnear_video\x18\x30 \x01(\x0b\x32\x1c.weaviate.v1.NearVideoSearchH\x0c\x88\x01\x01\x12\x35\n\nnear_depth\x18\x31 \x01(\x0b\x32\x1c.weaviate.v1.NearDepthSearchH\r\x88\x01\x01\x12\x39\n\x0cnear_thermal\x18\x32 \x01(\x0b\x32\x1e.weaviate.v1.NearThermalSearchH\x0e\x88\x01\x01\x12\x31\n\x08near_imu\x18\x33 \x01(\x0b\x32\x1a.weaviate.v1.NearIMUSearchH\x0f\x88\x01\x01\x12\x36\n\ngenerative\x18< \x01(\x0b\x32\x1d.weaviate.v1.GenerativeSearchH\x10\x88\x01\x01\x12(\n\x06rerank\x18= \x01(\x0b\x32\x13.weaviate.v1.RerankH\x11\x88\x01\x01\x12\x18\n\x0cuses_123_api\x18\x64 \x01(\x08\x42\x02\x18\x01\x12\x18\n\x0cuses_125_api\x18\x65 \x01(\x08\x42\x02\x18\x01\x12\x14\n\x0cuses_127_api\x18\x66 \x01(\x08\x42\x14\n\x12_consistency_levelB\r\n\x0b_propertiesB\x0b\n\t_metadataB\x0b\n\t_group_byB\n\n\x08_filtersB\x10\n\x0e_hybrid_searchB\x0e\n\x0c_bm25_searchB\x0e\n\x0c_near_vectorB\x0e\n\x0c_near_objectB\x0c\n\n_near_textB\r\n\x0b_near_imageB\r\n\x0b_near_audioB\r\n\x0b_near_videoB\r\n\x0b_near_depthB\x0f\n\r_near_thermalB\x0b\n\t_near_imuB\r\n\x0b_generativeB\t\n\x07_rerank\"L\n\x07GroupBy\x12\x0c\n\x04path\x18\x01 \x03(\t\x12\x18\n\x10number_of_groups\x18\x02 \x01(\x05\x12\x19\n\x11objects_per_group\x18\x03 \x01(\x05\")\n\x06SortBy\x12\x11\n\tascending\x18\x01 \x01(\x08\x12\x0c\n\x04path\x18\x02 \x03(\t\"\xf4\x01\n\x0fMetadataRequest\x12\x0c\n\x04uuid\x18\x01 \x01(\x08\x12\x0e\n\x06vector\x18\x02 \x01(\x08\x12\x1a\n\x12\x63reation_time_unix\x18\x03 \x01(\x08\x12\x1d\n\x15last_update_time_unix\x18\x04 \x01(\x08\x12\x10\n\x08\x64istance\x18\x05 \x01(\x08\x12\x11\n\tcertainty\x18\x06 \x01(\x08\x12\r\n\x05score\x18\x07 \x01(\x08\x12\x15\n\rexplain_score\x18\x08 \x01(\x08\x12\x15\n\ris_consistent\x18\t \x01(\x08\x12\x0f\n\x07vectors\x18\n \x03(\t\x12\x15\n\rquery_profile\x18\x0b \x01(\x08\"\xd1\x01\n\x11PropertiesRequest\x12\x1a\n\x12non_ref_properties\x18\x01 \x03(\t\x12\x39\n\x0eref_properties\x18\x02 \x03(\x0b\x32!.weaviate.v1.RefPropertiesRequest\x12?\n\x11object_properties\x18\x03 \x03(\x0b\x32$.weaviate.v1.ObjectPropertiesRequest\x12$\n\x1creturn_all_nonref_properties\x18\x0b \x01(\x08\"\x8b\x01\n\x17ObjectPropertiesRequest\x12\x11\n\tprop_name\x18\x01 \x01(\t\x12\x1c\n\x14primitive_properties\x18\x02 \x03(\t\x12?\n\x11object_properties\x18\x03 \x03(\x0b\x32$.weaviate.v1.ObjectPropertiesRequest\"\xb1\x01\n\x14RefPropertiesRequest\x12\x1a\n\x12reference_property\x18\x01 \x01(\t\x12\x32\n\nproperties\x18\x02 \x01(\x0b\x32\x1e.weaviate.v1.PropertiesRequest\x12.\n\x08metadata\x18\x03 \x01(\x0b\x32\x1c.weaviate.v1.MetadataRequest\x12\x19\n\x11target_collection\x18\x04 \x01(\t\"8\n\x06Rerank\x12\x10\n\x08property\x18\x01 \x01(\t\x12\x12\n\x05query\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x08\n\x06_query\"\xf7\x02\n\x0bSearchReply\x12\x0c\n\x04took\x18\x01 \x01(\x02\x12*\n\x07results\x18\x02 \x03(\x0b\x32\x19.weaviate.v1.SearchResult\x12*\n\x19generative_grouped_result\x18\x03 \x01(\tB\x02\x18\x01H\x00\x88\x01\x01\x12\x34\n\x10group_by_results\x18\x04 \x03(\x0b\x32\x1a.weaviate.v1.GroupByResult\x12\x46\n\x1agenerative_grouped_results\x18\x05 \x01(\x0b\x32\x1d.weaviate.v1.GenerativeResultH\x01\x88\x01\x01\x12\x35\n\rquery_profile\x18\x06 \x01(\x0b\x32\x19.weaviate.v1.QueryProfileH\x02\x88\x01\x01\x42\x1c\n\x1a_generative_grouped_resultB\x1d\n\x1b_generative_grouped_resultsB\x10\n\x0e_query_profile\"\x9e\x03\n\x0cQueryProfile\x12\x36\n\x06shards\x18\x01 \x03(\x0b\x32&.weaviate.v1.QueryProfile.ShardProfile\x1a\x86\x01\n\rSearchProfile\x12\x45\n\x07\x64\x65tails\x18\x01 \x03(\x0b\x32\x34.weaviate.v1.QueryProfile.SearchProfile.DetailsEntry\x1a.\n\x0c\x44\x65tailsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a\xcc\x01\n\x0cShardProfile\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0c\n\x04node\x18\x02 \x01(\t\x12\x46\n\x08searches\x18\x03 \x03(\x0b\x32\x34.weaviate.v1.QueryProfile.ShardProfile.SearchesEntry\x1aX\n\rSearchesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x36\n\x05value\x18\x02 \x01(\x0b\x32\'.weaviate.v1.QueryProfile.SearchProfile:\x02\x38\x01\"\x1c\n\x0bRerankReply\x12\r\n\x05score\x18\x01 \x01(\x01\"\xe9\x02\n\rGroupByResult\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x14\n\x0cmin_distance\x18\x02 \x01(\x02\x12\x14\n\x0cmax_distance\x18\x03 \x01(\x02\x12\x19\n\x11number_of_objects\x18\x04 \x01(\x03\x12*\n\x07objects\x18\x05 \x03(\x0b\x32\x19.weaviate.v1.SearchResult\x12-\n\x06rerank\x18\x06 \x01(\x0b\x32\x18.weaviate.v1.RerankReplyH\x00\x88\x01\x01\x12\x39\n\ngenerative\x18\x07 \x01(\x0b\x32\x1c.weaviate.v1.GenerativeReplyB\x02\x18\x01H\x01\x88\x01\x01\x12=\n\x11generative_result\x18\x08 \x01(\x0b\x32\x1d.weaviate.v1.GenerativeResultH\x02\x88\x01\x01\x42\t\n\x07_rerankB\r\n\x0b_generativeB\x14\n\x12_generative_result\"\xb7\x01\n\x0cSearchResult\x12\x31\n\nproperties\x18\x01 \x01(\x0b\x32\x1d.weaviate.v1.PropertiesResult\x12-\n\x08metadata\x18\x02 \x01(\x0b\x32\x1b.weaviate.v1.MetadataResult\x12\x36\n\ngenerative\x18\x03 \x01(\x0b\x32\x1d.weaviate.v1.GenerativeResultH\x00\x88\x01\x01\x42\r\n\x0b_generative\"\xf7\x04\n\x0eMetadataResult\x12\n\n\x02id\x18\x01 \x01(\t\x12\x12\n\x06vector\x18\x02 \x03(\x02\x42\x02\x18\x01\x12\x1a\n\x12\x63reation_time_unix\x18\x03 \x01(\x03\x12\"\n\x1a\x63reation_time_unix_present\x18\x04 \x01(\x08\x12\x1d\n\x15last_update_time_unix\x18\x05 \x01(\x03\x12%\n\x1dlast_update_time_unix_present\x18\x06 \x01(\x08\x12\x10\n\x08\x64istance\x18\x07 \x01(\x02\x12\x18\n\x10\x64istance_present\x18\x08 \x01(\x08\x12\x11\n\tcertainty\x18\t \x01(\x02\x12\x19\n\x11\x63\x65rtainty_present\x18\n \x01(\x08\x12\r\n\x05score\x18\x0b \x01(\x02\x12\x15\n\rscore_present\x18\x0c \x01(\x08\x12\x15\n\rexplain_score\x18\r \x01(\t\x12\x1d\n\x15\x65xplain_score_present\x18\x0e \x01(\x08\x12\x1a\n\ris_consistent\x18\x0f \x01(\x08H\x00\x88\x01\x01\x12\x16\n\ngenerative\x18\x10 \x01(\tB\x02\x18\x01\x12\x1e\n\x12generative_present\x18\x11 \x01(\x08\x42\x02\x18\x01\x12\x1d\n\x15is_consistent_present\x18\x12 \x01(\x08\x12\x14\n\x0cvector_bytes\x18\x13 \x01(\x0c\x12\x13\n\x0bid_as_bytes\x18\x14 \x01(\x0c\x12\x14\n\x0crerank_score\x18\x15 \x01(\x01\x12\x1c\n\x14rerank_score_present\x18\x16 \x01(\x08\x12%\n\x07vectors\x18\x17 \x03(\x0b\x32\x14.weaviate.v1.VectorsB\x10\n\x0e_is_consistent\"\x88\x02\n\x10PropertiesResult\x12\x33\n\tref_props\x18\x02 \x03(\x0b\x32 .weaviate.v1.RefPropertiesResult\x12\x19\n\x11target_collection\x18\x03 \x01(\t\x12-\n\x08metadata\x18\x04 \x01(\x0b\x32\x1b.weaviate.v1.MetadataResult\x12.\n\rnon_ref_props\x18\x0b \x01(\x0b\x32\x17.weaviate.v1.Properties\x12\x1b\n\x13ref_props_requested\x18\x0c \x01(\x08J\x04\x08\x01\x10\x02J\x04\x08\x05\x10\x06J\x04\x08\x06\x10\x07J\x04\x08\x07\x10\x08J\x04\x08\x08\x10\tJ\x04\x08\t\x10\nJ\x04\x08\n\x10\x0b\"[\n\x13RefPropertiesResult\x12\x31\n\nproperties\x18\x01 \x03(\x0b\x32\x1d.weaviate.v1.PropertiesResult\x12\x11\n\tprop_name\x18\x02 \x01(\tBs\n#io.weaviate.client.grpc.protocol.v1B\x16WeaviateProtoSearchGetZ4github.com/weaviate/weaviate/grpc/generated;protocolb\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -32,6 +32,10 @@ _globals['_SEARCHREQUEST'].fields_by_name['uses_125_api']._serialized_options = b'\030\001' _globals['_SEARCHREPLY'].fields_by_name['generative_grouped_result']._loaded_options = None _globals['_SEARCHREPLY'].fields_by_name['generative_grouped_result']._serialized_options = b'\030\001' + _globals['_QUERYPROFILE_SEARCHPROFILE_DETAILSENTRY']._loaded_options = None + _globals['_QUERYPROFILE_SEARCHPROFILE_DETAILSENTRY']._serialized_options = b'8\001' + _globals['_QUERYPROFILE_SHARDPROFILE_SEARCHESENTRY']._loaded_options = None + _globals['_QUERYPROFILE_SHARDPROFILE_SEARCHESENTRY']._serialized_options = b'8\001' _globals['_GROUPBYRESULT'].fields_by_name['generative']._loaded_options = None _globals['_GROUPBYRESULT'].fields_by_name['generative']._serialized_options = b'\030\001' _globals['_METADATARESULT'].fields_by_name['vector']._loaded_options = None @@ -47,27 +51,37 @@ _globals['_SORTBY']._serialized_start=1632 _globals['_SORTBY']._serialized_end=1673 _globals['_METADATAREQUEST']._serialized_start=1676 - _globals['_METADATAREQUEST']._serialized_end=1897 - _globals['_PROPERTIESREQUEST']._serialized_start=1900 - _globals['_PROPERTIESREQUEST']._serialized_end=2109 - _globals['_OBJECTPROPERTIESREQUEST']._serialized_start=2112 - _globals['_OBJECTPROPERTIESREQUEST']._serialized_end=2251 - _globals['_REFPROPERTIESREQUEST']._serialized_start=2254 - _globals['_REFPROPERTIESREQUEST']._serialized_end=2431 - _globals['_RERANK']._serialized_start=2433 - _globals['_RERANK']._serialized_end=2489 - _globals['_SEARCHREPLY']._serialized_start=2492 - _globals['_SEARCHREPLY']._serialized_end=2794 - _globals['_RERANKREPLY']._serialized_start=2796 - _globals['_RERANKREPLY']._serialized_end=2824 - _globals['_GROUPBYRESULT']._serialized_start=2827 - _globals['_GROUPBYRESULT']._serialized_end=3188 - _globals['_SEARCHRESULT']._serialized_start=3191 - _globals['_SEARCHRESULT']._serialized_end=3374 - _globals['_METADATARESULT']._serialized_start=3377 - _globals['_METADATARESULT']._serialized_end=4008 - _globals['_PROPERTIESRESULT']._serialized_start=4011 - _globals['_PROPERTIESRESULT']._serialized_end=4275 - _globals['_REFPROPERTIESRESULT']._serialized_start=4277 - _globals['_REFPROPERTIESRESULT']._serialized_end=4368 + _globals['_METADATAREQUEST']._serialized_end=1920 + _globals['_PROPERTIESREQUEST']._serialized_start=1923 + _globals['_PROPERTIESREQUEST']._serialized_end=2132 + _globals['_OBJECTPROPERTIESREQUEST']._serialized_start=2135 + _globals['_OBJECTPROPERTIESREQUEST']._serialized_end=2274 + _globals['_REFPROPERTIESREQUEST']._serialized_start=2277 + _globals['_REFPROPERTIESREQUEST']._serialized_end=2454 + _globals['_RERANK']._serialized_start=2456 + _globals['_RERANK']._serialized_end=2512 + _globals['_SEARCHREPLY']._serialized_start=2515 + _globals['_SEARCHREPLY']._serialized_end=2890 + _globals['_QUERYPROFILE']._serialized_start=2893 + _globals['_QUERYPROFILE']._serialized_end=3307 + _globals['_QUERYPROFILE_SEARCHPROFILE']._serialized_start=2966 + _globals['_QUERYPROFILE_SEARCHPROFILE']._serialized_end=3100 + _globals['_QUERYPROFILE_SEARCHPROFILE_DETAILSENTRY']._serialized_start=3054 + _globals['_QUERYPROFILE_SEARCHPROFILE_DETAILSENTRY']._serialized_end=3100 + _globals['_QUERYPROFILE_SHARDPROFILE']._serialized_start=3103 + _globals['_QUERYPROFILE_SHARDPROFILE']._serialized_end=3307 + _globals['_QUERYPROFILE_SHARDPROFILE_SEARCHESENTRY']._serialized_start=3219 + _globals['_QUERYPROFILE_SHARDPROFILE_SEARCHESENTRY']._serialized_end=3307 + _globals['_RERANKREPLY']._serialized_start=3309 + _globals['_RERANKREPLY']._serialized_end=3337 + _globals['_GROUPBYRESULT']._serialized_start=3340 + _globals['_GROUPBYRESULT']._serialized_end=3701 + _globals['_SEARCHRESULT']._serialized_start=3704 + _globals['_SEARCHRESULT']._serialized_end=3887 + _globals['_METADATARESULT']._serialized_start=3890 + _globals['_METADATARESULT']._serialized_end=4521 + _globals['_PROPERTIESRESULT']._serialized_start=4524 + _globals['_PROPERTIESRESULT']._serialized_end=4788 + _globals['_REFPROPERTIESRESULT']._serialized_start=4790 + _globals['_REFPROPERTIESRESULT']._serialized_end=4881 # @@protoc_insertion_point(module_scope) diff --git a/weaviate/proto/v1/v5261/v1/search_get_pb2.pyi b/weaviate/proto/v1/v5261/v1/search_get_pb2.pyi index 4a28237d9..783ca3564 100644 --- a/weaviate/proto/v1/v5261/v1/search_get_pb2.pyi +++ b/weaviate/proto/v1/v5261/v1/search_get_pb2.pyi @@ -88,7 +88,7 @@ class SortBy(_message.Message): def __init__(self, ascending: bool = ..., path: _Optional[_Iterable[str]] = ...) -> None: ... class MetadataRequest(_message.Message): - __slots__ = ("uuid", "vector", "creation_time_unix", "last_update_time_unix", "distance", "certainty", "score", "explain_score", "is_consistent", "vectors") + __slots__ = ("uuid", "vector", "creation_time_unix", "last_update_time_unix", "distance", "certainty", "score", "explain_score", "is_consistent", "vectors", "query_profile") UUID_FIELD_NUMBER: _ClassVar[int] VECTOR_FIELD_NUMBER: _ClassVar[int] CREATION_TIME_UNIX_FIELD_NUMBER: _ClassVar[int] @@ -99,6 +99,7 @@ class MetadataRequest(_message.Message): EXPLAIN_SCORE_FIELD_NUMBER: _ClassVar[int] IS_CONSISTENT_FIELD_NUMBER: _ClassVar[int] VECTORS_FIELD_NUMBER: _ClassVar[int] + QUERY_PROFILE_FIELD_NUMBER: _ClassVar[int] uuid: bool vector: bool creation_time_unix: bool @@ -109,7 +110,8 @@ class MetadataRequest(_message.Message): explain_score: bool is_consistent: bool vectors: _containers.RepeatedScalarFieldContainer[str] - def __init__(self, uuid: bool = ..., vector: bool = ..., creation_time_unix: bool = ..., last_update_time_unix: bool = ..., distance: bool = ..., certainty: bool = ..., score: bool = ..., explain_score: bool = ..., is_consistent: bool = ..., vectors: _Optional[_Iterable[str]] = ...) -> None: ... + query_profile: bool + def __init__(self, uuid: bool = ..., vector: bool = ..., creation_time_unix: bool = ..., last_update_time_unix: bool = ..., distance: bool = ..., certainty: bool = ..., score: bool = ..., explain_score: bool = ..., is_consistent: bool = ..., vectors: _Optional[_Iterable[str]] = ..., query_profile: bool = ...) -> None: ... class PropertiesRequest(_message.Message): __slots__ = ("non_ref_properties", "ref_properties", "object_properties", "return_all_nonref_properties") @@ -154,18 +156,54 @@ class Rerank(_message.Message): def __init__(self, property: _Optional[str] = ..., query: _Optional[str] = ...) -> None: ... class SearchReply(_message.Message): - __slots__ = ("took", "results", "generative_grouped_result", "group_by_results", "generative_grouped_results") + __slots__ = ("took", "results", "generative_grouped_result", "group_by_results", "generative_grouped_results", "query_profile") TOOK_FIELD_NUMBER: _ClassVar[int] RESULTS_FIELD_NUMBER: _ClassVar[int] GENERATIVE_GROUPED_RESULT_FIELD_NUMBER: _ClassVar[int] GROUP_BY_RESULTS_FIELD_NUMBER: _ClassVar[int] GENERATIVE_GROUPED_RESULTS_FIELD_NUMBER: _ClassVar[int] + QUERY_PROFILE_FIELD_NUMBER: _ClassVar[int] took: float results: _containers.RepeatedCompositeFieldContainer[SearchResult] generative_grouped_result: str group_by_results: _containers.RepeatedCompositeFieldContainer[GroupByResult] generative_grouped_results: _generative_pb2.GenerativeResult - def __init__(self, took: _Optional[float] = ..., results: _Optional[_Iterable[_Union[SearchResult, _Mapping]]] = ..., generative_grouped_result: _Optional[str] = ..., group_by_results: _Optional[_Iterable[_Union[GroupByResult, _Mapping]]] = ..., generative_grouped_results: _Optional[_Union[_generative_pb2.GenerativeResult, _Mapping]] = ...) -> None: ... + query_profile: QueryProfile + def __init__(self, took: _Optional[float] = ..., results: _Optional[_Iterable[_Union[SearchResult, _Mapping]]] = ..., generative_grouped_result: _Optional[str] = ..., group_by_results: _Optional[_Iterable[_Union[GroupByResult, _Mapping]]] = ..., generative_grouped_results: _Optional[_Union[_generative_pb2.GenerativeResult, _Mapping]] = ..., query_profile: _Optional[_Union[QueryProfile, _Mapping]] = ...) -> None: ... + +class QueryProfile(_message.Message): + __slots__ = ("shards",) + class SearchProfile(_message.Message): + __slots__ = ("details",) + class DetailsEntry(_message.Message): + __slots__ = ("key", "value") + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: str + value: str + def __init__(self, key: _Optional[str] = ..., value: _Optional[str] = ...) -> None: ... + DETAILS_FIELD_NUMBER: _ClassVar[int] + details: _containers.ScalarMap[str, str] + def __init__(self, details: _Optional[_Mapping[str, str]] = ...) -> None: ... + class ShardProfile(_message.Message): + __slots__ = ("name", "node", "searches") + class SearchesEntry(_message.Message): + __slots__ = ("key", "value") + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: str + value: QueryProfile.SearchProfile + def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[QueryProfile.SearchProfile, _Mapping]] = ...) -> None: ... + NAME_FIELD_NUMBER: _ClassVar[int] + NODE_FIELD_NUMBER: _ClassVar[int] + SEARCHES_FIELD_NUMBER: _ClassVar[int] + name: str + node: str + searches: _containers.MessageMap[str, QueryProfile.SearchProfile] + def __init__(self, name: _Optional[str] = ..., node: _Optional[str] = ..., searches: _Optional[_Mapping[str, QueryProfile.SearchProfile]] = ...) -> None: ... + SHARDS_FIELD_NUMBER: _ClassVar[int] + shards: _containers.RepeatedCompositeFieldContainer[QueryProfile.ShardProfile] + def __init__(self, shards: _Optional[_Iterable[_Union[QueryProfile.ShardProfile, _Mapping]]] = ...) -> None: ... class RerankReply(_message.Message): __slots__ = ("score",) diff --git a/weaviate/proto/v1/v6300/v1/search_get_pb2.py b/weaviate/proto/v1/v6300/v1/search_get_pb2.py index 88dfb5992..1b38e4fb6 100644 --- a/weaviate/proto/v1/v6300/v1/search_get_pb2.py +++ b/weaviate/proto/v1/v6300/v1/search_get_pb2.py @@ -28,7 +28,7 @@ from weaviate.proto.v1.v6300.v1 import properties_pb2 as v1_dot_properties__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x13v1/search_get.proto\x12\x0bweaviate.v1\x1a\rv1/base.proto\x1a\x14v1/base_search.proto\x1a\x13v1/generative.proto\x1a\x13v1/properties.proto\"\x9c\x0b\n\rSearchRequest\x12\x12\n\ncollection\x18\x01 \x01(\t\x12\x0e\n\x06tenant\x18\n \x01(\t\x12=\n\x11\x63onsistency_level\x18\x0b \x01(\x0e\x32\x1d.weaviate.v1.ConsistencyLevelH\x00\x88\x01\x01\x12\x37\n\nproperties\x18\x14 \x01(\x0b\x32\x1e.weaviate.v1.PropertiesRequestH\x01\x88\x01\x01\x12\x33\n\x08metadata\x18\x15 \x01(\x0b\x32\x1c.weaviate.v1.MetadataRequestH\x02\x88\x01\x01\x12+\n\x08group_by\x18\x16 \x01(\x0b\x32\x14.weaviate.v1.GroupByH\x03\x88\x01\x01\x12\r\n\x05limit\x18\x1e \x01(\r\x12\x0e\n\x06offset\x18\x1f \x01(\r\x12\x0f\n\x07\x61utocut\x18 \x01(\r\x12\r\n\x05\x61\x66ter\x18! \x01(\t\x12$\n\x07sort_by\x18\" \x03(\x0b\x32\x13.weaviate.v1.SortBy\x12*\n\x07\x66ilters\x18( \x01(\x0b\x32\x14.weaviate.v1.FiltersH\x04\x88\x01\x01\x12/\n\rhybrid_search\x18) \x01(\x0b\x32\x13.weaviate.v1.HybridH\x05\x88\x01\x01\x12+\n\x0b\x62m25_search\x18* \x01(\x0b\x32\x11.weaviate.v1.BM25H\x06\x88\x01\x01\x12\x31\n\x0bnear_vector\x18+ \x01(\x0b\x32\x17.weaviate.v1.NearVectorH\x07\x88\x01\x01\x12\x31\n\x0bnear_object\x18, \x01(\x0b\x32\x17.weaviate.v1.NearObjectH\x08\x88\x01\x01\x12\x33\n\tnear_text\x18- \x01(\x0b\x32\x1b.weaviate.v1.NearTextSearchH\t\x88\x01\x01\x12\x35\n\nnear_image\x18. \x01(\x0b\x32\x1c.weaviate.v1.NearImageSearchH\n\x88\x01\x01\x12\x35\n\nnear_audio\x18/ \x01(\x0b\x32\x1c.weaviate.v1.NearAudioSearchH\x0b\x88\x01\x01\x12\x35\n\nnear_video\x18\x30 \x01(\x0b\x32\x1c.weaviate.v1.NearVideoSearchH\x0c\x88\x01\x01\x12\x35\n\nnear_depth\x18\x31 \x01(\x0b\x32\x1c.weaviate.v1.NearDepthSearchH\r\x88\x01\x01\x12\x39\n\x0cnear_thermal\x18\x32 \x01(\x0b\x32\x1e.weaviate.v1.NearThermalSearchH\x0e\x88\x01\x01\x12\x31\n\x08near_imu\x18\x33 \x01(\x0b\x32\x1a.weaviate.v1.NearIMUSearchH\x0f\x88\x01\x01\x12\x36\n\ngenerative\x18< \x01(\x0b\x32\x1d.weaviate.v1.GenerativeSearchH\x10\x88\x01\x01\x12(\n\x06rerank\x18= \x01(\x0b\x32\x13.weaviate.v1.RerankH\x11\x88\x01\x01\x12\x18\n\x0cuses_123_api\x18\x64 \x01(\x08\x42\x02\x18\x01\x12\x18\n\x0cuses_125_api\x18\x65 \x01(\x08\x42\x02\x18\x01\x12\x14\n\x0cuses_127_api\x18\x66 \x01(\x08\x42\x14\n\x12_consistency_levelB\r\n\x0b_propertiesB\x0b\n\t_metadataB\x0b\n\t_group_byB\n\n\x08_filtersB\x10\n\x0e_hybrid_searchB\x0e\n\x0c_bm25_searchB\x0e\n\x0c_near_vectorB\x0e\n\x0c_near_objectB\x0c\n\n_near_textB\r\n\x0b_near_imageB\r\n\x0b_near_audioB\r\n\x0b_near_videoB\r\n\x0b_near_depthB\x0f\n\r_near_thermalB\x0b\n\t_near_imuB\r\n\x0b_generativeB\t\n\x07_rerank\"L\n\x07GroupBy\x12\x0c\n\x04path\x18\x01 \x03(\t\x12\x18\n\x10number_of_groups\x18\x02 \x01(\x05\x12\x19\n\x11objects_per_group\x18\x03 \x01(\x05\")\n\x06SortBy\x12\x11\n\tascending\x18\x01 \x01(\x08\x12\x0c\n\x04path\x18\x02 \x03(\t\"\xdd\x01\n\x0fMetadataRequest\x12\x0c\n\x04uuid\x18\x01 \x01(\x08\x12\x0e\n\x06vector\x18\x02 \x01(\x08\x12\x1a\n\x12\x63reation_time_unix\x18\x03 \x01(\x08\x12\x1d\n\x15last_update_time_unix\x18\x04 \x01(\x08\x12\x10\n\x08\x64istance\x18\x05 \x01(\x08\x12\x11\n\tcertainty\x18\x06 \x01(\x08\x12\r\n\x05score\x18\x07 \x01(\x08\x12\x15\n\rexplain_score\x18\x08 \x01(\x08\x12\x15\n\ris_consistent\x18\t \x01(\x08\x12\x0f\n\x07vectors\x18\n \x03(\t\"\xd1\x01\n\x11PropertiesRequest\x12\x1a\n\x12non_ref_properties\x18\x01 \x03(\t\x12\x39\n\x0eref_properties\x18\x02 \x03(\x0b\x32!.weaviate.v1.RefPropertiesRequest\x12?\n\x11object_properties\x18\x03 \x03(\x0b\x32$.weaviate.v1.ObjectPropertiesRequest\x12$\n\x1creturn_all_nonref_properties\x18\x0b \x01(\x08\"\x8b\x01\n\x17ObjectPropertiesRequest\x12\x11\n\tprop_name\x18\x01 \x01(\t\x12\x1c\n\x14primitive_properties\x18\x02 \x03(\t\x12?\n\x11object_properties\x18\x03 \x03(\x0b\x32$.weaviate.v1.ObjectPropertiesRequest\"\xb1\x01\n\x14RefPropertiesRequest\x12\x1a\n\x12reference_property\x18\x01 \x01(\t\x12\x32\n\nproperties\x18\x02 \x01(\x0b\x32\x1e.weaviate.v1.PropertiesRequest\x12.\n\x08metadata\x18\x03 \x01(\x0b\x32\x1c.weaviate.v1.MetadataRequest\x12\x19\n\x11target_collection\x18\x04 \x01(\t\"8\n\x06Rerank\x12\x10\n\x08property\x18\x01 \x01(\t\x12\x12\n\x05query\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x08\n\x06_query\"\xae\x02\n\x0bSearchReply\x12\x0c\n\x04took\x18\x01 \x01(\x02\x12*\n\x07results\x18\x02 \x03(\x0b\x32\x19.weaviate.v1.SearchResult\x12*\n\x19generative_grouped_result\x18\x03 \x01(\tB\x02\x18\x01H\x00\x88\x01\x01\x12\x34\n\x10group_by_results\x18\x04 \x03(\x0b\x32\x1a.weaviate.v1.GroupByResult\x12\x46\n\x1agenerative_grouped_results\x18\x05 \x01(\x0b\x32\x1d.weaviate.v1.GenerativeResultH\x01\x88\x01\x01\x42\x1c\n\x1a_generative_grouped_resultB\x1d\n\x1b_generative_grouped_results\"\x1c\n\x0bRerankReply\x12\r\n\x05score\x18\x01 \x01(\x01\"\xe9\x02\n\rGroupByResult\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x14\n\x0cmin_distance\x18\x02 \x01(\x02\x12\x14\n\x0cmax_distance\x18\x03 \x01(\x02\x12\x19\n\x11number_of_objects\x18\x04 \x01(\x03\x12*\n\x07objects\x18\x05 \x03(\x0b\x32\x19.weaviate.v1.SearchResult\x12-\n\x06rerank\x18\x06 \x01(\x0b\x32\x18.weaviate.v1.RerankReplyH\x00\x88\x01\x01\x12\x39\n\ngenerative\x18\x07 \x01(\x0b\x32\x1c.weaviate.v1.GenerativeReplyB\x02\x18\x01H\x01\x88\x01\x01\x12=\n\x11generative_result\x18\x08 \x01(\x0b\x32\x1d.weaviate.v1.GenerativeResultH\x02\x88\x01\x01\x42\t\n\x07_rerankB\r\n\x0b_generativeB\x14\n\x12_generative_result\"\xb7\x01\n\x0cSearchResult\x12\x31\n\nproperties\x18\x01 \x01(\x0b\x32\x1d.weaviate.v1.PropertiesResult\x12-\n\x08metadata\x18\x02 \x01(\x0b\x32\x1b.weaviate.v1.MetadataResult\x12\x36\n\ngenerative\x18\x03 \x01(\x0b\x32\x1d.weaviate.v1.GenerativeResultH\x00\x88\x01\x01\x42\r\n\x0b_generative\"\xf7\x04\n\x0eMetadataResult\x12\n\n\x02id\x18\x01 \x01(\t\x12\x12\n\x06vector\x18\x02 \x03(\x02\x42\x02\x18\x01\x12\x1a\n\x12\x63reation_time_unix\x18\x03 \x01(\x03\x12\"\n\x1a\x63reation_time_unix_present\x18\x04 \x01(\x08\x12\x1d\n\x15last_update_time_unix\x18\x05 \x01(\x03\x12%\n\x1dlast_update_time_unix_present\x18\x06 \x01(\x08\x12\x10\n\x08\x64istance\x18\x07 \x01(\x02\x12\x18\n\x10\x64istance_present\x18\x08 \x01(\x08\x12\x11\n\tcertainty\x18\t \x01(\x02\x12\x19\n\x11\x63\x65rtainty_present\x18\n \x01(\x08\x12\r\n\x05score\x18\x0b \x01(\x02\x12\x15\n\rscore_present\x18\x0c \x01(\x08\x12\x15\n\rexplain_score\x18\r \x01(\t\x12\x1d\n\x15\x65xplain_score_present\x18\x0e \x01(\x08\x12\x1a\n\ris_consistent\x18\x0f \x01(\x08H\x00\x88\x01\x01\x12\x16\n\ngenerative\x18\x10 \x01(\tB\x02\x18\x01\x12\x1e\n\x12generative_present\x18\x11 \x01(\x08\x42\x02\x18\x01\x12\x1d\n\x15is_consistent_present\x18\x12 \x01(\x08\x12\x14\n\x0cvector_bytes\x18\x13 \x01(\x0c\x12\x13\n\x0bid_as_bytes\x18\x14 \x01(\x0c\x12\x14\n\x0crerank_score\x18\x15 \x01(\x01\x12\x1c\n\x14rerank_score_present\x18\x16 \x01(\x08\x12%\n\x07vectors\x18\x17 \x03(\x0b\x32\x14.weaviate.v1.VectorsB\x10\n\x0e_is_consistent\"\x88\x02\n\x10PropertiesResult\x12\x33\n\tref_props\x18\x02 \x03(\x0b\x32 .weaviate.v1.RefPropertiesResult\x12\x19\n\x11target_collection\x18\x03 \x01(\t\x12-\n\x08metadata\x18\x04 \x01(\x0b\x32\x1b.weaviate.v1.MetadataResult\x12.\n\rnon_ref_props\x18\x0b \x01(\x0b\x32\x17.weaviate.v1.Properties\x12\x1b\n\x13ref_props_requested\x18\x0c \x01(\x08J\x04\x08\x01\x10\x02J\x04\x08\x05\x10\x06J\x04\x08\x06\x10\x07J\x04\x08\x07\x10\x08J\x04\x08\x08\x10\tJ\x04\x08\t\x10\nJ\x04\x08\n\x10\x0b\"[\n\x13RefPropertiesResult\x12\x31\n\nproperties\x18\x01 \x03(\x0b\x32\x1d.weaviate.v1.PropertiesResult\x12\x11\n\tprop_name\x18\x02 \x01(\tBs\n#io.weaviate.client.grpc.protocol.v1B\x16WeaviateProtoSearchGetZ4github.com/weaviate/weaviate/grpc/generated;protocolb\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x13v1/search_get.proto\x12\x0bweaviate.v1\x1a\rv1/base.proto\x1a\x14v1/base_search.proto\x1a\x13v1/generative.proto\x1a\x13v1/properties.proto\"\x9c\x0b\n\rSearchRequest\x12\x12\n\ncollection\x18\x01 \x01(\t\x12\x0e\n\x06tenant\x18\n \x01(\t\x12=\n\x11\x63onsistency_level\x18\x0b \x01(\x0e\x32\x1d.weaviate.v1.ConsistencyLevelH\x00\x88\x01\x01\x12\x37\n\nproperties\x18\x14 \x01(\x0b\x32\x1e.weaviate.v1.PropertiesRequestH\x01\x88\x01\x01\x12\x33\n\x08metadata\x18\x15 \x01(\x0b\x32\x1c.weaviate.v1.MetadataRequestH\x02\x88\x01\x01\x12+\n\x08group_by\x18\x16 \x01(\x0b\x32\x14.weaviate.v1.GroupByH\x03\x88\x01\x01\x12\r\n\x05limit\x18\x1e \x01(\r\x12\x0e\n\x06offset\x18\x1f \x01(\r\x12\x0f\n\x07\x61utocut\x18 \x01(\r\x12\r\n\x05\x61\x66ter\x18! \x01(\t\x12$\n\x07sort_by\x18\" \x03(\x0b\x32\x13.weaviate.v1.SortBy\x12*\n\x07\x66ilters\x18( \x01(\x0b\x32\x14.weaviate.v1.FiltersH\x04\x88\x01\x01\x12/\n\rhybrid_search\x18) \x01(\x0b\x32\x13.weaviate.v1.HybridH\x05\x88\x01\x01\x12+\n\x0b\x62m25_search\x18* \x01(\x0b\x32\x11.weaviate.v1.BM25H\x06\x88\x01\x01\x12\x31\n\x0bnear_vector\x18+ \x01(\x0b\x32\x17.weaviate.v1.NearVectorH\x07\x88\x01\x01\x12\x31\n\x0bnear_object\x18, \x01(\x0b\x32\x17.weaviate.v1.NearObjectH\x08\x88\x01\x01\x12\x33\n\tnear_text\x18- \x01(\x0b\x32\x1b.weaviate.v1.NearTextSearchH\t\x88\x01\x01\x12\x35\n\nnear_image\x18. \x01(\x0b\x32\x1c.weaviate.v1.NearImageSearchH\n\x88\x01\x01\x12\x35\n\nnear_audio\x18/ \x01(\x0b\x32\x1c.weaviate.v1.NearAudioSearchH\x0b\x88\x01\x01\x12\x35\n\nnear_video\x18\x30 \x01(\x0b\x32\x1c.weaviate.v1.NearVideoSearchH\x0c\x88\x01\x01\x12\x35\n\nnear_depth\x18\x31 \x01(\x0b\x32\x1c.weaviate.v1.NearDepthSearchH\r\x88\x01\x01\x12\x39\n\x0cnear_thermal\x18\x32 \x01(\x0b\x32\x1e.weaviate.v1.NearThermalSearchH\x0e\x88\x01\x01\x12\x31\n\x08near_imu\x18\x33 \x01(\x0b\x32\x1a.weaviate.v1.NearIMUSearchH\x0f\x88\x01\x01\x12\x36\n\ngenerative\x18< \x01(\x0b\x32\x1d.weaviate.v1.GenerativeSearchH\x10\x88\x01\x01\x12(\n\x06rerank\x18= \x01(\x0b\x32\x13.weaviate.v1.RerankH\x11\x88\x01\x01\x12\x18\n\x0cuses_123_api\x18\x64 \x01(\x08\x42\x02\x18\x01\x12\x18\n\x0cuses_125_api\x18\x65 \x01(\x08\x42\x02\x18\x01\x12\x14\n\x0cuses_127_api\x18\x66 \x01(\x08\x42\x14\n\x12_consistency_levelB\r\n\x0b_propertiesB\x0b\n\t_metadataB\x0b\n\t_group_byB\n\n\x08_filtersB\x10\n\x0e_hybrid_searchB\x0e\n\x0c_bm25_searchB\x0e\n\x0c_near_vectorB\x0e\n\x0c_near_objectB\x0c\n\n_near_textB\r\n\x0b_near_imageB\r\n\x0b_near_audioB\r\n\x0b_near_videoB\r\n\x0b_near_depthB\x0f\n\r_near_thermalB\x0b\n\t_near_imuB\r\n\x0b_generativeB\t\n\x07_rerank\"L\n\x07GroupBy\x12\x0c\n\x04path\x18\x01 \x03(\t\x12\x18\n\x10number_of_groups\x18\x02 \x01(\x05\x12\x19\n\x11objects_per_group\x18\x03 \x01(\x05\")\n\x06SortBy\x12\x11\n\tascending\x18\x01 \x01(\x08\x12\x0c\n\x04path\x18\x02 \x03(\t\"\xf4\x01\n\x0fMetadataRequest\x12\x0c\n\x04uuid\x18\x01 \x01(\x08\x12\x0e\n\x06vector\x18\x02 \x01(\x08\x12\x1a\n\x12\x63reation_time_unix\x18\x03 \x01(\x08\x12\x1d\n\x15last_update_time_unix\x18\x04 \x01(\x08\x12\x10\n\x08\x64istance\x18\x05 \x01(\x08\x12\x11\n\tcertainty\x18\x06 \x01(\x08\x12\r\n\x05score\x18\x07 \x01(\x08\x12\x15\n\rexplain_score\x18\x08 \x01(\x08\x12\x15\n\ris_consistent\x18\t \x01(\x08\x12\x0f\n\x07vectors\x18\n \x03(\t\x12\x15\n\rquery_profile\x18\x0b \x01(\x08\"\xd1\x01\n\x11PropertiesRequest\x12\x1a\n\x12non_ref_properties\x18\x01 \x03(\t\x12\x39\n\x0eref_properties\x18\x02 \x03(\x0b\x32!.weaviate.v1.RefPropertiesRequest\x12?\n\x11object_properties\x18\x03 \x03(\x0b\x32$.weaviate.v1.ObjectPropertiesRequest\x12$\n\x1creturn_all_nonref_properties\x18\x0b \x01(\x08\"\x8b\x01\n\x17ObjectPropertiesRequest\x12\x11\n\tprop_name\x18\x01 \x01(\t\x12\x1c\n\x14primitive_properties\x18\x02 \x03(\t\x12?\n\x11object_properties\x18\x03 \x03(\x0b\x32$.weaviate.v1.ObjectPropertiesRequest\"\xb1\x01\n\x14RefPropertiesRequest\x12\x1a\n\x12reference_property\x18\x01 \x01(\t\x12\x32\n\nproperties\x18\x02 \x01(\x0b\x32\x1e.weaviate.v1.PropertiesRequest\x12.\n\x08metadata\x18\x03 \x01(\x0b\x32\x1c.weaviate.v1.MetadataRequest\x12\x19\n\x11target_collection\x18\x04 \x01(\t\"8\n\x06Rerank\x12\x10\n\x08property\x18\x01 \x01(\t\x12\x12\n\x05query\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x08\n\x06_query\"\xf7\x02\n\x0bSearchReply\x12\x0c\n\x04took\x18\x01 \x01(\x02\x12*\n\x07results\x18\x02 \x03(\x0b\x32\x19.weaviate.v1.SearchResult\x12*\n\x19generative_grouped_result\x18\x03 \x01(\tB\x02\x18\x01H\x00\x88\x01\x01\x12\x34\n\x10group_by_results\x18\x04 \x03(\x0b\x32\x1a.weaviate.v1.GroupByResult\x12\x46\n\x1agenerative_grouped_results\x18\x05 \x01(\x0b\x32\x1d.weaviate.v1.GenerativeResultH\x01\x88\x01\x01\x12\x35\n\rquery_profile\x18\x06 \x01(\x0b\x32\x19.weaviate.v1.QueryProfileH\x02\x88\x01\x01\x42\x1c\n\x1a_generative_grouped_resultB\x1d\n\x1b_generative_grouped_resultsB\x10\n\x0e_query_profile\"\x9e\x03\n\x0cQueryProfile\x12\x36\n\x06shards\x18\x01 \x03(\x0b\x32&.weaviate.v1.QueryProfile.ShardProfile\x1a\x86\x01\n\rSearchProfile\x12\x45\n\x07\x64\x65tails\x18\x01 \x03(\x0b\x32\x34.weaviate.v1.QueryProfile.SearchProfile.DetailsEntry\x1a.\n\x0c\x44\x65tailsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a\xcc\x01\n\x0cShardProfile\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0c\n\x04node\x18\x02 \x01(\t\x12\x46\n\x08searches\x18\x03 \x03(\x0b\x32\x34.weaviate.v1.QueryProfile.ShardProfile.SearchesEntry\x1aX\n\rSearchesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x36\n\x05value\x18\x02 \x01(\x0b\x32\'.weaviate.v1.QueryProfile.SearchProfile:\x02\x38\x01\"\x1c\n\x0bRerankReply\x12\r\n\x05score\x18\x01 \x01(\x01\"\xe9\x02\n\rGroupByResult\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x14\n\x0cmin_distance\x18\x02 \x01(\x02\x12\x14\n\x0cmax_distance\x18\x03 \x01(\x02\x12\x19\n\x11number_of_objects\x18\x04 \x01(\x03\x12*\n\x07objects\x18\x05 \x03(\x0b\x32\x19.weaviate.v1.SearchResult\x12-\n\x06rerank\x18\x06 \x01(\x0b\x32\x18.weaviate.v1.RerankReplyH\x00\x88\x01\x01\x12\x39\n\ngenerative\x18\x07 \x01(\x0b\x32\x1c.weaviate.v1.GenerativeReplyB\x02\x18\x01H\x01\x88\x01\x01\x12=\n\x11generative_result\x18\x08 \x01(\x0b\x32\x1d.weaviate.v1.GenerativeResultH\x02\x88\x01\x01\x42\t\n\x07_rerankB\r\n\x0b_generativeB\x14\n\x12_generative_result\"\xb7\x01\n\x0cSearchResult\x12\x31\n\nproperties\x18\x01 \x01(\x0b\x32\x1d.weaviate.v1.PropertiesResult\x12-\n\x08metadata\x18\x02 \x01(\x0b\x32\x1b.weaviate.v1.MetadataResult\x12\x36\n\ngenerative\x18\x03 \x01(\x0b\x32\x1d.weaviate.v1.GenerativeResultH\x00\x88\x01\x01\x42\r\n\x0b_generative\"\xf7\x04\n\x0eMetadataResult\x12\n\n\x02id\x18\x01 \x01(\t\x12\x12\n\x06vector\x18\x02 \x03(\x02\x42\x02\x18\x01\x12\x1a\n\x12\x63reation_time_unix\x18\x03 \x01(\x03\x12\"\n\x1a\x63reation_time_unix_present\x18\x04 \x01(\x08\x12\x1d\n\x15last_update_time_unix\x18\x05 \x01(\x03\x12%\n\x1dlast_update_time_unix_present\x18\x06 \x01(\x08\x12\x10\n\x08\x64istance\x18\x07 \x01(\x02\x12\x18\n\x10\x64istance_present\x18\x08 \x01(\x08\x12\x11\n\tcertainty\x18\t \x01(\x02\x12\x19\n\x11\x63\x65rtainty_present\x18\n \x01(\x08\x12\r\n\x05score\x18\x0b \x01(\x02\x12\x15\n\rscore_present\x18\x0c \x01(\x08\x12\x15\n\rexplain_score\x18\r \x01(\t\x12\x1d\n\x15\x65xplain_score_present\x18\x0e \x01(\x08\x12\x1a\n\ris_consistent\x18\x0f \x01(\x08H\x00\x88\x01\x01\x12\x16\n\ngenerative\x18\x10 \x01(\tB\x02\x18\x01\x12\x1e\n\x12generative_present\x18\x11 \x01(\x08\x42\x02\x18\x01\x12\x1d\n\x15is_consistent_present\x18\x12 \x01(\x08\x12\x14\n\x0cvector_bytes\x18\x13 \x01(\x0c\x12\x13\n\x0bid_as_bytes\x18\x14 \x01(\x0c\x12\x14\n\x0crerank_score\x18\x15 \x01(\x01\x12\x1c\n\x14rerank_score_present\x18\x16 \x01(\x08\x12%\n\x07vectors\x18\x17 \x03(\x0b\x32\x14.weaviate.v1.VectorsB\x10\n\x0e_is_consistent\"\x88\x02\n\x10PropertiesResult\x12\x33\n\tref_props\x18\x02 \x03(\x0b\x32 .weaviate.v1.RefPropertiesResult\x12\x19\n\x11target_collection\x18\x03 \x01(\t\x12-\n\x08metadata\x18\x04 \x01(\x0b\x32\x1b.weaviate.v1.MetadataResult\x12.\n\rnon_ref_props\x18\x0b \x01(\x0b\x32\x17.weaviate.v1.Properties\x12\x1b\n\x13ref_props_requested\x18\x0c \x01(\x08J\x04\x08\x01\x10\x02J\x04\x08\x05\x10\x06J\x04\x08\x06\x10\x07J\x04\x08\x07\x10\x08J\x04\x08\x08\x10\tJ\x04\x08\t\x10\nJ\x04\x08\n\x10\x0b\"[\n\x13RefPropertiesResult\x12\x31\n\nproperties\x18\x01 \x03(\x0b\x32\x1d.weaviate.v1.PropertiesResult\x12\x11\n\tprop_name\x18\x02 \x01(\tBs\n#io.weaviate.client.grpc.protocol.v1B\x16WeaviateProtoSearchGetZ4github.com/weaviate/weaviate/grpc/generated;protocolb\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -42,6 +42,10 @@ _globals['_SEARCHREQUEST'].fields_by_name['uses_125_api']._serialized_options = b'\030\001' _globals['_SEARCHREPLY'].fields_by_name['generative_grouped_result']._loaded_options = None _globals['_SEARCHREPLY'].fields_by_name['generative_grouped_result']._serialized_options = b'\030\001' + _globals['_QUERYPROFILE_SEARCHPROFILE_DETAILSENTRY']._loaded_options = None + _globals['_QUERYPROFILE_SEARCHPROFILE_DETAILSENTRY']._serialized_options = b'8\001' + _globals['_QUERYPROFILE_SHARDPROFILE_SEARCHESENTRY']._loaded_options = None + _globals['_QUERYPROFILE_SHARDPROFILE_SEARCHESENTRY']._serialized_options = b'8\001' _globals['_GROUPBYRESULT'].fields_by_name['generative']._loaded_options = None _globals['_GROUPBYRESULT'].fields_by_name['generative']._serialized_options = b'\030\001' _globals['_METADATARESULT'].fields_by_name['vector']._loaded_options = None @@ -57,27 +61,37 @@ _globals['_SORTBY']._serialized_start=1632 _globals['_SORTBY']._serialized_end=1673 _globals['_METADATAREQUEST']._serialized_start=1676 - _globals['_METADATAREQUEST']._serialized_end=1897 - _globals['_PROPERTIESREQUEST']._serialized_start=1900 - _globals['_PROPERTIESREQUEST']._serialized_end=2109 - _globals['_OBJECTPROPERTIESREQUEST']._serialized_start=2112 - _globals['_OBJECTPROPERTIESREQUEST']._serialized_end=2251 - _globals['_REFPROPERTIESREQUEST']._serialized_start=2254 - _globals['_REFPROPERTIESREQUEST']._serialized_end=2431 - _globals['_RERANK']._serialized_start=2433 - _globals['_RERANK']._serialized_end=2489 - _globals['_SEARCHREPLY']._serialized_start=2492 - _globals['_SEARCHREPLY']._serialized_end=2794 - _globals['_RERANKREPLY']._serialized_start=2796 - _globals['_RERANKREPLY']._serialized_end=2824 - _globals['_GROUPBYRESULT']._serialized_start=2827 - _globals['_GROUPBYRESULT']._serialized_end=3188 - _globals['_SEARCHRESULT']._serialized_start=3191 - _globals['_SEARCHRESULT']._serialized_end=3374 - _globals['_METADATARESULT']._serialized_start=3377 - _globals['_METADATARESULT']._serialized_end=4008 - _globals['_PROPERTIESRESULT']._serialized_start=4011 - _globals['_PROPERTIESRESULT']._serialized_end=4275 - _globals['_REFPROPERTIESRESULT']._serialized_start=4277 - _globals['_REFPROPERTIESRESULT']._serialized_end=4368 + _globals['_METADATAREQUEST']._serialized_end=1920 + _globals['_PROPERTIESREQUEST']._serialized_start=1923 + _globals['_PROPERTIESREQUEST']._serialized_end=2132 + _globals['_OBJECTPROPERTIESREQUEST']._serialized_start=2135 + _globals['_OBJECTPROPERTIESREQUEST']._serialized_end=2274 + _globals['_REFPROPERTIESREQUEST']._serialized_start=2277 + _globals['_REFPROPERTIESREQUEST']._serialized_end=2454 + _globals['_RERANK']._serialized_start=2456 + _globals['_RERANK']._serialized_end=2512 + _globals['_SEARCHREPLY']._serialized_start=2515 + _globals['_SEARCHREPLY']._serialized_end=2890 + _globals['_QUERYPROFILE']._serialized_start=2893 + _globals['_QUERYPROFILE']._serialized_end=3307 + _globals['_QUERYPROFILE_SEARCHPROFILE']._serialized_start=2966 + _globals['_QUERYPROFILE_SEARCHPROFILE']._serialized_end=3100 + _globals['_QUERYPROFILE_SEARCHPROFILE_DETAILSENTRY']._serialized_start=3054 + _globals['_QUERYPROFILE_SEARCHPROFILE_DETAILSENTRY']._serialized_end=3100 + _globals['_QUERYPROFILE_SHARDPROFILE']._serialized_start=3103 + _globals['_QUERYPROFILE_SHARDPROFILE']._serialized_end=3307 + _globals['_QUERYPROFILE_SHARDPROFILE_SEARCHESENTRY']._serialized_start=3219 + _globals['_QUERYPROFILE_SHARDPROFILE_SEARCHESENTRY']._serialized_end=3307 + _globals['_RERANKREPLY']._serialized_start=3309 + _globals['_RERANKREPLY']._serialized_end=3337 + _globals['_GROUPBYRESULT']._serialized_start=3340 + _globals['_GROUPBYRESULT']._serialized_end=3701 + _globals['_SEARCHRESULT']._serialized_start=3704 + _globals['_SEARCHRESULT']._serialized_end=3887 + _globals['_METADATARESULT']._serialized_start=3890 + _globals['_METADATARESULT']._serialized_end=4521 + _globals['_PROPERTIESRESULT']._serialized_start=4524 + _globals['_PROPERTIESRESULT']._serialized_end=4788 + _globals['_REFPROPERTIESRESULT']._serialized_start=4790 + _globals['_REFPROPERTIESRESULT']._serialized_end=4881 # @@protoc_insertion_point(module_scope) diff --git a/weaviate/proto/v1/v6300/v1/search_get_pb2.pyi b/weaviate/proto/v1/v6300/v1/search_get_pb2.pyi index 8dd3cb881..f631fb396 100644 --- a/weaviate/proto/v1/v6300/v1/search_get_pb2.pyi +++ b/weaviate/proto/v1/v6300/v1/search_get_pb2.pyi @@ -89,7 +89,7 @@ class SortBy(_message.Message): def __init__(self, ascending: bool = ..., path: _Optional[_Iterable[str]] = ...) -> None: ... class MetadataRequest(_message.Message): - __slots__ = ("uuid", "vector", "creation_time_unix", "last_update_time_unix", "distance", "certainty", "score", "explain_score", "is_consistent", "vectors") + __slots__ = ("uuid", "vector", "creation_time_unix", "last_update_time_unix", "distance", "certainty", "score", "explain_score", "is_consistent", "vectors", "query_profile") UUID_FIELD_NUMBER: _ClassVar[int] VECTOR_FIELD_NUMBER: _ClassVar[int] CREATION_TIME_UNIX_FIELD_NUMBER: _ClassVar[int] @@ -100,6 +100,7 @@ class MetadataRequest(_message.Message): EXPLAIN_SCORE_FIELD_NUMBER: _ClassVar[int] IS_CONSISTENT_FIELD_NUMBER: _ClassVar[int] VECTORS_FIELD_NUMBER: _ClassVar[int] + QUERY_PROFILE_FIELD_NUMBER: _ClassVar[int] uuid: bool vector: bool creation_time_unix: bool @@ -110,7 +111,8 @@ class MetadataRequest(_message.Message): explain_score: bool is_consistent: bool vectors: _containers.RepeatedScalarFieldContainer[str] - def __init__(self, uuid: bool = ..., vector: bool = ..., creation_time_unix: bool = ..., last_update_time_unix: bool = ..., distance: bool = ..., certainty: bool = ..., score: bool = ..., explain_score: bool = ..., is_consistent: bool = ..., vectors: _Optional[_Iterable[str]] = ...) -> None: ... + query_profile: bool + def __init__(self, uuid: bool = ..., vector: bool = ..., creation_time_unix: bool = ..., last_update_time_unix: bool = ..., distance: bool = ..., certainty: bool = ..., score: bool = ..., explain_score: bool = ..., is_consistent: bool = ..., vectors: _Optional[_Iterable[str]] = ..., query_profile: bool = ...) -> None: ... class PropertiesRequest(_message.Message): __slots__ = ("non_ref_properties", "ref_properties", "object_properties", "return_all_nonref_properties") @@ -155,18 +157,54 @@ class Rerank(_message.Message): def __init__(self, property: _Optional[str] = ..., query: _Optional[str] = ...) -> None: ... class SearchReply(_message.Message): - __slots__ = ("took", "results", "generative_grouped_result", "group_by_results", "generative_grouped_results") + __slots__ = ("took", "results", "generative_grouped_result", "group_by_results", "generative_grouped_results", "query_profile") TOOK_FIELD_NUMBER: _ClassVar[int] RESULTS_FIELD_NUMBER: _ClassVar[int] GENERATIVE_GROUPED_RESULT_FIELD_NUMBER: _ClassVar[int] GROUP_BY_RESULTS_FIELD_NUMBER: _ClassVar[int] GENERATIVE_GROUPED_RESULTS_FIELD_NUMBER: _ClassVar[int] + QUERY_PROFILE_FIELD_NUMBER: _ClassVar[int] took: float results: _containers.RepeatedCompositeFieldContainer[SearchResult] generative_grouped_result: str group_by_results: _containers.RepeatedCompositeFieldContainer[GroupByResult] generative_grouped_results: _generative_pb2.GenerativeResult - def __init__(self, took: _Optional[float] = ..., results: _Optional[_Iterable[_Union[SearchResult, _Mapping]]] = ..., generative_grouped_result: _Optional[str] = ..., group_by_results: _Optional[_Iterable[_Union[GroupByResult, _Mapping]]] = ..., generative_grouped_results: _Optional[_Union[_generative_pb2.GenerativeResult, _Mapping]] = ...) -> None: ... + query_profile: QueryProfile + def __init__(self, took: _Optional[float] = ..., results: _Optional[_Iterable[_Union[SearchResult, _Mapping]]] = ..., generative_grouped_result: _Optional[str] = ..., group_by_results: _Optional[_Iterable[_Union[GroupByResult, _Mapping]]] = ..., generative_grouped_results: _Optional[_Union[_generative_pb2.GenerativeResult, _Mapping]] = ..., query_profile: _Optional[_Union[QueryProfile, _Mapping]] = ...) -> None: ... + +class QueryProfile(_message.Message): + __slots__ = ("shards",) + class SearchProfile(_message.Message): + __slots__ = ("details",) + class DetailsEntry(_message.Message): + __slots__ = ("key", "value") + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: str + value: str + def __init__(self, key: _Optional[str] = ..., value: _Optional[str] = ...) -> None: ... + DETAILS_FIELD_NUMBER: _ClassVar[int] + details: _containers.ScalarMap[str, str] + def __init__(self, details: _Optional[_Mapping[str, str]] = ...) -> None: ... + class ShardProfile(_message.Message): + __slots__ = ("name", "node", "searches") + class SearchesEntry(_message.Message): + __slots__ = ("key", "value") + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: str + value: QueryProfile.SearchProfile + def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[QueryProfile.SearchProfile, _Mapping]] = ...) -> None: ... + NAME_FIELD_NUMBER: _ClassVar[int] + NODE_FIELD_NUMBER: _ClassVar[int] + SEARCHES_FIELD_NUMBER: _ClassVar[int] + name: str + node: str + searches: _containers.MessageMap[str, QueryProfile.SearchProfile] + def __init__(self, name: _Optional[str] = ..., node: _Optional[str] = ..., searches: _Optional[_Mapping[str, QueryProfile.SearchProfile]] = ...) -> None: ... + SHARDS_FIELD_NUMBER: _ClassVar[int] + shards: _containers.RepeatedCompositeFieldContainer[QueryProfile.ShardProfile] + def __init__(self, shards: _Optional[_Iterable[_Union[QueryProfile.ShardProfile, _Mapping]]] = ...) -> None: ... class RerankReply(_message.Message): __slots__ = ("score",) From 6fd60b567010b19399e4e1accfe8261103f6c989 Mon Sep 17 00:00:00 2001 From: Ivan Despot <66276597+g-despot@users.noreply.github.com> Date: Tue, 14 Apr 2026 16:05:53 +0200 Subject: [PATCH 2/6] Reformatted --- integration/test_collection_query_profile.py | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/integration/test_collection_query_profile.py b/integration/test_collection_query_profile.py index 021c83802..2061eea7a 100644 --- a/integration/test_collection_query_profile.py +++ b/integration/test_collection_query_profile.py @@ -13,9 +13,9 @@ def assert_go_duration(value: str, label: str = "") -> None: """Assert that a string looks like a Go duration (e.g. '1.234ms', '5.458µs').""" - assert GO_DURATION_RE.fullmatch( - value - ), f"Expected Go duration format for {label!r}, got {value!r}" + assert GO_DURATION_RE.fullmatch(value), ( + f"Expected Go duration format for {label!r}, got {value!r}" + ) def assert_common_profile(profile: SearchProfileReturn) -> None: @@ -91,16 +91,12 @@ def test_near_vector_with_query_profile(collection_with_data): assert_common_profile(vector_profile) assert "vector_search_took" in vector_profile.details - assert_go_duration( - vector_profile.details["vector_search_took"], "vector_search_took" - ) + assert_go_duration(vector_profile.details["vector_search_took"], "vector_search_took") assert "hnsw_flat_search" in vector_profile.details assert vector_profile.details["hnsw_flat_search"] in ("true", "false") - layer_keys = [ - k for k in vector_profile.details if k.startswith("knn_search_layer_") - ] + layer_keys = [k for k in vector_profile.details if k.startswith("knn_search_layer_")] assert len(layer_keys) > 0, "Expected at least one knn_search_layer_*_took key" for k in layer_keys: assert_go_duration(vector_profile.details[k], k) From a1df0988a5094b1f97deaae8a0a59dbd1b139760 Mon Sep 17 00:00:00 2001 From: Ivan Despot <66276597+g-despot@users.noreply.github.com> Date: Tue, 14 Apr 2026 16:23:13 +0200 Subject: [PATCH 3/6] Skip test for lower versions --- integration/test_collection_query_profile.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/integration/test_collection_query_profile.py b/integration/test_collection_query_profile.py index 2061eea7a..92687129d 100644 --- a/integration/test_collection_query_profile.py +++ b/integration/test_collection_query_profile.py @@ -37,6 +37,8 @@ def client(): @pytest.fixture(scope="module") def collection_with_data(client: weaviate.WeaviateClient): + if client._connection._weaviate_version.is_lower_than(1, 36, 9): + pytest.skip("Query profiling requires Weaviate >= 1.36.9") name = "TestQueryProfile" client.collections.delete(name) collection = client.collections.create( From 594e8ee7c8d38f995ed4ce24e942be07a98be51d Mon Sep 17 00:00:00 2001 From: Ivan Despot <66276597+g-despot@users.noreply.github.com> Date: Wed, 15 Apr 2026 08:38:09 +0200 Subject: [PATCH 4/6] Fix tests --- integration/test_collection_query_profile.py | 87 ++++++++++---------- 1 file changed, 44 insertions(+), 43 deletions(-) diff --git a/integration/test_collection_query_profile.py b/integration/test_collection_query_profile.py index 92687129d..3b57e27b9 100644 --- a/integration/test_collection_query_profile.py +++ b/integration/test_collection_query_profile.py @@ -1,12 +1,14 @@ import re +from typing import Any import pytest -import weaviate -from weaviate.collections.classes.config import Configure, DataType, Property +from weaviate.collections import Collection +from weaviate.collections.classes.config import DataType, Property from weaviate.collections.classes.data import DataObject -from weaviate.collections.classes.grpc import MetadataQuery +from weaviate.collections.classes.grpc import GroupBy, MetadataQuery from weaviate.collections.classes.internal import SearchProfileReturn +from integration.conftest import CollectionFactory GO_DURATION_RE = re.compile(r"[\d.]+(ns|µs|ms|s|m|h)") @@ -28,26 +30,12 @@ def assert_common_profile(profile: SearchProfileReturn) -> None: assert isinstance(value, str) and value != "" -@pytest.fixture(scope="module") -def client(): - client = weaviate.connect_to_local() - yield client - client.close() - - -@pytest.fixture(scope="module") -def collection_with_data(client: weaviate.WeaviateClient): - if client._connection._weaviate_version.is_lower_than(1, 36, 9): - pytest.skip("Query profiling requires Weaviate >= 1.36.9") - name = "TestQueryProfile" - client.collections.delete(name) - collection = client.collections.create( - name=name, - vectorizer_config=Configure.Vectorizer.none(), - properties=[ - Property(name="text", data_type=DataType.TEXT), - ], +def _create_and_populate(collection_factory: CollectionFactory) -> Collection[Any, Any]: + collection = collection_factory( + properties=[Property(name="text", data_type=DataType.TEXT)], ) + if collection._connection._weaviate_version.is_lower_than(1, 36, 9): + pytest.skip("Query profiling requires Weaviate >= 1.36.9") collection.data.insert_many( [ DataObject(properties={"text": "hello world"}, vector=[1.0, 0.0, 0.0]), @@ -55,13 +43,13 @@ def collection_with_data(client: weaviate.WeaviateClient): DataObject(properties={"text": "foo bar baz"}, vector=[0.0, 0.0, 1.0]), ] ) - yield collection - client.collections.delete(name) + return collection -def test_fetch_objects_with_query_profile(collection_with_data): +def test_fetch_objects_with_query_profile(collection_factory: CollectionFactory) -> None: """Test that query profiling works with fetch_objects (object lookup).""" - result = collection_with_data.query.fetch_objects( + collection = _create_and_populate(collection_factory) + result = collection.query.fetch_objects( return_metadata=MetadataQuery(query_profile=True), ) assert len(result.objects) == 3 @@ -76,9 +64,10 @@ def test_fetch_objects_with_query_profile(collection_with_data): assert_common_profile(shard.searches["object"]) -def test_near_vector_with_query_profile(collection_with_data): +def test_near_vector_with_query_profile(collection_factory: CollectionFactory) -> None: """Test that query profiling works with near_vector search.""" - result = collection_with_data.query.near_vector( + collection = _create_and_populate(collection_factory) + result = collection.query.near_vector( near_vector=[1.0, 0.0, 0.0], return_metadata=MetadataQuery(query_profile=True, distance=True), limit=2, @@ -107,9 +96,10 @@ def test_near_vector_with_query_profile(collection_with_data): assert_go_duration(vector_profile.details["objects_took"], "objects_took") -def test_bm25_with_query_profile(collection_with_data): +def test_bm25_with_query_profile(collection_factory: CollectionFactory) -> None: """Test that query profiling works with BM25 keyword search.""" - result = collection_with_data.query.bm25( + collection = _create_and_populate(collection_factory) + result = collection.query.bm25( query="hello", return_metadata=MetadataQuery(query_profile=True, score=True), ) @@ -135,9 +125,10 @@ def test_bm25_with_query_profile(collection_with_data): assert int(keyword_profile.details["kwd_6_res_count"]) >= 0 -def test_hybrid_with_query_profile(collection_with_data): +def test_hybrid_with_query_profile(collection_factory: CollectionFactory) -> None: """Test that query profiling works with hybrid search (both vector and keyword).""" - result = collection_with_data.query.hybrid( + collection = _create_and_populate(collection_factory) + result = collection.query.hybrid( query="hello", vector=[1.0, 0.0, 0.0], return_metadata=MetadataQuery(query_profile=True), @@ -157,11 +148,12 @@ def test_hybrid_with_query_profile(collection_with_data): assert "kwd_method" in shard.searches["keyword"].details -def test_near_vector_group_by_with_query_profile(collection_with_data): - """Test that query profiling works with group_by (mirrors C# QueryProfiling_NearText_GroupBy_Returns_Profile).""" - from weaviate.collections.classes.grpc import GroupBy - - result = collection_with_data.query.near_vector( +def test_near_vector_group_by_with_query_profile( + collection_factory: CollectionFactory, +) -> None: + """Test that query profiling works with group_by.""" + collection = _create_and_populate(collection_factory) + result = collection.query.near_vector( near_vector=[1.0, 0.0, 0.0], return_metadata=MetadataQuery(query_profile=True), group_by=GroupBy(prop="text", objects_per_group=1, number_of_groups=3), @@ -174,17 +166,23 @@ def test_near_vector_group_by_with_query_profile(collection_with_data): assert_common_profile(shard.searches["vector"]) -def test_no_query_profile_when_not_requested(collection_with_data): +def test_no_query_profile_when_not_requested( + collection_factory: CollectionFactory, +) -> None: """Test that query_profile is None when not requested.""" - result = collection_with_data.query.fetch_objects( + collection = _create_and_populate(collection_factory) + result = collection.query.fetch_objects( return_metadata=MetadataQuery(distance=True), ) assert result.query_profile is None -def test_query_profile_with_metadata_list(collection_with_data): +def test_query_profile_with_metadata_list( + collection_factory: CollectionFactory, +) -> None: """Test that query profiling works when using list-style metadata.""" - result = collection_with_data.query.near_vector( + collection = _create_and_populate(collection_factory) + result = collection.query.near_vector( near_vector=[1.0, 0.0, 0.0], return_metadata=["query_profile", "distance"], limit=2, @@ -197,9 +195,12 @@ def test_query_profile_with_metadata_list(collection_with_data): assert_common_profile(shard.searches["vector"]) -def test_query_profile_details_are_strings(collection_with_data): +def test_query_profile_details_are_strings( + collection_factory: CollectionFactory, +) -> None: """Test that all detail keys and values are non-empty strings.""" - result = collection_with_data.query.near_vector( + collection = _create_and_populate(collection_factory) + result = collection.query.near_vector( near_vector=[1.0, 0.0, 0.0], return_metadata=MetadataQuery(query_profile=True), limit=1, From b83a9488ca83e93846ee1f0714e1a3b37d95ee4a Mon Sep 17 00:00:00 2001 From: Ivan Despot <66276597+g-despot@users.noreply.github.com> Date: Wed, 15 Apr 2026 09:17:27 +0200 Subject: [PATCH 5/6] Add negative assertions --- integration/test_collection_query_profile.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/integration/test_collection_query_profile.py b/integration/test_collection_query_profile.py index 3b57e27b9..0c68c9e69 100644 --- a/integration/test_collection_query_profile.py +++ b/integration/test_collection_query_profile.py @@ -61,6 +61,8 @@ def test_fetch_objects_with_query_profile(collection_factory: CollectionFactory) assert shard.node != "" assert "object" in shard.searches + assert "vector" not in shard.searches + assert "keyword" not in shard.searches assert_common_profile(shard.searches["object"]) @@ -78,6 +80,8 @@ def test_near_vector_with_query_profile(collection_factory: CollectionFactory) - shard = result.query_profile.shards[0] assert "vector" in shard.searches + assert "keyword" not in shard.searches + assert "object" not in shard.searches vector_profile = shard.searches["vector"] assert_common_profile(vector_profile) @@ -108,6 +112,8 @@ def test_bm25_with_query_profile(collection_factory: CollectionFactory) -> None: shard = result.query_profile.shards[0] assert "keyword" in shard.searches + assert "vector" not in shard.searches + assert "object" not in shard.searches keyword_profile = shard.searches["keyword"] assert_common_profile(keyword_profile) @@ -140,6 +146,7 @@ def test_hybrid_with_query_profile(collection_factory: CollectionFactory) -> Non shard = result.query_profile.shards[0] assert "vector" in shard.searches, "Hybrid should produce a 'vector' profile" assert "keyword" in shard.searches, "Hybrid should produce a 'keyword' profile" + assert "object" not in shard.searches assert_common_profile(shard.searches["vector"]) assert "vector_search_took" in shard.searches["vector"].details From 906b35b62441aeca41e7628d6ddeace5dbc30bb2 Mon Sep 17 00:00:00 2001 From: Ivan Despot <66276597+g-despot@users.noreply.github.com> Date: Thu, 16 Apr 2026 16:00:25 +0200 Subject: [PATCH 6/6] Add full_with_profile --- integration/test_collection_query_profile.py | 30 ++++++++++++++++++++ weaviate/collections/classes/grpc.py | 24 +++++++++++++++- 2 files changed, 53 insertions(+), 1 deletion(-) diff --git a/integration/test_collection_query_profile.py b/integration/test_collection_query_profile.py index 0c68c9e69..da93b90f5 100644 --- a/integration/test_collection_query_profile.py +++ b/integration/test_collection_query_profile.py @@ -173,6 +173,36 @@ def test_near_vector_group_by_with_query_profile( assert_common_profile(shard.searches["vector"]) +def test_full_with_profile(collection_factory: CollectionFactory) -> None: + """Test that MetadataQuery.full_with_profile() returns profiling and all other metadata.""" + collection = _create_and_populate(collection_factory) + result = collection.query.near_vector( + near_vector=[1.0, 0.0, 0.0], + return_metadata=MetadataQuery.full_with_profile(), + limit=1, + ) + assert len(result.objects) == 1 + obj = result.objects[0] + assert obj.metadata.distance is not None + assert obj.metadata.creation_time is not None + assert obj.metadata.last_update_time is not None + assert obj.metadata.score is not None + assert obj.metadata.explain_score is not None + + assert result.query_profile is not None + assert len(result.query_profile.shards) > 0 + assert_common_profile(result.query_profile.shards[0].searches["vector"]) + + +def test_full_excludes_query_profile(collection_factory: CollectionFactory) -> None: + """Test that MetadataQuery.full() does not include query profiling.""" + collection = _create_and_populate(collection_factory) + result = collection.query.fetch_objects( + return_metadata=MetadataQuery.full(), + ) + assert result.query_profile is None + + def test_no_query_profile_when_not_requested( collection_factory: CollectionFactory, ) -> None: diff --git a/weaviate/collections/classes/grpc.py b/weaviate/collections/classes/grpc.py index 20ece3bc0..bdcc53dd9 100644 --- a/weaviate/collections/classes/grpc.py +++ b/weaviate/collections/classes/grpc.py @@ -94,7 +94,28 @@ class MetadataQuery(_WeaviateInput): @classmethod def full(cls) -> "MetadataQuery": - """Return a MetadataQuery with all fields set to True.""" + """Return a MetadataQuery with all fields set to True. + + NOTE: `query_profile` is excluded because it adds performance overhead. + Use `full_with_profile()` to include it. + """ + return cls( + creation_time=True, + last_update_time=True, + distance=True, + certainty=True, + score=True, + explain_score=True, + is_consistent=True, + ) + + @classmethod + def full_with_profile(cls) -> "MetadataQuery": + """Return a MetadataQuery with all fields set to True, including query profiling. + + Query profiling adds per-shard execution timing breakdowns to the response + but has performance overhead. Requires Weaviate >= 1.36.9. + """ return cls( creation_time=True, last_update_time=True, @@ -103,6 +124,7 @@ def full(cls) -> "MetadataQuery": score=True, explain_score=True, is_consistent=True, + query_profile=True, )