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"}'