Serverless Vector SDK from Upstash
Project description
Upstash Vector Python SDK
The Upstash Vector python client
Installation
Install a released version from pip:
pip3 install upstash-vector
Usage
In order to use this client, head out to Upstash Console and create a vector database. There, get the URL and the TOKEN from the dashboard.
Initialize the client
from upstash_vector import Index
index = Index(url=UPSTASH_VECTOR_REST_URL, token=UPSTASH_VECTOR_REST_TOKEN)
or alternatively, initialize from the environment
from upstash_vector import Index
index = Index.from_env()
Upsert Vectors
There are couple ways to upsert vectors. Feel free to use whichever one feels the most comfortable.
index.upsert(
vectors=[
("id1", [0.1, 0.2], {"metadata_field": "metadata_value"}),
("id2", [0.3, 0.4]),
]
)
index.upsert(
vectors=[
{"id": "id3", "vector": [0.1, 0.2], "metadata": {"metadata_f": "metadata_v"}},
{"id": "id4", "vector": [0.5, 0.6]},
]
)
from upstash_vector import Vector
index.upsert(
vectors=[
Vector(id="id5", vector=[1, 2], metadata={"metadata_f": "metadata_v"}),
Vector(id="id6", vector=[6, 7]),
]
)
Query Index
query_vector = [0.6, 0.9]
top_k = 6
query_res = index.query(
vector=query_vector,
top_k=top_k,
include_vectors=True,
include_metadata=True,
)
# query_res is a list of vectors with scores:
# query_res[n].id: The identifier associated with the matching vector.
# query_res[n].score: A measure of similarity indicating how closely the vector matches the query vector.
# query_res[n].vector: The vector itself (included only if `include_vector` is set to `True`).
# query_res[n].metadata: Additional information or attributes linked to the matching vector.
Fetch Indexes
res = index.fetch(["id3", "id4"], include_vectors=True, include_metadata=True)
# res.vectors: A list containing information for each fetched vector, including `id`, `vector`, and `metadata`.
or, for singular fetch:
res = index.fetch("id1", include_vectors=True, include_metadata=True)
Range over Vectors - Scan the Index
# Scans the index 3 by 3, until all the indexes are traversed.
res = index.range(cursor="", limit=3, include_vectors=True, include_metadata=True)
while res.next_cursor != "":
res = index.range(cursor=res.next_cursor, limit=3, include_vectors=True, include_metadata=True)
# res.nex_cursor: A cursor indicating the position to start the next range query. If "", there are no more results.
# res.vectors: A list containing information for each vector, including `id`, `vector`, and `metadata`.
Delete Vectors
res = index.delete(["id1", "id2"])
# res.deleted: An integer indicating how many vectors were deleted with the command.
or, for singular deletion:
res = index.delete("id1")
Reset the Index
# This will remove all the vectors that were upserted and index will be reset.
index.reset()
Index Stats
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
Contributing
Preparing the environment
This project uses Poetry for packaging and dependency management. Make sure you are able to create the poetry shell with relevant dependencies.
You will also need a vector database on Upstash.
poetry install
Code Formatting
poetry run ruff format .
Running tests
To run all the tests, make sure the poetry virtual environment activated with all the necessary dependencies. Set the necessary environment variables and run:
poetry run pytest
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file upstash_vector-0.1.5.tar.gz
.
File metadata
- Download URL: upstash_vector-0.1.5.tar.gz
- Upload date:
- Size: 8.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.7.1 CPython/3.8.18 Linux/6.2.0-1018-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1b055821b449f7ad226d01308a23985ce109cddf24f061b1a3ec45d28d76f93f |
|
MD5 | ad50b15bd3597ba029814c22bc643dd6 |
|
BLAKE2b-256 | 5e104b08be4e03c695edc256e7bd85828d83126bc4b8e6d0df046fb76b546185 |
Provenance
File details
Details for the file upstash_vector-0.1.5-py3-none-any.whl
.
File metadata
- Download URL: upstash_vector-0.1.5-py3-none-any.whl
- Upload date:
- Size: 9.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.7.1 CPython/3.8.18 Linux/6.2.0-1018-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6750554b3942009cb8302a6743356182f18e3c7601bc8d3cedbd70da623d47c8 |
|
MD5 | 1a5ac5a9ee7e1415d9b8d16da1bcc424 |
|
BLAKE2b-256 | 3a146fdf6d3422498466314708dc50dd9176f3a3d934d2b009183bf77a93fa17 |