Operations¶
이 페이지는 AkasicDB vector edition, vector index 제한, index 처리 상태를 확인하는 SQL interface를 다룹니다.
vectoron_edition(): AkasicDB vector edition 조회vectoron_max_indexes(): vector index 개수 제한 조회vectoron_max_vectors_per_index(): index당 vector 수 제한 조회fence_vector_index(...): index 관련 background work가 끝날 때까지 대기vectoron_index_stat: SQL에서 vector index 상태 조회alter_vector_index(...): 지원되는 runtime index option 변경
Edition 및 Limit 확인¶
사용 중인 AkasicDB의 vector edition과 vector index의 개수 및 항목 수 제한은 아래 SQL 함수를 통해 확인할 수 있습니다.
SELECT
vectoron_edition() AS edition,
vectoron_max_indexes() AS max_indexes,
vectoron_max_vectors_per_index() AS max_vectors_per_index;
| Function | 반환값 |
|---|---|
vectoron_edition() |
AkasicDB vector edition |
vectoron_max_indexes() |
vector index 최대 개수 (NULL: limit 미설정) |
vectoron_max_vectors_per_index() |
index당 최대 vector 수 (NULL: limit 미설정) |
DiskANN, quantization 및 Vector Index Replication은 Enterprise Edition에서만 사용할 수 있습니다.
인덱스 처리 대기¶
fence_vector_index는 지정한 AkasicDB vector index의 현재 작업이 끝날 때까지 대기합니다. 인덱스 생성 직후 상태를 확인하거나 측정 질의를 실행하기 전에 사용합니다.
Note
Vamana 예제는 vector_l2_ops와 <->를 사용합니다.
CREATE INDEX items_embedding_vamana_idx
ON items
USING vectoron (embedding vector_l2_ops)
WITH (options = $$
[indexing.vamana]
alpha = 1.2
r = 32
l_search = 64
phase = 1
$$);
SELECT fence_vector_index('items_embedding_vamana_idx'::regclass);
fence_vector_index는 성능을 바꾸지 않습니다. 인덱스 작업이 끝난 뒤 상태 확인이나 측정 질의를 실행해야 할 때 사용합니다.
인덱스 상태 확인¶
vectoron_index_stat는 AkasicDB vector index 상태를 보여줍니다.
SELECT
tablename,
indexname,
idx_status,
idx_indexing,
idx_tuples,
idx_size
FROM vectoron_index_stat
WHERE indexname = 'items_embedding_vamana_idx';
| Column | Type | 설명 |
|---|---|---|
tablerelid |
oid |
table OID |
indexrelid |
oid |
index OID |
tablename |
name |
table 이름 |
indexname |
name |
index 이름 |
idx_status |
text |
index 상태 |
idx_indexing |
bool |
index 작업 진행 여부 |
idx_tuples |
int8 |
segment 전체의 indexed vector 수 |
idx_sealed |
int8[] |
sealed segment별 vector 수 |
idx_growing |
int8[] |
growing segment별 vector 수 |
idx_write |
int8 |
write buffer의 vector 수 |
idx_size |
int8 |
segment 전체 크기(byte) |
idx_options |
text |
serialized index option |
idx_static_rows |
int8 |
DiskANN static generation의 전체 row 수 |
idx_tombstones |
int8 |
VACUUM이 tombstone으로 표시한 DiskANN static row 수 |
idx_reindex_recommended |
bool |
DiskANN REINDEX 권고 여부 |
DiskANN 전용 column인 idx_static_rows, idx_tombstones, idx_reindex_recommended는
다른 index family에서 NULL입니다.
Segment 상태 확인¶
Segment field는 background work가 진행되는 동안 indexed vector가 어느 segment에 있는지 보여줍니다.
SELECT
indexname,
idx_indexing,
idx_sealed,
idx_growing,
idx_write
FROM vectoron_index_stat
WHERE indexname = 'items_embedding_vamana_idx';
완료 여부는 idx_indexing으로 확인합니다. Segment 분포는 idx_sealed, idx_growing, idx_write로 확인합니다.
Optimization Worker Count 변경¶
alter_vector_index로 기존 vector index의 background optimization worker 수를 변경합니다. 값을 늘리면 segment merge와 optimization 작업의 병렬도가 높아지고 CPU 사용량이 증가합니다. 인덱스를 다시 만들 필요는 없습니다.
SELECT alter_vector_index(
'items_embedding_vamana_idx'::regclass,
'optimizing.optimizing_threads',
'8'
);
DiskANN REINDEX 감시¶
AkasicDB는 DiskANN의 idx_reindex_recommended를 감시하거나 REINDEX를 자동으로 실행하지
않습니다. 사용자 UI 또는 monitoring system에서 vectoron_index_stat을 주기적으로
조회해야 합니다.
SELECT
indexname,
idx_static_rows,
idx_tombstones,
idx_reindex_recommended
FROM vectoron_index_stat
WHERE idx_reindex_recommended IS TRUE;
판정 조건과 실행 절차는 DiskANN을 참조하십시오.
Vector Index Replication¶
Enterprise Edition에서 제공하는 Vector Index Replication의 custom WAL 설정과 physical standby 제한은 Vector Index Replication에서 다룹니다.