본문으로 건너뛰기

© 2026 Molayo

Qiita헤드라인2026. 06. 23. 11:53

인메모리 근방 그래프 벡터에서 M 및 efConstruction 지정하기

요약

HNSW 알고리즘 기반의 인메모리 근방 그래프 벡터 인덱스에서 M과 efConstruction 파라미터를 설정하는 방법을 설명합니다. 각 파라미터의 역할과 유효 범위, SQL을 통한 설정 및 확인 방법을 다룹니다.

핵심 포인트

  • M은 벡터가 유지할 수 있는 최대 근방 수를 결정합니다.
  • efConstruction은 삽입 시 고려되는 가장 가까운 후보 벡터의 최대 수입니다.
  • M은 2~2048, efConstruction는 1~65535 범위 내에서 지정 가능합니다.
  • SQL 명령어를 통해 파라미터를 선언하고 v$vector_graph_index에서 확인할 수 있습니다.

HNSW에서의 원리적인 파라미터(Parameter)인 M과 efConstruction는 인메모리 근방 그래프 벡터(In-memory neighbor graph vector)에서도 지정이 가능합니다.

HNSW 고유 파라미터

NEIGHBORS와 M은 동등하며, 벡터가 임의의 레이어(Layer)에 유지할 수 있는 근방의 최대 수를 나타냅니다. 마지막 정점에는 최대 200만 개의 근방을 가질 수 있는 유연성이 하나 추가됩니다.

EFCONSTRUCTION는 삽입 시 검색의 각 단계에서 고려되는 가장 가까운 벡터 후보의 최대 수를 나타냅니다.

HNSW 벡터 인덱스(Index) 파라미터의 유효 범위는 다음과 같습니다.

ACCURACY: > 0 및 <= 100

DISTANCE: EUCLIDEAN, L2_SQUARED (별칭 EUCLIDEAN_SQUARED), COSINE, DOT, MANHATTAN, HAMMING

DISTANCE metric_name을 지정하지 않은 경우, 기본 메트릭(Metric)인 COSINE이 사용됩니다.

TYPE : HNSW

NEIGHBORS: >= 2 및 <= 2048

EFCONSTRUCTION: > 0 및 <= 65535

M과 efConstruction는 organization inmemory neighbor graph 뒤에 parameters를 선언하여 지정합니다.

SQL> info testtab1
TABLE: TESTTAB1
LAST ANALYZED:2026-06-22 07:46:12.0
...
SQL> create vector index testtab1_idx on testtab1(vec) organization inmemory neighbor graph;
Vector INDEX created.
Elapsed: 00:00:04.949
...

각각의 값은 v$vector_graph_index의 NUM_NEIGHBORS 열과 EF_CONSTRUCTION 열에서 확인할 수 있습니다.

SQL> select * from v$vector_graph_index order by index_name;
★ ★
OWNER INDEX_NAME PARTITION_NAME INDEX_OBJN ANCHOR_ADDRESS INDEX_GRAPH_TYPE NUM_LAYERS NUM_VECTORS SPARSE_LAYER_VECTORS NUM_NEIGHBORS EF_CONSTRUCTION TOTAL_EDGES REF_COUNT QUERY_DIST_COUNT CREATION_DIST_COUNT PRUNED_NEIGHBORS NUM_SNAPSHOTS MAX_SNAPSHOT ALLOCATED_BYTES USED_BYTES INDEX_USED_COUNT COVERING_COLS QUANTIZATION_TYPE QUANTIZATION_MDATA CON_ID
...

공식 기재 사항은 찾을 수 없었으나, 기본값은 M이 32, efConstruction는 200인 것으로 보입니다.

SQL> info testtab5
TABLE: TESTTAB5
LAST ANALYZED:2026-06-22 07:58:48.0
...

efConstruction의 증감에 따른 인덱스 생성 시간의 변화도 확인할 수 있었습니다.

SQL> info testtab8
TABLE: TESTTAB8
LAST ANALYZED:2026-06-22 08:17:35.0
...
SQL> create vector index testtab8_idx on testtab8(vec) organization inmemory neighbor graph
2* parameters (type hnsw, efconstruction 100);
Vector INDEX created.
...

AI 자동 생성 콘텐츠

본 콘텐츠는 Qiita AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0