id: postgresql-pgvector name: PostgreSQL + pgvector version: "16" description: PostgreSQL on an image that ships the pgvector shared library, so vector search can be enabled without rebuilding the container icon: https://serverkit.ai/imgs/template-icons/postgres.svg categories: - database - sql - ai website: https://github.com/pgvector/pgvector documentation: https://github.com/pgvector/pgvector#readme # A normal engine template. The only thing that distinguishes it from # `postgresql.yaml` is the image: `pgvector/pgvector` carries the extension's # control file, so `CREATE EXTENSION vector` succeeds here and cannot on stock # `postgres:16`. Nothing in Python knows that -- the extension declares which # image repositories provide it, and this template is discovered by matching. engine: family: Relational protocol: postgresql default_port: 5434 admin_user: postgres admin_password_var: DB_PASSWORD database_var: DB_NAME port_var: PORT bind_var: BIND_ADDRESS unit: tables client: psql data_path: /var/lib/postgresql/data extensions: true version_var: IMAGE_TAG versions: - "16" - "15" - "14" variables: - name: IMAGE_TAG type: string default: "16" hidden: true description: PostgreSQL major version; constrained to engine.versions by the installer - name: PORT type: port # 5432 is usually the host's own PostgreSQL and 5433 the plain engine template. default: "5434" hidden: false description: Host port to publish PostgreSQL on - name: BIND_ADDRESS type: string default: 127.0.0.1 hidden: true description: Address the port binds to. 127.0.0.1 keeps the engine private. - name: DB_PASSWORD type: password length: 28 description: Password for the postgres superuser - name: DB_NAME type: string default: postgres description: Initial database to create compose: services: app: image: pgvector/pgvector:pg${IMAGE_TAG} container_name: ${APP_NAME} restart: unless-stopped ports: - "${BIND_ADDRESS}:${PORT}:5432" environment: POSTGRES_PASSWORD: "${DB_PASSWORD}" POSTGRES_USER: postgres POSTGRES_DB: "${DB_NAME}" volumes: - postgresql-pgvector-data:/var/lib/postgresql/data volumes: postgresql-pgvector-data: ports: - port: "${PORT}" protocol: postgresql description: PostgreSQL wire protocol requirements: memory: 512MB storage: 5GB