Open-source vector similarity search for Postgres
Fly PgVector leverages the flexibility of Fly's Postgres Flex as a base, integrating with its scalable and configurable environment to store and manage vector data efficiently.
Store your vectors with the rest of your data. Supports:
- exact and approximate nearest neighbor search
- single-precision, half-precision, binary, and sparse vectors
- L2 distance, inner product, cosine distance, L1 distance, Hamming distance, and Jaccard distance
- any language with a Postgres client
Plus ACID compliance, point-in-time recovery, JOINs, and all of the other great features of Postgres
To deploy pgvector on Fly, start by installing the Fly CLI and setting up your Fly account:
- Download and install the Fly CLI from the Fly official website.
- Open your terminal and run
flyctl auth signupto create a new Fly account orflyctl auth loginto log into an existing account. - Once logged in, create a new Fly Postgres app by running
fly pg. This command sets up a new Postgres instance on Fly. Note at this stage this is still the base Fly Postgres image instead the one with pgvector. - After setting up your Fly Postgres app, copy the output connection string provided. Store this string securely as you will need it to connect to your database. Consider using a password manager or another secure method to keep this information safe.
- Configure your app by modifying the
fly.tomlfile, which was generated during the app creation process, to suit your deployment needs. This file includes settings for regions, resources, and more. - To authenticate your Fly CLI with the Fly platform, you need an API token. You can obtain this token by navigating to your Fly dashboard. Go to the 'Account Settings' and click on 'Access Tokens'. Create a new token if you don't have one already, and copy it.
- To set this token as an environment variable in GitHub Actions, navigate to your repository on GitHub. Go to 'Settings' > 'Secrets' > 'Actions'. Click on 'New repository secret'. Name the secret
FLY_API_TOKENand paste your copied token into the value field. This will securely store your token and make it available in your GitHub Actions workflows.
To make your database accessible from external tools like Postico, you need to generate a dedicated IPv4 address for your application. Here’s how to do it:
- Allocate an IPv6 address for your application by running
flyctl ips allocate-v4in your terminal. This command will generate a new dedicated IPv4 address for your Fly application that will cost $2/mo. - After allocating the IPv4 address, you can find it by running
flyctl ips list. This will list all IP addresses associated with your application, including the newly allocated IPv6. - Restart Postgres by running
fly pg restart - Configure the host name in Postico or any other database management. Replace the
flycastin your connection string withfly.dev.
This setup allows you to securely connect to your database from your preferred tool without needing to modify additional configuration files or deploy changes.