Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

change stats to info #14

Merged
merged 5 commits into from
Jan 30, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 7 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -121,12 +121,14 @@ res = index.delete("id1")
index.reset()
```

### Index Stats
### Index Info
```python
stats = index.stats()
# stats.vector_count: total number of vectors in the index
# stats.pending_vector_count: total number of vectors waiting to be indexed
# stats.index_size: total size of the index on disk in bytes
info = index.info()
# info.vector_count: total number of vectors in the index
# info.pending_vector_count: total number of vectors waiting to be indexed
# info.index_size: total size of the index on disk in bytes
# info.dimension: how many dimensions the index has
# info.similarity_function: similarity function chosen for the index
```

# Contributing
Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[tool.poetry]
name = "upstash-vector"
version = "0.1.6"
version = "0.2.0"
description = "Serverless Vector SDK from Upstash"
license = "MIT"
authors = ["Upstash <support@upstash.com>"]
Expand Down
37 changes: 37 additions & 0 deletions tests/core/test_info.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
import pytest

from tests import assert_eventually, assert_eventually_async
from upstash_vector import Index, AsyncIndex


def test_info(index: Index):
info = index.info()

assert info.vector_count == 0
assert info.pending_vector_count == 0
assert info.dimension == 2
assert info.similarity_function == "COSINE"

index.upsert([{"id": "foo", "vector": [0, 1]}])

def assertion():
assert index.info().vector_count == 1

assert_eventually(assertion)


@pytest.mark.asyncio
async def test_info_async(async_index: AsyncIndex):
info = await async_index.info()

assert info.vector_count == 0
assert info.pending_vector_count == 0
assert info.dimension == 2
assert info.similarity_function == "COSINE"

await async_index.upsert([{"id": "foo", "vector": [0, 1]}])

async def assertion():
assert (await async_index.info()).vector_count == 1

await assert_eventually_async(assertion)
33 changes: 0 additions & 33 deletions tests/core/test_stats.py

This file was deleted.

2 changes: 1 addition & 1 deletion upstash_vector/__init__.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
__version__ = "0.1.6"
__version__ = "0.2.0"

from upstash_vector.client import Index, AsyncIndex
from upstash_vector.types import Vector
Expand Down
24 changes: 14 additions & 10 deletions upstash_vector/core/index_operations.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
from upstash_vector.types import (
DeleteResult,
RangeResult,
StatsResult,
InfoResult,
SupportsToList,
Vector,
FetchResult,
Expand All @@ -21,7 +21,7 @@
RESET_PATH = "/reset"
RANGE_PATH = "/range"
FETCH_PATH = "/fetch"
STATS_PATH = "/stats"
INFO_PATH = "/info"


class IndexOperations:
Expand Down Expand Up @@ -213,16 +213,18 @@ def fetch(
for vector in self._execute_request(payload=payload, path=FETCH_PATH)
]

def stats(self) -> StatsResult:
def info(self) -> InfoResult:
"""
Returns the index statistics, including:
Returns the index info, including:

* total number of vectors
* total number of vectors waiting to be indexed
* total size of the index on disk in bytes
* dimension count for the index
* similarity function selected for the index
"""
return StatsResult._from_json(
self._execute_request(payload=None, path=STATS_PATH)
return InfoResult._from_json(
self._execute_request(payload=None, path=INFO_PATH)
)


Expand Down Expand Up @@ -420,14 +422,16 @@ async def fetch(
)
]

async def stats(self) -> StatsResult:
async def info(self) -> InfoResult:
"""
Returns the index statistics asynchronously, including:
Returns the index info asynchronously, including:

* total number of vectors
* total number of vectors waiting to be indexed
* total size of the index on disk in bytes
mdumandag marked this conversation as resolved.
Show resolved Hide resolved
* dimension count for the index
* similarity function selected for the index
"""
return StatsResult._from_json(
await self._execute_request_async(payload=None, path=STATS_PATH)
return InfoResult._from_json(
await self._execute_request_async(payload=None, path=INFO_PATH)
)
9 changes: 7 additions & 2 deletions upstash_vector/types.py
Original file line number Diff line number Diff line change
Expand Up @@ -69,15 +69,20 @@ def _from_json(cls, obj: dict) -> "RangeResult":


@dataclass
class StatsResult:
class InfoResult:
vector_count: int
pending_vector_count: int
index_size: int
dimension: int
similarity_function: str

@classmethod
def _from_json(cls, obj: dict) -> "StatsResult":
def _from_json(cls, obj: dict) -> "InfoResult":
print(obj)
return cls(
vector_count=obj["vectorCount"],
pending_vector_count=obj["pendingVectorCount"],
index_size=obj["indexSize"],
dimension=obj["dimension"],
similarity_function=obj["similarityFunction"],
)
Loading