https://github.com/grafana/vectorapi
pgvector + embeddings API
https://github.com/grafana/vectorapi
document-retrieval embeddings llms pgvector
Last synced: 4 months ago
JSON representation
pgvector + embeddings API
- Host: GitHub
- URL: https://github.com/grafana/vectorapi
- Owner: grafana
- License: agpl-3.0
- Archived: true
- Created: 2023-08-30T14:59:06.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2023-12-14T13:00:07.000Z (about 2 years ago)
- Last Synced: 2025-01-29T11:52:08.036Z (about 1 year ago)
- Topics: document-retrieval, embeddings, llms, pgvector
- Language: Python
- Homepage: https://grafana.github.io/vectorapi/
- Size: 559 KB
- Stars: 19
- Watchers: 115
- Forks: 4
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# VectorAPI
[](LICENSE)
[](https://drone.grafana.net/grafana/vectorapi)
[](https://hub.docker.com/r/grafana/vectorapi/tags)
[](https://grafana.github.io/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:
```sh
docker run -p 8889:8889 -e DB_URL=postgresql+asyncpg://:@:/ grafana/vectorapi
```
### New database
You can bring up a postgres database (`ankane/pgvector`) and vectorapi instance using docker compose:
```sh
docker compose up --build
```
To populate the local DB instance with test data from HuggingFace (see [Grafana public datasets](https://huggingface.co/grafanalabs)) run:
```sh
make populate-db
```
## Making requests
See [API docs](https://grafana.github.io/vectorapi/) for more details.
### Embedding text
```sh
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
1. Create a collection
```sh
curl -X POST "http://localhost:8889/v1/collections/create" \
-H "Content-Type: application/json" \
-d '{"collection_name":"my_collection", "dimension":384}'
```
2. Add a vector to the collection
```sh
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
```sh
curl -X POST "http://localhost:8889/v1/collections/my_collection/search" \
-H "Content-Type: application/json" \
-d '{"input":"beach walks"}'
```