`pgvector` 兼容性
pgvecto.rs 对 pgvector 的原生兼容性与兼容模式配置。
pgvecto.rs 在以下方面原生兼容 pgvector:
CREATE TABLE命令,例如CREATE TABLE t (val vector(3))INSERT INTO命令,例如INSERT INTO t (val) VALUES ('[0.6,0.6,0.6]')
pgvecto.rs 还可以通过配置兼容 pgvector 的以下语法:
- 索引选项,允许通过
USING hnsw (val vector_ip_ops)创建索引 - 查询选项,支持通过
SET ivfflat.probes = 10设置参数
该特性称为 pgvector 兼容模式,可通过 SET vectors.pgvector_compatibility = on 启用。
索引选项与查询选项
对于 ivfflat 和 hnsw 索引,仅支持以下选项:
- 索引选项的默认值与
pgvecto.rs原生默认值不同,而是与pgvector保持一致。 - 查询选项的默认值则与
pgvecto.rs保持一致。
ivfflat 的索引选项:
| 键名 | 类型 | 取值范围 | 默认值 | 说明 |
|---|---|---|---|---|
| nlist | integer | [1, 1_000_000] |
100 |
聚类单元(列表)的数量。 |
ivfflat 的查询选项:
| 选项 | 类型 | 取值范围 | 默认值 | 说明 |
|---|---|---|---|---|
| ivfflat.probes | integer | [1, 1_000_000] |
10 |
扫描的列表数量。 |
警告
ivfflat.probes 的默认值为 10,而非 pgvector 中的 1。
hnsw 的索引选项:
| 键名 | 类型 | 取值范围 | 默认值 | 说明 |
|---|---|---|---|---|
| m | integer | [4, 128] |
16 |
节点的最大出度。 |
| ef_construction | integer | [10, 2000] |
64 |
构建索引时的搜索范围。 |
hnsw 的查询选项:
| 选项 | 类型 | 取值范围 | 默认值 | 说明 |
|---|---|---|---|---|
| hnsw.ef_search | integer | [1, 65535] |
100 |
HNSW 的搜索范围。 |
警告
hnsw.ef_search 的默认值为 100,而非 pgvector 中的 40。
示例
启用 pgvector 兼容模式并开始向量查询非常简单:
支持创建多种类型的索引: