通过psql客户端进行连接,相应命令可以参照;

CREATE OR REPLACE FUNCTION random_array(dim integer) 
    RETURNS INT[]
AS $$ 
    SELECT array_agg(random()) 
    FROM generate_series(1, dim); 
$$ 
LANGUAGE SQL 
VOLATILE 
COST 1;

CREATE TABLE vtest(id INT, v VECTOR(1536));
INSERT INTO vtest SELECT i, random_array(1536)::VECTOR(1536) FROM generate_series(1, 1000000) AS i;
1000

CREATE INDEX ON vtest USING ivfflat(v vector_cosine_ops) WITH(lists = 1000);

CREATE INDEX ON vtest USING hnsw (v vector_l2_ops) WITH (m = 2, ef_construction = 8);

set hnsw.ef_search=1;
set ivfflat.probes=1;

//查看nsw索引加载情况
SELECT phase, round(100.0 * blocks_done / nullif(blocks_total, 0), 1) AS “%” FROM pg_stat_progress_create_index;

//查看执行计划
EXPLAIN SELECT * FROM vtest ORDER BY v <-> (SELECT random_array(1536)::VECTOR(1536)) LIMIT 50;

pgbench -f ./test.sql -c1 -T60 -P5 -n postgres

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐