inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

시스템 디자인 첫걸음 with LLM: 운영 가능한 AI 서비스(RAG·AI Agent) 아키텍처 설계하기

임베딩과 벡터 DB

IVF vs HNSW

58

박도현

작성한 질문수 11

1

안녕하세요 강의 잘 듣고 있습니다.


IVF와 HNSW 중 실무에서 더 자주 사용되는 알고리즘은 무엇인가요? 각각의 장단점이 궁금합니다!


감사합니다.

아키텍처 소프트웨어-설계 시스템-디자인 llm rag ai-agent

답변 1

1

성장랜턴

안녕하세요 도현님. 좋은 질문 감사드립니다.


일반적인 RAG 시스템을 만들때는 기본적으로 HNSW를 인덱스로 선택하는 경우가 많습니다. 실제로 여러 벡터 DB와 검색 엔진에서 HNSW를 기본 인덱스로 제공하고 있습니다.


HNSW의 장점은 보통 동일한 Recall(실제로 유사한 벡터들 중 얼마나 많이 찾아내는지)을 목표로 할 때 IVF보다 빠르게 검색할 수 있다는 것입니다. 그래프를 따라 가까운 벡터가 있을 가능성이 높은 영역을 탐색하기 때문에 클러스터 경계로 인한 누락 문제도 상대적으로 적습니다. 다만 벡터뿐만 아니라 각 벡터의 이웃을 나타내는 그래프 연결 정보도 저장해야해서 인덱스의 메모리 오버헤드가 크다는 단점이 있습니다. 신규 데이터를 삽입할 때도 가까운 노드를 탐색하고 그래프의 연결 관계를 구성해야 해서 일반적으로 IVF보다 삽입 비용이 큽니다.


그래서 데이터 규모가 커져서 메모리 비용이나 데이터 삽입 비용이 중요해지면 IVF를 고려하게됩니다. IVF는 인덱스 구조의 메모리 오버헤드가 비교적 작고, 신규 벡터를 가까운 클러스터에 추가하는 방식이어서 일반적으로 삽입 비용도 HNSW보다 작습니다. 다만 IVF는 인덱스를 만들기 전에 데이터의 분포를 바탕으로 클러스터 중심점을 학습하는 과정이 필요하고, 데이터 분포가 크게 달라지면 클러스터 중심점을 다시 학습하고 인덱스를 재구성해야 할 수도 있다는 단점이 있습니다.


참고로 실무에서는 데이터가 수백만~수천만 개 이상으로 늘어나서 메모리 비용이 더욱 중요해지면, 벡터를 압축하는 PQ를 IVF나 HNSW와 함께 사용하거나 대규모 인덱스의 주요 데이터를 SSD에 저장하도록 설계된 DiskANN 같은 방식도 고려합니다.


강의에서는 인덱스 구성에 관한 기본적인 내용만 다루었는데요. 실제 인덱스를 선택할 때는 위에서 언급한 메모리 사용량 같이 고려해야 할 점이 많습니다. 그래서 사용하려는 벡터 DB의 공식 문서를 읽고, 가능하다면 실제 데이터와 쿼리 패턴으로 테스트한 뒤에 인덱스를 선택하는 것이 가장 좋은 방법 같습니다. 한 가지 예시로 Milvus의 인덱스 선택 가이드가 잘 정리되어 있어서 참고해 보시면 좋을 것 같습니다!

감사합니다.

vercel 배포 관련 문의

0

5

0

새롭게 나온 강의와 어떤 차이가 있을까요?

0

9

0

(261004) 현재 상황 공유

0

12

2

(261004) 본 강의 실습에 대한 현재 상황 공유

0

14

2

에이전트 프로그램 다운로드 불가

0

10

2

앱 게시 불가

0

16

0

ai 레드티밍 자료 및 강의 누락

0

17

1

스크립트 영상 미일치

0

36

3

1.13 다른 부분 정리

0

38

2

아무 수정도 안하고 주어진 소스로 그대로 했는데 패스워드 에러가 남

1

38

1

tdd green agent 에서 문의 드립니다.

0

37

2

처음 실행 시 계속 패스워드가 틀리다고 나옴. 수정하고 해도 마찬가지임

1

48

2

수업자료 관련 문의

0

41

3

1.12 강의랑 실제 진행이랑 조금 다릅니다.

0

64

2

Unit 1.13 — Telegram × Hermes 연동 가이드: 메신저로 에이전트와 대화하기

0

55

2

5강 녹음 소리 ㅠㅠ

0

48

2

github주소가 안보여요. ㅠ

0

51

2

deskrpg 최신 버전에서 게이트웨이 연결이 안됩니다.

0

43

2

카카오톡 sdk 로그인

1

34

1

강의 자료 요청드립니다.

0

40

1

극단적으로 from-to가 12일 이고, valid_to가 13일이면?

0

36

1

서브에이전트

1

34

1

ssh 연결

0

44

1

LLM 서비스의 신뢰성

1

70

1