Postgres - Install on Redhat 9
**To install the `pgvector` extension** (the popular open-source vector similarity search extension for PostgreSQL, which provides the `vector` data type and operators) on **Red Hat Enterprise Linux (RHEL) 9** with **PostgreSQL 16**, follow these steps.
**`vector.control`** is the control file that comes bundled with the `pgvector` extension — it's not a separate extension. The extension name is simply **`vector`**.
### Recommended Method: Install via PGDG Repository (Easiest & Recommended)
The official PostgreSQL Yum Repository (PGDG) provides pre-built RPM packages for `pgvector` on RHEL 9.
1. **Add the official PostgreSQL repository** (if not already added):
```bash
sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm
```
2. **Disable the built-in RHEL PostgreSQL module** (to avoid conflicts):
```bash
sudo dnf -qy module disable postgresql
```
3. **Install PostgreSQL 16** (if not already installed):
```bash
sudo dnf install -y postgresql16-server postgresql16-devel
```
- Initialize the database (only if this is a fresh install):
```bash
sudo /usr/pgsql-16/bin/postgresql-16-setup initdb
sudo systemctl enable --now postgresql-16
```
4. **Install pgvector for PostgreSQL 16**:
```bash
sudo dnf install -y pgvector_16
```
This installs the extension files (including `vector.control`, `vector--*.sql`, and `vector.so`) into the correct PostgreSQL 16 directories.
### Alternative: Compile from Source (if you prefer or need a specific version)
If the RPM is not available or you want the latest development version:
1. Install dependencies:
```bash
sudo dnf install -y git make gcc postgresql16-devel
```
2. Clone and build:
```bash
cd /tmp
git clone --branch v0.8.1 https://github.com/pgvector/pgvector.git
cd pgvector
make
sudo make install
```
(Use the latest tag from https://github.com/pgvector/pgvector/releases instead of `v0.8.1` if desired.)
### Enable the Extension in Your Database
1. Connect to your PostgreSQL 16 database (as superuser):
```bash
sudo -u postgres psql
```
Or connect to a specific database:
```bash
psql -U postgres -d your_database_name
```
2. Create the extension (run this in every database where you want to use vectors):
```sql
CREATE EXTENSION IF NOT EXISTS vector;
```
3. Verify it's installed:
```sql
\dx
```
You should see `vector` listed.
Or check the version:
```sql
SELECT vector_version();
```
### Troubleshooting Tips
- If you get `could not load library "/usr/pgsql-16/lib/vector.so"`, verify the file exists and has correct permissions.
- If using a custom PostgreSQL install, ensure `pg_config` points to the right version.
- For multiple PostgreSQL versions, always use the `_16` suffix in package names (e.g., `pgvector_16`).
This should get you up and running with vector support on PostgreSQL 16 on RHEL 9. Let me know if you run into any errors!