vectorapi
vectorapi copied to clipboard
pgvector + embeddings API
VectorAPI
VectorAPI is a service for managing vector collections and performing vector similarity queries using a PostgreSQL vector database with the pgvector extension. Utilizes fastapi for the HTTP API, pgvector and SQLAlchemy for the vector database side and relies on pytorch for computing embeddings.
Getting started
Existing database
To get started with the VectorAPI, run:
docker run -p 8889:8889 -e DB_URL=postgresql+asyncpg://<user>:<password>@<host>:<port>/<dbname> grafana/vectorapi
New database
You can bring up a postgres database (ankane/pgvector) and vectorapi instance using docker compose:
docker compose up --build
To populate the local DB instance with test data from HuggingFace (see Grafana public datasets) run:
make populate-db
Making requests
See API docs for more details.
Embedding text
curl -X POST "http://localhost:8889/v1/embeddings" \
-H "Content-Type: application/json" \
-d '{"input":"I enjoy taking long walks along the beach.", "model":"BAAI/bge-small-en-v1.5"}'
Adding a vector to a collection
- Create a collection
curl -X POST "http://localhost:8889/v1/collections/create" \
-H "Content-Type: application/json" \
-d '{"collection_name":"my_collection", "dimension":384}'
- Add a vector to the collection
curl -X POST "http://localhost:8889/v1/collections/my_collection/upsert" \
-H "Content-Type: application/json" \
-d '{"id":"abc1", "metadata":{"key":"value"}, "input":"I enjoy taking long walks along the beach."}'
Vector search
curl -X POST "http://localhost:8889/v1/collections/my_collection/search" \
-H "Content-Type: application/json" \
-d '{"input":"beach walks"}'