Skip to content

Commit b84ea4d

Browse files
authored
Merge pull request #37 from pinecone-io/sc-11654/fulness-metric
Add fullness_metric
2 parents 58b2de0 + 5e62898 commit b84ea4d

File tree

8 files changed

+777
-1999
lines changed

8 files changed

+777
-1999
lines changed

pinecone/core/client/model/describe_index_stats_response.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,7 @@ def openapi_types():
9494
return {
9595
'namespaces': ({str: (NamespaceSummary,)},), # noqa: E501
9696
'dimension': (int,), # noqa: E501
97+
'index_fullness': (float,), # noqa: E501
9798
}
9899

99100
@cached_property
@@ -104,6 +105,7 @@ def discriminator():
104105
attribute_map = {
105106
'namespaces': 'namespaces', # noqa: E501
106107
'dimension': 'dimension', # noqa: E501
108+
'index_fullness': 'indexFullness', # noqa: E501
107109
}
108110

109111
read_only_vars = {
@@ -149,6 +151,7 @@ def _from_openapi_data(cls, *args, **kwargs): # noqa: E501
149151
_visited_composed_classes = (Animal,)
150152
namespaces ({str: (NamespaceSummary,)}): A mapping for each namespace in the index from namespace name to a summary of its contents.. [optional] # noqa: E501
151153
dimension (int): The dimension of the indexed vectors.. [optional] # noqa: E501
154+
index_fullness (float): The storage fullness of the index.. [optional] # noqa: E501
152155
"""
153156

154157
_check_type = kwargs.pop('_check_type', True)
@@ -232,6 +235,7 @@ def __init__(self, *args, **kwargs): # noqa: E501
232235
_visited_composed_classes = (Animal,)
233236
namespaces ({str: (NamespaceSummary,)}): A mapping for each namespace in the index from namespace name to a summary of its contents.. [optional] # noqa: E501
234237
dimension (int): The dimension of the indexed vectors.. [optional] # noqa: E501
238+
index_fullness (float): The storage fullness of the index.. [optional] # noqa: E501
235239
"""
236240

237241
_check_type = kwargs.pop('_check_type', True)

pinecone/core/grpc/index_grpc.py

Lines changed: 18 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -6,27 +6,24 @@
66
from functools import wraps
77
from typing import NamedTuple, Optional, Dict, Iterable
88

9-
import grpc
109
import certifi
10+
import grpc
1111
from google.protobuf import json_format
12-
12+
from grpc._channel import _InactiveRpcError, _MultiThreadedRendezvous
13+
from pinecone import FetchResponse, QueryResponse, ScoredVector, SingleQueryResults, UpsertResponse, \
14+
DescribeIndexStatsResponse
1315
from pinecone.config import Config
14-
from pinecone.core.grpc.protos.vector_column_service_pb2_grpc import VectorColumnServiceStub
15-
from pinecone.core.grpc.protos import vector_service_pb2, vector_column_service_pb2
16-
from pinecone.core.utils import _generate_request_id, dict_to_proto_struct, fix_tuple_length, proto_struct_to_dict
17-
from pinecone.core.utils.sentry import sentry_decorator as sentry
18-
from pinecone.core.grpc.protos.vector_service_pb2_grpc import VectorServiceStub
19-
from pinecone.core.grpc.retry import RetryOnRpcErrorClientInterceptor, RetryConfig
20-
from pinecone.core.utils.constants import MAX_MSG_SIZE, REQUEST_ID, CLIENT_VERSION
16+
from pinecone.core.client.model.namespace_summary import NamespaceSummary
17+
from pinecone.core.client.model.vector import Vector as _Vector
2118
from pinecone.core.grpc.protos.vector_service_pb2 import Vector as GRPCVector, QueryVector as GRPCQueryVector, \
2219
UpsertRequest, DeleteRequest, \
2320
QueryRequest, FetchRequest, DescribeIndexStatsRequest
24-
from pinecone.core.client.model.vector import Vector as _Vector
25-
from pinecone.core.client.model.namespace_summary import NamespaceSummary
26-
from pinecone import FetchResponse, QueryResponse, ScoredVector, SingleQueryResults, UpsertResponse, \
27-
DescribeIndexStatsResponse
28-
from grpc._channel import _InactiveRpcError, _MultiThreadedRendezvous
29-
from pinecone.exceptions import PineconeProtocolError, PineconeException
21+
from pinecone.core.grpc.protos.vector_service_pb2_grpc import VectorServiceStub
22+
from pinecone.core.grpc.retry import RetryOnRpcErrorClientInterceptor, RetryConfig
23+
from pinecone.core.utils import _generate_request_id, dict_to_proto_struct, fix_tuple_length
24+
from pinecone.core.utils.constants import MAX_MSG_SIZE, REQUEST_ID, CLIENT_VERSION
25+
from pinecone.core.utils.sentry import sentry_decorator as sentry
26+
from pinecone.exceptions import PineconeException
3027

3128
__all__ = ["GRPCIndex", "GRPCVector", "GRPCQueryVector"]
3229

@@ -198,13 +195,15 @@ def parse_upsert_response(response):
198195

199196

200197
def parse_stats_response(response: dict):
198+
fullness = response.get('index_fullness', 0.0)
201199
dimension = response.get('dimension', 0)
202200
summaries = response.get('namespaces', {})
203201
namespace_summaries = {}
204202
for key in summaries:
205203
vc = summaries[key].get('vectorCount', 0)
206204
namespace_summaries[key] = NamespaceSummary(vector_count=vc)
207-
return DescribeIndexStatsResponse(namespaces=namespace_summaries, dimension=dimension, _check_type=False)
205+
return DescribeIndexStatsResponse(namespaces=namespace_summaries, dimension=dimension, index_fullness=fullness,
206+
_check_type=False)
208207

209208

210209
class PineconeGrpcFuture:
@@ -232,12 +231,13 @@ def result(self, timeout=None):
232231
except _MultiThreadedRendezvous as e:
233232
raise PineconeException(e._state.debug_error_string) from e
234233

235-
def exception(self,timeout=None):
234+
def exception(self, timeout=None):
236235
return self._delegate.exception(timeout=timeout)
237236

238-
def traceback(self,timeout=None):
237+
def traceback(self, timeout=None):
239238
return self._delegate.traceback(timeout=timeout)
240239

240+
241241
class GRPCIndex(GRPCIndexBase):
242242

243243
@property
@@ -311,40 +311,3 @@ def describe_index_stats(self, **kwargs):
311311
response = self._wrap_grpc_call(self.stub.DescribeIndexStats, request, timeout=timeout)
312312
json_response = json_format.MessageToDict(response)
313313
return parse_stats_response(json_response)
314-
315-
316-
class CIndex(GRPCIndex):
317-
318-
@property
319-
def stub_class(self):
320-
return VectorColumnServiceStub
321-
322-
def upsert(self,
323-
request: 'vector_column_service_pb2.UpsertRequest',
324-
timeout: int = None,
325-
metadata: Dict[str, str] = None):
326-
return self._wrap_grpc_call(self.stub.Upsert, request, timeout=timeout, metadata=metadata)
327-
328-
def delete(self,
329-
request: 'vector_column_service_pb2.DeleteRequest',
330-
timeout: int = None,
331-
metadata: Dict[str, str] = None):
332-
return self._wrap_grpc_call(self.stub.Delete, request, timeout=timeout, metadata=metadata)
333-
334-
def fetch(self,
335-
request: 'vector_column_service_pb2.FetchRequest',
336-
timeout: int = None,
337-
metadata: Dict[str, str] = None):
338-
return self._wrap_grpc_call(self.stub.Fetch, request, timeout=timeout, metadata=metadata)
339-
340-
def query(self,
341-
request: 'vector_column_service_pb2.QueryRequest',
342-
timeout: int = None,
343-
metadata: Dict[str, str] = None):
344-
return self._wrap_grpc_call(self.stub.Query, request, timeout=timeout, metadata=metadata)
345-
346-
def describe_index_stats(self,
347-
request: 'vector_column_service_pb2.DescribeIndexStatsRequest',
348-
timeout: int = None,
349-
metadata: Dict[str, str] = None):
350-
return self._wrap_grpc_call(self.stub.DescribeIndexStats, request, timeout=timeout, metadata=metadata)

0 commit comments

Comments
 (0)