# TimescaleDB + VectorChord + pgvector [![Build Status](https://gitea.killinger.fr/maxime.killinger/postgres-ts-vectors/actions/workflows/docker-build.yml/badge.svg)](https://gitea.killinger.fr/maxime.killinger/postgres-ts-vectors/actions) Docker image combining **PostgreSQL** with three powerful extensions: - **[TimescaleDB](https://www.timescale.com/)** - Time-series database extension - **[VectorChord](https://vectorchord.ai/)** - High-performance vector similarity search - **[pgvector](https://github.com/pgvector/pgvector)** - Open-source vector similarity search ## Supported PostgreSQL Versions | Tag | PostgreSQL | TimescaleDB | VectorChord | pgvector | |-----|------------|-------------|-------------|----------| | `pg15` | 15 | 2.24.0 | 1.0.0 | 0.8.1 | | `pg16` | 16 | 2.24.0 | 1.0.0 | 0.8.1 | | `pg17` | 17 | 2.24.0 | 1.0.0 | 0.8.1 | | `pg18`, `latest` | 18 | 2.24.0 | 1.0.0 | 0.8.1 | ## Quick Start ```bash docker run -d \ --name my-postgres \ -e POSTGRES_PASSWORD=mysecretpassword \ -p 5432:5432 \ gitea.killinger.fr/maxime.killinger/postgres-ts-vectors:latest ``` All extensions are **automatically created** on first startup. ## Environment Variables | Variable | Description | Default | |----------|-------------|---------| | `POSTGRES_PASSWORD` | PostgreSQL password (required) | - | | `POSTGRES_USER` | PostgreSQL user | `postgres` | | `POSTGRES_DB` | Default database | `postgres` | ## Extensions Usage ### TimescaleDB ```sql -- Create a hypertable CREATE TABLE conditions ( time TIMESTAMPTZ NOT NULL, device_id INTEGER, temperature DOUBLE PRECISION ); SELECT create_hypertable('conditions', 'time'); ``` ### VectorChord / pgvector ```sql -- Create a table with vector embeddings CREATE TABLE documents ( id SERIAL PRIMARY KEY, content TEXT, embedding vector(1536) ); -- Create an index for fast similarity search CREATE INDEX ON documents USING vchordrq (embedding vector_l2_ops); -- Query similar documents SELECT * FROM documents ORDER BY embedding <-> '[0.1, 0.2, ...]' LIMIT 10; ``` ## Building Locally ```bash # Build for PG18 docker build --build-arg PG_VERSION=18 -t my-image:pg18 . # Build for PG16 docker build --build-arg PG_VERSION=16 -t my-image:pg16 . ``` ## License This project is licensed under the Apache 2.0 License. - TimescaleDB: [Timescale License](https://github.com/timescale/timescaledb/blob/main/LICENSE) - VectorChord: [Apache 2.0](https://github.com/tensorchord/VectorChord/blob/main/LICENSE) - pgvector: [PostgreSQL License](https://github.com/pgvector/pgvector/blob/master/LICENSE)