콘텐츠로 이동

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 미설정)

인덱스 처리 대기

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

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'
);