mirror of
https://github.com/pgvector/pgvector.git
synced 2026-07-11 15:16:54 +08:00
Added tests for index dimensions [skip ci]
This commit is contained in:
@@ -100,3 +100,11 @@ SELECT COUNT(*) FROM (SELECT * FROM t ORDER BY val <+> (SELECT NULL::halfvec)) t
|
|||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
DROP TABLE t;
|
DROP TABLE t;
|
||||||
|
-- dimensions
|
||||||
|
CREATE TABLE t (val halfvec(4000));
|
||||||
|
CREATE INDEX ON t USING hnsw (val halfvec_l2_ops);
|
||||||
|
DROP TABLE t;
|
||||||
|
CREATE TABLE t (val halfvec(4001));
|
||||||
|
CREATE INDEX ON t USING hnsw (val halfvec_l2_ops);
|
||||||
|
ERROR: column cannot have more than 4000 dimensions for hnsw index
|
||||||
|
DROP TABLE t;
|
||||||
|
|||||||
@@ -199,3 +199,11 @@ ERROR: 0 is outside the valid range for parameter "hnsw.scan_mem_multiplier" (1
|
|||||||
SET hnsw.scan_mem_multiplier = 1001;
|
SET hnsw.scan_mem_multiplier = 1001;
|
||||||
ERROR: 1001 is outside the valid range for parameter "hnsw.scan_mem_multiplier" (1 .. 1000)
|
ERROR: 1001 is outside the valid range for parameter "hnsw.scan_mem_multiplier" (1 .. 1000)
|
||||||
DROP TABLE t;
|
DROP TABLE t;
|
||||||
|
-- dimensions
|
||||||
|
CREATE TABLE t (val vector(2000));
|
||||||
|
CREATE INDEX ON t USING hnsw (val vector_l2_ops);
|
||||||
|
DROP TABLE t;
|
||||||
|
CREATE TABLE t (val vector(2001));
|
||||||
|
CREATE INDEX ON t USING hnsw (val vector_l2_ops);
|
||||||
|
ERROR: column cannot have more than 2000 dimensions for hnsw index
|
||||||
|
DROP TABLE t;
|
||||||
|
|||||||
@@ -82,3 +82,14 @@ SELECT COUNT(*) FROM (SELECT * FROM t ORDER BY val <=> (SELECT NULL::halfvec)) t
|
|||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
DROP TABLE t;
|
DROP TABLE t;
|
||||||
|
-- dimensions
|
||||||
|
CREATE TABLE t (val halfvec(4000));
|
||||||
|
CREATE INDEX ON t USING ivfflat (val halfvec_l2_ops);
|
||||||
|
NOTICE: ivfflat index created with little data
|
||||||
|
DETAIL: This will cause low recall.
|
||||||
|
HINT: Drop the index until the table has more data.
|
||||||
|
DROP TABLE t;
|
||||||
|
CREATE TABLE t (val halfvec(4001));
|
||||||
|
CREATE INDEX ON t USING ivfflat (val halfvec_l2_ops);
|
||||||
|
ERROR: column cannot have more than 4000 dimensions for ivfflat index
|
||||||
|
DROP TABLE t;
|
||||||
|
|||||||
@@ -173,6 +173,17 @@ ERROR: 0 is outside the valid range for parameter "ivfflat.max_probes" (1 .. 32
|
|||||||
SET ivfflat.max_probes = 32769;
|
SET ivfflat.max_probes = 32769;
|
||||||
ERROR: 32769 is outside the valid range for parameter "ivfflat.max_probes" (1 .. 32768)
|
ERROR: 32769 is outside the valid range for parameter "ivfflat.max_probes" (1 .. 32768)
|
||||||
DROP TABLE t;
|
DROP TABLE t;
|
||||||
|
-- dimensions
|
||||||
|
CREATE TABLE t (val vector(2000));
|
||||||
|
CREATE INDEX ON t USING ivfflat (val vector_l2_ops);
|
||||||
|
NOTICE: ivfflat index created with little data
|
||||||
|
DETAIL: This will cause low recall.
|
||||||
|
HINT: Drop the index until the table has more data.
|
||||||
|
DROP TABLE t;
|
||||||
|
CREATE TABLE t (val vector(2001));
|
||||||
|
CREATE INDEX ON t USING ivfflat (val vector_l2_ops);
|
||||||
|
ERROR: column cannot have more than 2000 dimensions for ivfflat index
|
||||||
|
DROP TABLE t;
|
||||||
-- memory
|
-- memory
|
||||||
CREATE TABLE t (val vector(2000));
|
CREATE TABLE t (val vector(2000));
|
||||||
CREATE INDEX ON t USING ivfflat (val vector_l2_ops) WITH (lists = 4096);
|
CREATE INDEX ON t USING ivfflat (val vector_l2_ops) WITH (lists = 4096);
|
||||||
|
|||||||
@@ -56,3 +56,13 @@ SELECT * FROM t ORDER BY val <+> '[3,3,3]';
|
|||||||
SELECT COUNT(*) FROM (SELECT * FROM t ORDER BY val <+> (SELECT NULL::halfvec)) t2;
|
SELECT COUNT(*) FROM (SELECT * FROM t ORDER BY val <+> (SELECT NULL::halfvec)) t2;
|
||||||
|
|
||||||
DROP TABLE t;
|
DROP TABLE t;
|
||||||
|
|
||||||
|
-- dimensions
|
||||||
|
|
||||||
|
CREATE TABLE t (val halfvec(4000));
|
||||||
|
CREATE INDEX ON t USING hnsw (val halfvec_l2_ops);
|
||||||
|
DROP TABLE t;
|
||||||
|
|
||||||
|
CREATE TABLE t (val halfvec(4001));
|
||||||
|
CREATE INDEX ON t USING hnsw (val halfvec_l2_ops);
|
||||||
|
DROP TABLE t;
|
||||||
|
|||||||
@@ -115,3 +115,13 @@ SET hnsw.scan_mem_multiplier = 0;
|
|||||||
SET hnsw.scan_mem_multiplier = 1001;
|
SET hnsw.scan_mem_multiplier = 1001;
|
||||||
|
|
||||||
DROP TABLE t;
|
DROP TABLE t;
|
||||||
|
|
||||||
|
-- dimensions
|
||||||
|
|
||||||
|
CREATE TABLE t (val vector(2000));
|
||||||
|
CREATE INDEX ON t USING hnsw (val vector_l2_ops);
|
||||||
|
DROP TABLE t;
|
||||||
|
|
||||||
|
CREATE TABLE t (val vector(2001));
|
||||||
|
CREATE INDEX ON t USING hnsw (val vector_l2_ops);
|
||||||
|
DROP TABLE t;
|
||||||
|
|||||||
@@ -43,3 +43,13 @@ SELECT COUNT(*) FROM (SELECT * FROM t ORDER BY val <=> '[0,0,0]') t2;
|
|||||||
SELECT COUNT(*) FROM (SELECT * FROM t ORDER BY val <=> (SELECT NULL::halfvec)) t2;
|
SELECT COUNT(*) FROM (SELECT * FROM t ORDER BY val <=> (SELECT NULL::halfvec)) t2;
|
||||||
|
|
||||||
DROP TABLE t;
|
DROP TABLE t;
|
||||||
|
|
||||||
|
-- dimensions
|
||||||
|
|
||||||
|
CREATE TABLE t (val halfvec(4000));
|
||||||
|
CREATE INDEX ON t USING ivfflat (val halfvec_l2_ops);
|
||||||
|
DROP TABLE t;
|
||||||
|
|
||||||
|
CREATE TABLE t (val halfvec(4001));
|
||||||
|
CREATE INDEX ON t USING ivfflat (val halfvec_l2_ops);
|
||||||
|
DROP TABLE t;
|
||||||
|
|||||||
@@ -98,6 +98,16 @@ SET ivfflat.max_probes = 32769;
|
|||||||
|
|
||||||
DROP TABLE t;
|
DROP TABLE t;
|
||||||
|
|
||||||
|
-- dimensions
|
||||||
|
|
||||||
|
CREATE TABLE t (val vector(2000));
|
||||||
|
CREATE INDEX ON t USING ivfflat (val vector_l2_ops);
|
||||||
|
DROP TABLE t;
|
||||||
|
|
||||||
|
CREATE TABLE t (val vector(2001));
|
||||||
|
CREATE INDEX ON t USING ivfflat (val vector_l2_ops);
|
||||||
|
DROP TABLE t;
|
||||||
|
|
||||||
-- memory
|
-- memory
|
||||||
|
|
||||||
CREATE TABLE t (val vector(2000));
|
CREATE TABLE t (val vector(2000));
|
||||||
|
|||||||
Reference in New Issue
Block a user