Index Creation
Creating a Sparse HNSW Index
An HNSW index can be created over any column with the sparsevec
type. Sparse vectors with up to 1,000
nonzero dimensions can be indexed.
CREATE INDEX ON <schema_name>.<table_name>
USING hnsw (<column_name> <distance_metric>);
The name of the schema, or namespace, of the table. If not provided, the search path is used as a default.
The name of the table being indexed.
The name of the column being indexed. Must be of type sparsevec
.
The distance metric used for measuring similarity between two vectors. Use
sparsevec_l2_ops
for L2 distance, sparsevec_ip_ops
for inner product, and
sparsevec_cosine_ops
for cosine distance.
Index Options
The following example demonstrates how to pass options when creating the HNSW index:
CREATE INDEX ON mock_items
USING hnsw (sparse_embedding sparsevec_l2_ops)
WITH (m = 16, ef_construction = 64);
The maximum number of connections per layer. A higher value increases recall but also increases index size and construction time.
A higher value creates a higher quality graph, which increases recall but also construction time.
Deleting a Sparse HNSW Index
The following command deletes a sparse HNSW index:
DROP INDEX <index_name>;
The name of the index you wish to delete.
Recreating a Sparse HNSW Index
A sparse HNSW index only needs to be recreated if the name of the indexed column changes. To recreate the index, simply delete and create it using the SQL commands above.
Was this page helpful?