本站支持搜索的镜像仓库:Docker Hub、gcr.io、ghcr.io、quay.io、k8s.gcr.io、registry.gcr.io、elastic.co、mcr.microsoft.com

pgvecto.rs is a Postgres extension that provides vector similarity search functions. It is written in Rust and based on pgrx.
Checkout pgvecto.rs vs pgvector for more details.
| Feature | pgvecto.rs | pgvector |
|---|---|---|
| Filtering | Introduces VBASE method for vector search and relational query (e.g. Single-Vector TopK + Filter + Join). | When filters are applied, the results may be incomplete. For example, if you originally intended to limit the results to 10, you might end up with only 5 results with filters. |
| Vector Dimensions | Supports up to 65535 dimensions. | Supports up to 2000 dimensions. |
| SIMD | SIMD instructions are dynamically dispatched at runtime to maximize performance based on the capabilities of the specific machine. | Added CPU dispatching for distance functions on Linux x86-64" in 0.7.0. |
| Data Types | Introduces additional data types: binary vectors, FP16 (16-bit floating point), and INT8 (8-bit integer). | - |
| Indexing | Handles the storage and memory of indexes separately from PostgreSQL | Relies on the native storage engine of PostgreSQL |
| WAL Support | Provides Write-Ahead Logging (WAL) support for data, index support is working in progress. | Provides Write-Ahead Logging (WAL) support for index and data. |
For new users, we recommend using the Docker image to get started quickly.
docker run \ --name pgvecto-rs-demo \ -e POSTGRES_PASSWORD=mysecretpassword \ -p 5432:5432 \ -d tensorchord/pgvecto-rs:pg16-v0.2.1
Then you can connect to the database using the psql command line tool. The default username is postgres, and the default password is mysecretpassword.
psql -h localhost -p 5432 -U postgres
Run the following SQL to ensure the extension is enabled.
DROP EXTENSION IF EXISTS vectors; CREATE EXTENSION vectors;
pgvecto.rs introduces a new data type vector(n) denoting an n-dimensional vector. The n within the brackets signifies the dimensions of the vector.
You could create a table with the following SQL.
-- create table with a vector column CREATE TABLE items ( id bigserial PRIMARY KEY, embedding vector(3) NOT NULL -- 3 dimensions );
[!TIP]
vector(n)is a valid data type only if $1 \leq n \leq 65535$. Due to limits of PostgreSQL, it's possible to create a value of typevector(3)of $5$ dimensions andvectoris also a valid data type. However, you cannot still put $0$ scalar or more than $65535$ scalars to a vector. If you usevectorfor a column or there is some values mismatched with dimension denoted by the column, you won't able to create an index on it.
You can then populate the table with vector data as follows.
-- insert values INSERT INTO items (embedding) VALUES ('[1,2,3]'), ('[4,5,6]'); -- or insert values using a casting from array to vector INSERT INTO items (embedding) VALUES (ARRAY[1, 2, 3]::real[]), (ARRAY[4, 5, 6]::real[]);
We support three operators to calculate the distance between two vectors.
<->: squared Euclidean distance, defined as $\Sigma (x_i - y_i) ^ 2$.<#>: negative dot product, defined as $- \Sigma x_iy_i$.<=>: cosine distance, defined as $1 - \frac{\Sigma x_iy_i}{\sqrt{\Sigma x_i^2 \Sigma y_i^2}}$.-- call the distance function through operators -- squared Euclidean distance SELECT '[1, 2, 3]'::vector <-> '[3, 2, 1]'::vector; -- negative dot product SELECT '[1, 2, 3]'::vector <#> '[3, 2, 1]'::vector; -- cosine distance SELECT '[1, 2, 3]'::vector <=> '[3, 2, 1]'::vector;
You can search for a vector simply like this.
-- query the similar embeddings SELECT * FROM items ORDER BY embedding <-> '[3,2,1]' LIMIT 5;
Please check out the Question-Answering application tutorial.
vecf16 type is the same with vector in anything but the scalar type. It stores 16-bit floating point numbers. If you want to reduce the memory usage to get better performance, you can try to replace vector type with vecf16 type.
Please check out ROADMAP. Want to jump in? Welcome discussions and contributions!
good first issue 💖 issues!We welcome all kinds of contributions from the open-source community, individuals, and partners.
Thanks goes to these wonderful people (emoji key):
Alex Chi 💻 | AuruTus 💻 | Avery 💻 🤔 | Ben Ye 📖 | Ce Gao 💼 🖋 📖 | Jinjing Zhou 🎨 🤔 📆 | Joe Passanante 💻 |
Keming 🐛 💻 📖 🤔 🚇 | Mingzhuo Yin 💻 ⚠️ 🚇 | Usamoi 💻 🤔 | cutecutecat 💻 | odysa 📖 💻 | yi wang 💻 | yihong 💻 |
盐粒 Yanli 💻 | ||||||
|
| ||||||
This project follows the all-contributors specification. Contributions of any kind welcome!
Thanks to the following projects:
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录方式配置轩辕镜像加速服务,包含7个详细步骤
在 Linux 系统上配置轩辕镜像源,支持主流发行版
在 Docker Desktop 中配置轩辕镜像加速,适用于桌面系统
在 Docker Compose 中使用轩辕镜像加速,支持容器编排
在 k8s 中配置 containerd 使用轩辕镜像加速
在宝塔面板中配置轩辕镜像加速,提升服务器管理效率
在 Synology 群晖NAS系统中配置轩辕镜像加速
在飞牛fnOS系统中配置轩辕镜像加速
在极空间NAS中配置轩辕镜像加速
在爱快ikuai系统中配置轩辕镜像加速
在绿联NAS系统中配置轩辕镜像加速
在威联通NAS系统中配置轩辕镜像加速
在 Podman 中配置轩辕镜像加速,支持多系统
配置轩辕镜像加速9大主流镜像仓库,包含详细配置步骤
无需登录即可使用轩辕镜像加速服务,更加便捷高效
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429