mirror of
https://github.com/ruvnet/RuVector.git
synced 2026-05-23 12:55:26 +00:00
## Summary Complete RuVector-Postgres v2 implementation with all major features: - 148 pg_extern SQL functions across 27 source files - Docker Hub publication ready with multi-arch builds (PG14-17) - Full pgvector drop-in compatibility verified ## New Features - **Hybrid Search** (7 functions): BM25 + vector fusion with RRF/linear/learned - **Multi-Tenancy** (17 functions): Tenant isolation, RLS, quotas - **Self-Healing** (23 functions): Problem detection, remediation strategies - **Integrity Control** (4 functions): Mincut gating, contracted graphs - **Self-Learning** (10 functions): Query trajectory tracking, optimization ## Infrastructure - GitHub Actions workflow for Docker Hub publication - CI workflow for testing PG14-17 - Integration test Docker setup with baseline testing - Benchmark suite for e2e, hybrid, integrity testing ## Files Changed - New: src/healing/, src/hybrid/, src/integrity/, src/tenancy/, src/workers/ - New: sql/ruvector--2.0.0.sql (SQL migration) - New: docker/publish-dockerhub.sh, docker-compose.integration.yml - Updated: Dockerfile for PG17 default, multi-arch builds - Updated: HNSW/IVFFlat index access methods with full pgrx AM support 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
137 lines
3.7 KiB
YAML
137 lines
3.7 KiB
YAML
version: '3.8'
|
|
|
|
# Docker Compose configuration for RuVector Postgres Integration Tests
|
|
# Provides isolated environment for comprehensive test execution
|
|
|
|
services:
|
|
# PostgreSQL with RuVector extension
|
|
postgres:
|
|
build:
|
|
context: ../../..
|
|
dockerfile: crates/ruvector-postgres/docker/Dockerfile
|
|
args:
|
|
PG_VERSION: ${PG_VERSION:-17}
|
|
container_name: ruvector-postgres-integration
|
|
ports:
|
|
- "${POSTGRES_PORT:-5433}:5432"
|
|
environment:
|
|
POSTGRES_USER: ruvector
|
|
POSTGRES_PASSWORD: ruvector
|
|
POSTGRES_DB: ruvector_test
|
|
POSTGRES_INITDB_ARGS: "--data-checksums"
|
|
# Performance tuning for tests
|
|
POSTGRES_SHARED_BUFFERS: 256MB
|
|
POSTGRES_EFFECTIVE_CACHE_SIZE: 512MB
|
|
POSTGRES_WORK_MEM: 64MB
|
|
POSTGRES_MAINTENANCE_WORK_MEM: 128MB
|
|
volumes:
|
|
- postgres_data:/var/lib/postgresql/data
|
|
- ./init-integration.sql:/docker-entrypoint-initdb.d/01-init.sql
|
|
- ./test_sql:/test_sql:ro
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "pg_isready -U ruvector -d ruvector_test"]
|
|
interval: 5s
|
|
timeout: 5s
|
|
retries: 10
|
|
start_period: 30s
|
|
networks:
|
|
- integration-network
|
|
deploy:
|
|
resources:
|
|
limits:
|
|
memory: 2G
|
|
reservations:
|
|
memory: 512M
|
|
|
|
# Test runner container with Rust toolchain
|
|
test-runner:
|
|
build:
|
|
context: ../../..
|
|
dockerfile: crates/ruvector-postgres/docker/Dockerfile.integration-test
|
|
container_name: ruvector-integration-runner
|
|
depends_on:
|
|
postgres:
|
|
condition: service_healthy
|
|
environment:
|
|
DATABASE_URL: postgres://ruvector:ruvector@postgres:5432/ruvector_test
|
|
RUST_LOG: ${RUST_LOG:-info}
|
|
RUST_BACKTRACE: 1
|
|
TEST_TIMEOUT: ${TEST_TIMEOUT:-600}
|
|
volumes:
|
|
- ../../..:/app:ro
|
|
- cargo_cache:/usr/local/cargo/registry
|
|
- target_cache:/app/target
|
|
- test_results:/app/test-results
|
|
networks:
|
|
- integration-network
|
|
working_dir: /app/crates/ruvector-postgres
|
|
command: >
|
|
cargo test
|
|
--release
|
|
--features pg${PG_VERSION:-17},graph-complete
|
|
--test integration
|
|
--
|
|
--test-threads=1
|
|
--nocapture
|
|
|
|
# Performance benchmark runner
|
|
benchmark:
|
|
build:
|
|
context: ../../..
|
|
dockerfile: crates/ruvector-postgres/docker/Dockerfile.integration-test
|
|
container_name: ruvector-benchmark-runner
|
|
depends_on:
|
|
postgres:
|
|
condition: service_healthy
|
|
environment:
|
|
DATABASE_URL: postgres://ruvector:ruvector@postgres:5432/ruvector_test
|
|
RUST_LOG: info
|
|
RUST_BACKTRACE: 1
|
|
volumes:
|
|
- ../../..:/app:ro
|
|
- cargo_cache:/usr/local/cargo/registry
|
|
- target_cache:/app/target
|
|
- test_results:/app/test-results
|
|
networks:
|
|
- integration-network
|
|
working_dir: /app/crates/ruvector-postgres
|
|
command: >
|
|
cargo bench
|
|
--features pg${PG_VERSION:-17},graph-complete
|
|
profiles:
|
|
- benchmark
|
|
|
|
# pgvector reference container for compatibility testing
|
|
pgvector-reference:
|
|
image: pgvector/pgvector:pg${PG_VERSION:-17}
|
|
container_name: pgvector-reference
|
|
ports:
|
|
- "5434:5432"
|
|
environment:
|
|
POSTGRES_USER: pgvector
|
|
POSTGRES_PASSWORD: pgvector
|
|
POSTGRES_DB: pgvector_test
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "pg_isready -U pgvector -d pgvector_test"]
|
|
interval: 5s
|
|
timeout: 5s
|
|
retries: 5
|
|
networks:
|
|
- integration-network
|
|
profiles:
|
|
- compatibility
|
|
|
|
volumes:
|
|
postgres_data:
|
|
name: ruvector-integration-pg-data
|
|
cargo_cache:
|
|
name: ruvector-integration-cargo-cache
|
|
target_cache:
|
|
name: ruvector-integration-target-cache
|
|
test_results:
|
|
name: ruvector-integration-results
|
|
|
|
networks:
|
|
integration-network:
|
|
driver: bridge
|
|
name: ruvector-integration-network
|