
# 

Vector indexes

* * *

Once your vector table starts to grow, you will likely want to add an index to speed up queries. Without indexes, you'll be performing a sequential scan which can be a resource-intensive operation when you have many records.

## Choosing an index[#](#choosing-an-index)

Today `pgvector` supports two types of indexes:

*   [HNSW](hnsw-indexes/index.md)
*   [IVFFlat](ivf-indexes/index.md)

In general we recommend using [HNSW](hnsw-indexes/index.md) because of its [performance](/blog/increase-performance-pgvector-hnsw#hnsw-performance-1536-dimensions) and [robustness against changing data](hnsw-indexes/index.md#when-should-you-create-hnsw-indexes).

## Distance operators[#](#distance-operators)

Indexes can be used to improve performance of nearest neighbor search using various distance measures. `pgvector` includes 3 distance operators:

Operator

Description

[**Operator class**](https://www.postgresql.org/docs/current/sql-createopclass.html)

`<->`

Euclidean distance

`vector_l2_ops`

`<#>`

negative inner product

`vector_ip_ops`

`<=>`

cosine distance

`vector_cosine_ops`

For pgvector versions 0.7.0 and above, it's possible to create indexes on vectors with the following maximum dimensions:

*   vector: up to 2,000 dimensions
*   halfvec: up to 4,000 dimensions
*   bit: up to 64,000 dimensions

You can check your current pgvector version by running: `SELECT * FROM pg_extension WHERE extname = 'vector';` or by navigating to the [Extensions](/dashboard/project/_/database/extensions) tab in your Supabase project dashboard.

If you are on an earlier version of pgvector, you should [upgrade your project here](/dashboard/project/_/settings/infrastructure).

## Resources[#](#resources)

Read more about indexing on `pgvector`'s [GitHub page](https://github.com/pgvector/pgvector#indexing).
