mirror of
https://github.com/vectorize-io/hindsight.git
synced 2026-09-14 19:31:49 +08:00
0b6b5261a2
Managed PostgreSQL distributions install the pg_search functions (score, boolean, match) under a schema of their choosing — pgsearch rather than paradedb on the distribution in #3757 — so the hardcoded paradedb. qualification made the pg_search backend unusable there without a custom image or wrapper functions. Adds HINDSIGHT_API_TEXT_SEARCH_EXTENSION_PG_SEARCH_FUNCTION_SCHEMA (default paradedb, validated as a plain PG identifier since it is interpolated into raw SQL) and threads it through both builders that qualify those calls: the memory-recall BM25 arm and the knowledge-pages arm. Index creation needs no change — USING bm25(...) resolves the access method globally. The pdb tokenizer pseudo-types stay fixed; they come from ParadeDB's own install DDL and are independent of the extension's target schema. Fixes #3757.
98 lines
3.5 KiB
YAML
98 lines
3.5 KiB
YAML
name: hindsight
|
|
# Docker Compose file for Hindsight with PostgreSQL and ParadeDB pg_search.
|
|
#
|
|
# pg_search is the only BM25 backend supported by Hindsight that works with
|
|
# Citus, so this is the recommended setup for horizontally scaled deployments.
|
|
#
|
|
# Usage:
|
|
# docker compose -f docker/docker-compose/pg_search/docker-compose.yaml up -d
|
|
#
|
|
# Required environment variables:
|
|
# - HINDSIGHT_DB_PASSWORD: Password for the PostgreSQL user
|
|
# - Configure LLM provider variables as needed (see the hindsight service)
|
|
#
|
|
# Optional environment variables with defaults:
|
|
# - HINDSIGHT_VERSION: Hindsight application version (default: latest)
|
|
# - HINDSIGHT_DB_USER: PostgreSQL user (default: hindsight_user)
|
|
# - HINDSIGHT_DB_NAME: PostgreSQL database name (default: hindsight_db)
|
|
# - HINDSIGHT_API_TEXT_SEARCH_EXTENSION_PG_SEARCH_TOKENIZER: ParadeDB pg_search
|
|
# tokenizer for new BM25 indexes (default: empty, uses ParadeDB default)
|
|
|
|
services:
|
|
db:
|
|
# Use ParadeDB image which bundles pgvector + pg_search
|
|
build:
|
|
context: .
|
|
dockerfile: Dockerfile
|
|
container_name: hindsight-db
|
|
restart: always
|
|
ports:
|
|
- "5437:5432"
|
|
environment:
|
|
POSTGRES_USER: ${HINDSIGHT_DB_USER:-hindsight_user}
|
|
POSTGRES_PASSWORD: ${HINDSIGHT_DB_PASSWORD:-hindsight_password}
|
|
POSTGRES_DB: ${HINDSIGHT_DB_NAME:-hindsight_db}
|
|
volumes:
|
|
- pg_data:/var/lib/postgresql/data
|
|
networks:
|
|
- hindsight-net
|
|
|
|
pg-search-init:
|
|
build:
|
|
context: .
|
|
dockerfile: Dockerfile
|
|
depends_on:
|
|
- db
|
|
environment:
|
|
- PGPASSWORD=${HINDSIGHT_DB_PASSWORD:-hindsight_password}
|
|
command: >
|
|
bash -c "
|
|
echo 'Waiting for PostgreSQL to be ready...';
|
|
until pg_isready -h hindsight-db -p 5432 -U hindsight_user; do
|
|
echo 'PostgreSQL is unavailable - sleeping';
|
|
sleep 2;
|
|
done;
|
|
echo 'PostgreSQL is ready - creating hindsight_db database';
|
|
psql -h hindsight-db -p 5432 -U hindsight_user -c 'CREATE DATABASE hindsight_db;' 2>/dev/null || echo 'Database already exists';
|
|
echo 'Creating extensions in hindsight_db database';
|
|
psql -h hindsight-db -p 5432 -U hindsight_user -d hindsight_db -c 'CREATE EXTENSION IF NOT EXISTS vector CASCADE;';
|
|
psql -h hindsight-db -p 5432 -U hindsight_user -d hindsight_db -c 'CREATE EXTENSION IF NOT EXISTS pg_search CASCADE;';
|
|
echo 'Database and extensions created successfully';
|
|
"
|
|
restart: "no"
|
|
networks:
|
|
- hindsight-net
|
|
|
|
hindsight:
|
|
image: ghcr.io/vectorize-io/hindsight:${HINDSIGHT_VERSION:-latest}
|
|
container_name: hindsight-app
|
|
ports:
|
|
- "8888:8888"
|
|
- "9999:9999"
|
|
environment:
|
|
# LLM Configuration
|
|
HINDSIGHT_API_LLM_PROVIDER: ${HINDSIGHT_API_LLM_PROVIDER:-openai}
|
|
HINDSIGHT_API_LLM_API_KEY: ${HINDSIGHT_API_LLM_API_KEY:-}
|
|
|
|
# Database Configuration
|
|
HINDSIGHT_API_DATABASE_URL: postgresql://${HINDSIGHT_DB_USER:-hindsight_user}:${HINDSIGHT_DB_PASSWORD:-hindsight_password}@db:5432/${HINDSIGHT_DB_NAME:-hindsight_db}
|
|
|
|
# Vector and Text Search Extensions
|
|
HINDSIGHT_API_VECTOR_EXTENSION: pgvector
|
|
HINDSIGHT_API_TEXT_SEARCH_EXTENSION: pg_search
|
|
HINDSIGHT_API_TEXT_SEARCH_EXTENSION_PG_SEARCH_TOKENIZER: ${HINDSIGHT_API_TEXT_SEARCH_EXTENSION_PG_SEARCH_TOKENIZER:-}
|
|
HINDSIGHT_API_TEXT_SEARCH_EXTENSION_PG_SEARCH_FUNCTION_SCHEMA: ${HINDSIGHT_API_TEXT_SEARCH_EXTENSION_PG_SEARCH_FUNCTION_SCHEMA:-}
|
|
|
|
depends_on:
|
|
- db
|
|
networks:
|
|
- hindsight-net
|
|
|
|
|
|
networks:
|
|
hindsight-net:
|
|
driver: bridge
|
|
|
|
volumes:
|
|
pg_data:
|