supabase / vecs

Postgres/pgvector Python Client
https://supabase.github.io/vecs/latest
Apache License 2.0
219 stars 33 forks source link

Feature Request: Async Client #6

Open olirice opened 1 year ago

olirice commented 1 year ago

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`
anand2312 commented 1 year ago

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 😄

olirice commented 1 year ago

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