vecs icon indicating copy to clipboard operation
vecs copied to clipboard

Feature Request: Async Client

Open olirice opened this issue 2 years ago • 7 comments

Feature Request: Async Client

Most of what vecs manages involves interacting with a database over a network. Sqlalchemy and psycopg2 both support async operations but vecs does not. Creating an async client would unblock the python interpreter while waiting on those external systems and would enable much better performance in async environments e.g. an async enabled web server like FastAPI. That use case will be particularly important if vecs users deploy the Collection.query or Collection.upsert methods behind an API

Potential Usage:

vx = await vecs.create_async_client(DB_CONNECTION)
...
docs = await vx.create_collection(name="docs", dimension=3)
...
# same for `upsert`, `create_index`, and `query`

olirice avatar Jun 01 '23 18:06 olirice

We use unasync in the supabase python libraries (except for supabase-py) to expose both a sync and async interface - but unasync generates synchronous code from an asynchronous codebase, while we already have a synchronous codebase here

I'm a maintainer for the supabase python community libraries, I'd be happy to help here 😄

anand2312 avatar Jun 08 '23 10:06 anand2312

hi @anand2312

thanks! I'll take a look at unasync, thats an interesting approach in the short term I think we'll want to make sure the overall API is stable before introducing the async interface but that could be a good option

olirice avatar Jun 09 '23 20:06 olirice

@olirice Do you have any plans to add this feature?

zimmy-upstage avatar Nov 15 '24 07:11 zimmy-upstage

it hasn't been scheduled for development yet. we'd be open to outside contributions if you're interested in working towards a PR?

olirice avatar Dec 02 '24 19:12 olirice