Monitoring
We provide a view pg_vector_index_stat to monitor the progress of indexing.
| Column | Type | Description |
|---|---|---|
| tablerelid | oid | The oid of the table. |
| indexrelid | oid | The oid of the index. |
| tablename | name | The name of the table. |
| indexname | name | The name of the index. |
| idx_status | text | Its value is NORMAL or UPGRADE. Whether this index is normal or needs upgrade. |
| idx_indexing | bool | Not null if idx_status is NORMAL. Whether the background thread is indexing. |
| idx_tuples | int8 | Not null if idx_status is NORMAL. The number of tuples. |
| idx_sealed | int8[] | Not null if idx_status is NORMAL. The number of tuples in each sealed segment. |
| idx_growing | int8[] | Not null if idx_status is NORMAL. The number of tuples in each growing segment. |
| idx_write | int8 | Not null if idx_status is NORMAL. The number of tuples in write buffer. |
| idx_size | int8 | Not null if idx_status is NORMAL. The byte size for all the segments. |
| idx_options | text | Not null if idx_status is NORMAL. The configuration of the index. |
idx_options Details
The idx_options is a JSON string that includes vector, segment, optimization, and indexing options. Examples below:
json
{
"vector": {
"dimensions": 256,
"distance": "L2",
"kind": "F32"
},
"segment": {
"max_growing_segment_size": 20000,
"max_sealed_segment_size": 1000000
},
"optimizing": {
"sealing_secs": 60,
"sealing_size": 1,
"delete_threshold": 0.2,
"optimizing_threads": 2
},
"indexing": {
"hnsw": {
"m": 12,
"ef_construction": 300,
"quantization": {
"trivial": {}
}
}
}
}If there are no more insertions and you wait for all indexing to be finished, you can check the field idx_indexing every 60 seconds util it's true.