git-subtree-dir: vendor/ruvector git-subtree-split: b64c21726f2bb37286d9ee36a7869fef60cc6900
753 lines
16 KiB
Markdown
753 lines
16 KiB
Markdown
# RuVector-Postgres Installation Guide
|
|
|
|
## Overview
|
|
|
|
This guide covers installation of RuVector-Postgres on various platforms including standard PostgreSQL, Neon, Supabase, and containerized environments.
|
|
|
|
## Prerequisites
|
|
|
|
### System Requirements
|
|
|
|
| Component | Minimum | Recommended |
|
|
|-----------|---------|-------------|
|
|
| PostgreSQL | 14+ | 16+ |
|
|
| RAM | 4 GB | 16+ GB |
|
|
| CPU | x86_64 or ARM64 | x86_64 with AVX2+ |
|
|
| Disk | 10 GB | SSD recommended |
|
|
|
|
### PostgreSQL Version Requirements
|
|
|
|
RuVector-Postgres supports PostgreSQL 14-18:
|
|
|
|
| PostgreSQL Version | Status | Notes |
|
|
|-------------------|--------|-------|
|
|
| 18 | ✓ Full support | Latest features |
|
|
| 17 | ✓ Full support | Recommended |
|
|
| 16 | ✓ Full support | Stable |
|
|
| 15 | ✓ Full support | Stable |
|
|
| 14 | ✓ Full support | Minimum version |
|
|
| 13 and below | ✗ Not supported | Use pgvector |
|
|
|
|
### Build Requirements
|
|
|
|
| Tool | Version | Purpose |
|
|
|------|---------|---------|
|
|
| Rust | 1.75+ | Compilation |
|
|
| Cargo | 1.75+ | Build system |
|
|
| pgrx | 0.12.9+ | PostgreSQL extension framework |
|
|
| PostgreSQL Dev | 14-18 | Headers and libraries |
|
|
| clang | 14+ | LLVM backend for pgrx |
|
|
| pkg-config | any | Dependency management |
|
|
| git | 2.0+ | Source checkout |
|
|
|
|
#### pgrx Version Requirements
|
|
|
|
**Critical:** RuVector-Postgres requires pgrx **0.12.9 or higher**.
|
|
|
|
```bash
|
|
# Install specific pgrx version
|
|
cargo install --locked cargo-pgrx@0.12.9
|
|
|
|
# Verify version
|
|
cargo pgrx --version
|
|
# Should output: cargo-pgrx 0.12.9 or higher
|
|
```
|
|
|
|
**Known Issues with Earlier Versions:**
|
|
|
|
- pgrx 0.11.x: Missing varlena APIs, incompatible type system
|
|
- pgrx 0.12.0-0.12.8: Potential memory alignment issues
|
|
|
|
## Installation Methods
|
|
|
|
### Method 1: Build from Source (Recommended)
|
|
|
|
#### Step 1: Install Rust
|
|
|
|
```bash
|
|
# Install Rust via rustup
|
|
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
|
|
source $HOME/.cargo/env
|
|
|
|
# Verify installation
|
|
rustc --version # Should be 1.75.0 or higher
|
|
cargo --version
|
|
```
|
|
|
|
#### Step 2: Install System Dependencies
|
|
|
|
**Ubuntu/Debian:**
|
|
|
|
```bash
|
|
# PostgreSQL and development headers
|
|
sudo apt-get update
|
|
sudo apt-get install -y \
|
|
postgresql-16 \
|
|
postgresql-server-dev-16 \
|
|
build-essential \
|
|
pkg-config \
|
|
libssl-dev \
|
|
libclang-dev \
|
|
clang \
|
|
git
|
|
|
|
# Verify pg_config
|
|
pg_config --version
|
|
```
|
|
|
|
**RHEL/CentOS/Fedora:**
|
|
|
|
```bash
|
|
# PostgreSQL and development headers
|
|
sudo dnf install -y \
|
|
postgresql16-server \
|
|
postgresql16-devel \
|
|
gcc \
|
|
gcc-c++ \
|
|
pkg-config \
|
|
openssl-devel \
|
|
clang-devel \
|
|
git
|
|
|
|
# Verify pg_config
|
|
/usr/pgsql-16/bin/pg_config --version
|
|
```
|
|
|
|
**macOS:**
|
|
|
|
```bash
|
|
# Install PostgreSQL via Homebrew
|
|
brew install postgresql@16
|
|
|
|
# Install build dependencies
|
|
brew install llvm pkg-config
|
|
|
|
# Add pg_config to PATH
|
|
export PATH="/opt/homebrew/opt/postgresql@16/bin:$PATH"
|
|
|
|
# Verify
|
|
pg_config --version
|
|
```
|
|
|
|
#### Step 3: Install pgrx
|
|
|
|
```bash
|
|
# Install pgrx CLI (locked version)
|
|
cargo install --locked cargo-pgrx@0.12.9
|
|
|
|
# Initialize pgrx for your PostgreSQL version
|
|
cargo pgrx init --pg16 $(which pg_config)
|
|
|
|
# Or for multiple versions:
|
|
cargo pgrx init \
|
|
--pg14 /usr/lib/postgresql/14/bin/pg_config \
|
|
--pg15 /usr/lib/postgresql/15/bin/pg_config \
|
|
--pg16 /usr/lib/postgresql/16/bin/pg_config
|
|
|
|
# Verify initialization
|
|
ls ~/.pgrx/
|
|
# Should show: 16.x, data-16, etc.
|
|
```
|
|
|
|
#### Step 4: Build the Extension
|
|
|
|
```bash
|
|
# Clone the repository
|
|
git clone https://github.com/ruvnet/ruvector.git
|
|
cd ruvector/crates/ruvector-postgres
|
|
|
|
# Build for your PostgreSQL version
|
|
cargo pgrx package --pg-config $(which pg_config)
|
|
|
|
# The built extension will be in:
|
|
# target/release/ruvector-pg16/usr/share/postgresql/16/extension/
|
|
# target/release/ruvector-pg16/usr/lib/postgresql/16/lib/
|
|
```
|
|
|
|
**Build Options:**
|
|
|
|
```bash
|
|
# Debug build (for development)
|
|
cargo pgrx package --pg-config $(which pg_config) --debug
|
|
|
|
# Release build with optimizations (default)
|
|
cargo pgrx package --pg-config $(which pg_config) --release
|
|
|
|
# Test before installing
|
|
cargo pgrx test pg16
|
|
```
|
|
|
|
#### Step 5: Install the Extension
|
|
|
|
```bash
|
|
# Copy files to PostgreSQL directories
|
|
sudo cp target/release/ruvector-pg16/usr/share/postgresql/16/extension/* \
|
|
/usr/share/postgresql/16/extension/
|
|
|
|
sudo cp target/release/ruvector-pg16/usr/lib/postgresql/16/lib/* \
|
|
/usr/lib/postgresql/16/lib/
|
|
|
|
# Set proper permissions
|
|
sudo chmod 644 /usr/share/postgresql/16/extension/ruvector*
|
|
sudo chmod 755 /usr/lib/postgresql/16/lib/ruvector.so
|
|
|
|
# Restart PostgreSQL
|
|
sudo systemctl restart postgresql
|
|
|
|
# Or on macOS:
|
|
brew services restart postgresql@16
|
|
```
|
|
|
|
#### Step 6: Enable in Database
|
|
|
|
```sql
|
|
-- Connect to your database
|
|
psql -U postgres -d your_database
|
|
|
|
-- Create the extension
|
|
CREATE EXTENSION ruvector;
|
|
|
|
-- Verify installation
|
|
SELECT ruvector_version();
|
|
-- Expected output: 0.1.19 (or current version)
|
|
|
|
-- Check SIMD capabilities
|
|
SELECT ruvector_simd_info();
|
|
-- Expected: AVX512, AVX2, NEON, or Scalar
|
|
```
|
|
|
|
### Method 2: Docker Deployment
|
|
|
|
#### Quick Start with Docker
|
|
|
|
```bash
|
|
# Pull the pre-built image (when available)
|
|
docker pull ruvector/postgres:16
|
|
|
|
# Run container
|
|
docker run -d \
|
|
--name ruvector-postgres \
|
|
-e POSTGRES_PASSWORD=mysecretpassword \
|
|
-e POSTGRES_DB=vectordb \
|
|
-p 5432:5432 \
|
|
-v ruvector-data:/var/lib/postgresql/data \
|
|
ruvector/postgres:16
|
|
|
|
# Connect and enable extension
|
|
docker exec -it ruvector-postgres psql -U postgres -d vectordb
|
|
```
|
|
|
|
#### Building Custom Docker Image
|
|
|
|
Create a `Dockerfile`:
|
|
|
|
```dockerfile
|
|
# Dockerfile for RuVector-Postgres
|
|
FROM postgres:16
|
|
|
|
# Install build dependencies
|
|
RUN apt-get update && apt-get install -y \
|
|
build-essential \
|
|
pkg-config \
|
|
libssl-dev \
|
|
libclang-dev \
|
|
clang \
|
|
curl \
|
|
git \
|
|
ca-certificates \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
# Install Rust
|
|
ENV RUSTUP_HOME=/usr/local/rustup \
|
|
CARGO_HOME=/usr/local/cargo \
|
|
PATH=/usr/local/cargo/bin:$PATH
|
|
RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | \
|
|
sh -s -- -y --default-toolchain 1.75.0
|
|
|
|
# Install pgrx
|
|
RUN cargo install --locked cargo-pgrx@0.12.9
|
|
RUN cargo pgrx init --pg16 /usr/lib/postgresql/16/bin/pg_config
|
|
|
|
# Copy and build extension
|
|
COPY . /app/ruvector
|
|
WORKDIR /app/ruvector/crates/ruvector-postgres
|
|
RUN cargo pgrx install --release --pg-config /usr/lib/postgresql/16/bin/pg_config
|
|
|
|
# Clean up build dependencies to reduce image size
|
|
RUN apt-get remove -y build-essential git curl && \
|
|
apt-get autoremove -y && \
|
|
rm -rf /usr/local/cargo/registry /app/ruvector
|
|
|
|
# Auto-enable extension on database creation
|
|
RUN echo "CREATE EXTENSION IF NOT EXISTS ruvector;" > /docker-entrypoint-initdb.d/init-ruvector.sql
|
|
|
|
EXPOSE 5432
|
|
```
|
|
|
|
Build and run:
|
|
|
|
```bash
|
|
# Build image
|
|
docker build -t ruvector-postgres:custom .
|
|
|
|
# Run container
|
|
docker run -d \
|
|
--name ruvector-db \
|
|
-e POSTGRES_PASSWORD=secret \
|
|
-e POSTGRES_DB=vectordb \
|
|
-p 5432:5432 \
|
|
-v $(pwd)/data:/var/lib/postgresql/data \
|
|
ruvector-postgres:custom
|
|
|
|
# Verify installation
|
|
docker exec -it ruvector-db psql -U postgres -d vectordb -c "SELECT ruvector_version();"
|
|
```
|
|
|
|
#### Docker Compose
|
|
|
|
Create `docker-compose.yml`:
|
|
|
|
```yaml
|
|
version: '3.8'
|
|
|
|
services:
|
|
postgres:
|
|
build:
|
|
context: .
|
|
dockerfile: Dockerfile
|
|
container_name: ruvector-postgres
|
|
environment:
|
|
POSTGRES_USER: postgres
|
|
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-secret}
|
|
POSTGRES_DB: vectordb
|
|
PGDATA: /var/lib/postgresql/data/pgdata
|
|
ports:
|
|
- "5432:5432"
|
|
volumes:
|
|
- postgres-data:/var/lib/postgresql/data
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "pg_isready -U postgres"]
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 5
|
|
restart: unless-stopped
|
|
|
|
volumes:
|
|
postgres-data:
|
|
driver: local
|
|
```
|
|
|
|
Deploy:
|
|
|
|
```bash
|
|
# Start services
|
|
docker-compose up -d
|
|
|
|
# View logs
|
|
docker-compose logs -f
|
|
|
|
# Stop services
|
|
docker-compose down
|
|
|
|
# Stop and remove volumes
|
|
docker-compose down -v
|
|
```
|
|
|
|
### Method 3: Cloud Platforms
|
|
|
|
#### Neon (Serverless PostgreSQL)
|
|
|
|
See [NEON_COMPATIBILITY.md](./NEON_COMPATIBILITY.md) for detailed instructions.
|
|
|
|
**Requirements:**
|
|
- Neon Scale plan or higher
|
|
- Support ticket for custom extension
|
|
|
|
**Process:**
|
|
|
|
1. **Request Installation** (Scale Plan customers):
|
|
```
|
|
Navigate to: console.neon.tech → Support
|
|
Subject: Custom Extension Request - RuVector-Postgres
|
|
Details:
|
|
- PostgreSQL version: 16 (or your version)
|
|
- Extension: ruvector-postgres v0.1.19
|
|
- Use case: Vector similarity search
|
|
```
|
|
|
|
2. **Provide Artifacts**:
|
|
- Pre-built `.so` files
|
|
- Control file (`ruvector.control`)
|
|
- SQL scripts (`ruvector--0.1.0.sql`)
|
|
|
|
3. **Enable After Approval**:
|
|
```sql
|
|
CREATE EXTENSION ruvector;
|
|
SELECT ruvector_version();
|
|
```
|
|
|
|
#### Supabase
|
|
|
|
```sql
|
|
-- Contact Supabase support for custom extension installation
|
|
-- support@supabase.io or via dashboard
|
|
|
|
-- Once installed:
|
|
CREATE EXTENSION ruvector;
|
|
|
|
-- Verify
|
|
SELECT ruvector_version();
|
|
```
|
|
|
|
#### AWS RDS
|
|
|
|
**Note:** RDS does not support custom extensions. Use EC2 with self-managed PostgreSQL.
|
|
|
|
**Alternative: RDS with pgvector, migrate later:**
|
|
|
|
```sql
|
|
-- On RDS: Use pgvector
|
|
CREATE EXTENSION vector;
|
|
|
|
-- Migrate to EC2 with RuVector when needed
|
|
-- Follow Method 1 (Build from Source)
|
|
```
|
|
|
|
## Configuration
|
|
|
|
### PostgreSQL Configuration
|
|
|
|
Add to `postgresql.conf`:
|
|
|
|
```ini
|
|
# RuVector settings
|
|
shared_preload_libraries = 'ruvector' # Optional, for background workers
|
|
|
|
# Memory settings for vector operations
|
|
maintenance_work_mem = '2GB' # For index builds
|
|
work_mem = '256MB' # For queries
|
|
shared_buffers = '4GB' # For caching
|
|
|
|
# Parallel query settings
|
|
max_parallel_workers_per_gather = 4
|
|
max_parallel_maintenance_workers = 8
|
|
max_worker_processes = 16
|
|
|
|
# Logging (optional)
|
|
log_min_messages = INFO
|
|
log_min_duration_statement = 1000 # Log slow queries (1s+)
|
|
```
|
|
|
|
Restart PostgreSQL:
|
|
|
|
```bash
|
|
sudo systemctl restart postgresql
|
|
```
|
|
|
|
### Extension Settings (GUCs)
|
|
|
|
```sql
|
|
-- Search quality (higher = better recall, slower)
|
|
SET ruvector.ef_search = 100; -- Default: 40, Range: 1-1000
|
|
|
|
-- IVFFlat probes (higher = better recall, slower)
|
|
SET ruvector.probes = 10; -- Default: 1, Range: 1-10000
|
|
|
|
-- Set globally in postgresql.conf:
|
|
ALTER SYSTEM SET ruvector.ef_search = 100;
|
|
ALTER SYSTEM SET ruvector.probes = 10;
|
|
SELECT pg_reload_conf();
|
|
```
|
|
|
|
### Per-Session Settings
|
|
|
|
```sql
|
|
-- For high-recall queries
|
|
BEGIN;
|
|
SET LOCAL ruvector.ef_search = 200;
|
|
SET LOCAL ruvector.probes = 20;
|
|
SELECT * FROM items ORDER BY embedding <-> query LIMIT 10;
|
|
COMMIT;
|
|
|
|
-- For low-latency queries
|
|
BEGIN;
|
|
SET LOCAL ruvector.ef_search = 20;
|
|
SET LOCAL ruvector.probes = 1;
|
|
SELECT * FROM items ORDER BY embedding <-> query LIMIT 10;
|
|
COMMIT;
|
|
```
|
|
|
|
## Verification
|
|
|
|
### Check Installation
|
|
|
|
```sql
|
|
-- Verify extension is installed
|
|
SELECT * FROM pg_extension WHERE extname = 'ruvector';
|
|
-- Expected: extname=ruvector, extversion=0.1.19
|
|
|
|
-- Check version
|
|
SELECT ruvector_version();
|
|
-- Expected: 0.1.19
|
|
|
|
-- Check SIMD capabilities
|
|
SELECT ruvector_simd_info();
|
|
-- Expected: AVX512, AVX2, NEON, or Scalar
|
|
```
|
|
|
|
### Basic Functionality Test
|
|
|
|
```sql
|
|
-- Create test table
|
|
CREATE TABLE test_vectors (
|
|
id SERIAL PRIMARY KEY,
|
|
embedding ruvector(3)
|
|
);
|
|
|
|
-- Insert vectors
|
|
INSERT INTO test_vectors (embedding) VALUES
|
|
('[1, 2, 3]'),
|
|
('[4, 5, 6]'),
|
|
('[7, 8, 9]');
|
|
|
|
-- Test distance calculation
|
|
SELECT id, embedding <-> '[1, 1, 1]'::ruvector AS distance
|
|
FROM test_vectors
|
|
ORDER BY distance
|
|
LIMIT 3;
|
|
|
|
-- Expected output:
|
|
-- id | distance
|
|
-- ---+-----------
|
|
-- 1 | 2.449...
|
|
-- 2 | 6.782...
|
|
-- 3 | 11.224...
|
|
|
|
-- Clean up
|
|
DROP TABLE test_vectors;
|
|
```
|
|
|
|
### Index Creation Test
|
|
|
|
```sql
|
|
-- Create table with embeddings
|
|
CREATE TABLE items (
|
|
id SERIAL PRIMARY KEY,
|
|
embedding ruvector(128)
|
|
);
|
|
|
|
-- Insert sample data (10,000 vectors)
|
|
INSERT INTO items (embedding)
|
|
SELECT ('[' || array_to_string(array_agg(random()), ',') || ']')::ruvector
|
|
FROM generate_series(1, 128) d
|
|
CROSS JOIN generate_series(1, 10000) i
|
|
GROUP BY i;
|
|
|
|
-- Create HNSW index
|
|
CREATE INDEX items_embedding_idx ON items
|
|
USING ruhnsw (embedding ruvector_l2_ops)
|
|
WITH (m = 16, ef_construction = 100);
|
|
|
|
-- Test search with index
|
|
EXPLAIN ANALYZE
|
|
SELECT * FROM items
|
|
ORDER BY embedding <-> (SELECT embedding FROM items LIMIT 1)
|
|
LIMIT 10;
|
|
|
|
-- Verify index usage in plan
|
|
-- Should show: "Index Scan using items_embedding_idx"
|
|
|
|
-- Clean up
|
|
DROP TABLE items;
|
|
```
|
|
|
|
## Troubleshooting
|
|
|
|
### Common Installation Issues
|
|
|
|
#### 1. Extension Won't Load
|
|
|
|
```bash
|
|
# Check library path
|
|
pg_config --pkglibdir
|
|
ls -la $(pg_config --pkglibdir)/ruvector*
|
|
|
|
# Expected output:
|
|
# -rwxr-xr-x ... ruvector.so
|
|
|
|
# Check extension path
|
|
pg_config --sharedir
|
|
ls -la $(pg_config --sharedir)/extension/ruvector*
|
|
|
|
# Expected output:
|
|
# -rw-r--r-- ... ruvector.control
|
|
# -rw-r--r-- ... ruvector--0.1.0.sql
|
|
|
|
# Check PostgreSQL logs
|
|
sudo tail -100 /var/log/postgresql/postgresql-16-main.log
|
|
```
|
|
|
|
**Fix:** Reinstall with correct permissions:
|
|
|
|
```bash
|
|
sudo chmod 755 $(pg_config --pkglibdir)/ruvector.so
|
|
sudo chmod 644 $(pg_config --sharedir)/extension/ruvector*
|
|
sudo systemctl restart postgresql
|
|
```
|
|
|
|
#### 2. pgrx Version Mismatch
|
|
|
|
**Error:** `error: failed to load manifest at .../Cargo.toml`
|
|
|
|
**Cause:** pgrx version < 0.12.9
|
|
|
|
**Fix:**
|
|
|
|
```bash
|
|
# Uninstall old version
|
|
cargo uninstall cargo-pgrx
|
|
|
|
# Install correct version
|
|
cargo install --locked cargo-pgrx@0.12.9
|
|
|
|
# Re-initialize
|
|
cargo pgrx init --pg16 $(which pg_config)
|
|
|
|
# Rebuild
|
|
cargo pgrx package --pg-config $(which pg_config)
|
|
```
|
|
|
|
#### 3. SIMD Not Detected
|
|
|
|
```sql
|
|
-- Check detected SIMD
|
|
SELECT ruvector_simd_info();
|
|
-- Output: Scalar (unexpected on modern CPUs)
|
|
```
|
|
|
|
**Diagnose:**
|
|
|
|
```bash
|
|
# Linux: Check CPU capabilities
|
|
cat /proc/cpuinfo | grep -E 'avx2|avx512'
|
|
|
|
# macOS: Check CPU features
|
|
sysctl -a | grep machdep.cpu.features
|
|
```
|
|
|
|
**Possible Causes:**
|
|
|
|
- Running in VM without AVX passthrough
|
|
- Old CPU without AVX2 support
|
|
- Scalar build (missing `target-cpu=native`)
|
|
|
|
**Fix:** Rebuild with native optimizations:
|
|
|
|
```bash
|
|
# Set Rust flags
|
|
export RUSTFLAGS="-C target-cpu=native"
|
|
|
|
# Rebuild
|
|
cargo pgrx package --pg-config $(which pg_config)
|
|
sudo systemctl restart postgresql
|
|
```
|
|
|
|
#### 4. Index Build Slow or OOM
|
|
|
|
**Symptoms:** Index creation times out or crashes
|
|
|
|
**Solutions:**
|
|
|
|
```sql
|
|
-- Increase maintenance memory
|
|
SET maintenance_work_mem = '8GB';
|
|
|
|
-- Increase parallelism
|
|
SET max_parallel_maintenance_workers = 16;
|
|
|
|
-- Use CONCURRENTLY for non-blocking builds
|
|
CREATE INDEX CONCURRENTLY items_embedding_idx ON items
|
|
USING ruhnsw (embedding ruvector_l2_ops);
|
|
|
|
-- Monitor progress
|
|
SELECT * FROM pg_stat_progress_create_index;
|
|
```
|
|
|
|
#### 5. Connection Issues
|
|
|
|
```bash
|
|
# Check PostgreSQL is running
|
|
sudo systemctl status postgresql
|
|
|
|
# Check listen addresses
|
|
grep listen_addresses /etc/postgresql/16/main/postgresql.conf
|
|
# Should be: listen_addresses = '*' or '0.0.0.0'
|
|
|
|
# Check pg_hba.conf for authentication
|
|
sudo cat /etc/postgresql/16/main/pg_hba.conf
|
|
# Add: host all all 0.0.0.0/0 md5
|
|
|
|
# Restart
|
|
sudo systemctl restart postgresql
|
|
```
|
|
|
|
## Upgrading
|
|
|
|
### Minor Version Upgrade (0.1.19 → 0.1.20)
|
|
|
|
```sql
|
|
-- Check current version
|
|
SELECT ruvector_version();
|
|
|
|
-- Upgrade extension
|
|
ALTER EXTENSION ruvector UPDATE TO '0.1.20';
|
|
|
|
-- Verify
|
|
SELECT ruvector_version();
|
|
```
|
|
|
|
### Major Version Upgrade
|
|
|
|
```bash
|
|
# Stop PostgreSQL
|
|
sudo systemctl stop postgresql
|
|
|
|
# Install new version
|
|
cd ruvector/crates/ruvector-postgres
|
|
git pull
|
|
cargo pgrx package --pg-config $(which pg_config)
|
|
sudo cp target/release/ruvector-pg16/usr/lib/postgresql/16/lib/* \
|
|
$(pg_config --pkglibdir)/
|
|
|
|
# Start PostgreSQL
|
|
sudo systemctl start postgresql
|
|
|
|
# Upgrade in database
|
|
psql -U postgres -d your_database -c "ALTER EXTENSION ruvector UPDATE;"
|
|
```
|
|
|
|
## Uninstallation
|
|
|
|
```sql
|
|
-- Drop all dependent objects first
|
|
DROP INDEX IF EXISTS items_embedding_idx;
|
|
|
|
-- Drop extension
|
|
DROP EXTENSION ruvector CASCADE;
|
|
```
|
|
|
|
```bash
|
|
# Remove library files
|
|
sudo rm $(pg_config --pkglibdir)/ruvector.so
|
|
sudo rm $(pg_config --sharedir)/extension/ruvector*
|
|
|
|
# Restart PostgreSQL
|
|
sudo systemctl restart postgresql
|
|
```
|
|
|
|
## Support
|
|
|
|
- **Documentation**: https://github.com/ruvnet/ruvector/tree/main/crates/ruvector-postgres/docs
|
|
- **Issues**: https://github.com/ruvnet/ruvector/issues
|
|
- **Discussions**: https://github.com/ruvnet/ruvector/discussions
|