TechBridge

IVFFlat & HNSW 인덱스 — 수백만 벡터에서 ms 검색

← 목록으로

📋 실습 안내

✏️ CODE EDITOR (JSX)
▶ 실행 버튼을 눌러 코드를 테스트하세요.
👁️ 내 미리보기 내 코드 실행 결과
🎯 완성 미리보기 목표
위 에디터 코드를 수정해서 이 결과물과 똑같이 만들어보세요!
💡 TODO 주석을 채워서 위 결과물처럼 동작하게 만들어보세요
🤖 AI 선생님에게 질문하기 이번 강의 전용
  선생님이 답변 중이에요...
⚠️ 학습 관련 질문만 답변합니다. 관련 없는 질문은 자동으로 학습으로 유도됩니다.
Q1. IVFFlat 인덱스의 lists 파라미터에 대한 올바른 설명은?
💡 IVFFlat의 lists는 전체 벡터 공간을 몇 개의 클러스터로 나눌지를 결정합니다. 검색 시에는 쿼리 벡터와 가장 가까운 probes개 클러스터만 탐색합니다. 일반적으로 sqrt(행 수) ~ 행 수/1000 범위로 설정합니다.
Q2. HNSW 인덱스의 주요 장점으로 옳지 않은 것은?
💡 HNSW는 IVFFlat보다 인덱스 빌드 시간이 더 오래 걸립니다. 대신 검색 정확도가 더 높고 실시간 삽입이 원활하며 검색 속도가 매우 빠릅니다. 빌드 시간이 길다는 단점은 CONCURRENTLY 옵션으로 완화할 수 있습니다.
Q3. 인덱스 없이 500만 건 벡터를 검색할 때 발생하는 문제는?
💡 인덱스 없는 벡터 검색은 모든 행을 순서대로 비교하는 Seq Scan이 수행됩니다. 500만 건에서는 수초~수십초가 소요되어 실시간 서비스에 치명적입니다. ANN 인덱스(IVFFlat/HNSW)를 사용하면 밀리초 단위로 줄어듭니다.
Q4. 운영 중인 PostgreSQL 테이블에 벡터 인덱스를 생성할 때 테이블 잠금을 피하는 방법은?
💡 CREATE INDEX CONCURRENTLY는 테이블 잠금 없이 인덱스를 백그라운드에서 빌드합니다. 빌드 시간이 일반보다 더 오래 걸리지만, 운영 중 서비스 영향 없이 인덱스를 추가할 수 있습니다. PostgreSQL 표준 기능입니다.
Q5. HNSW의 ef_search 파라미터에 대한 올바른 설명은?
💡 ef_search는 HNSW 검색 시 그래프 탐색 폭을 결정합니다. 기본값 40이며, 높일수록 더 많은 후보를 검토해 정확도가 높아지지만 속도가 느려집니다. 세션 수준에서 SET hnsw.ef_search = N 으로 조정 가능합니다.
🎉

퀴즈 통과!

점수: 0점 — 수고하셨습니다!

다음 강의로 →
😅

아쉽네요!

점수: 0점 — 70점 이상이 되어야 통과합니다.