바이 인코더 (초기 필터링)도서관에서 "인공지능 입문" 책을 찾는다고 가정해보겠습니다.바이 인코더는 마치 도서관의 '분류 카드' 같은 역할을 합니다예를 들어 100만권의 책 중에서 "인공지능", "컴퓨터", "프로그래밍" 관련된 책 1000권 정도를 빠르게 추려냅니다정
기본 개념도서관 책 찾기로 비유하면:검색 과정:장점:실제 활용 예시:삽입/삭제 예시:실생활 비유:이처럼 스킵 리스트는 여러 층의 리스트를 만들어서 빠른 검색을 가능하게 하는 자료구조입니다. 각 층에서 건너뛰기가 가능해 효율적인 검색이 가능합니다.
HNSW는 스킵 리스트의 개념을 확장해서 사용합니다.기본 구조 차이:연결 방식 차이:검색 방식 차이:실제 활용 예시:장단점 비교:실제 검색 예시:확장성 차이:이처럼 HNSW는 스킵 리스트의 개념을 차용하되, 다차원 데이터를 더 효율적으로 처리할 수 있도록 확장한 구조입
네이버 쇼핑의 "비슷한 상품 찾기"를 예로 설명기본 구조:상품 추가 과정:검색 과정:거리 계산 방법:장점:실제 활용:이처럼 HNSW는 계층적 구조와 효율적인 검색 방식을 통해 대규모 데이터에서도 빠르고 정확한 검색을 가능하게 합니다.
HNSW의 레벨 결정 과정기본 원리 (동전 던지기):수학적 계산:실제 구현 예시:동적 조정:실제 예시:레벨별 특성:주의사항:이렇게 HNSW는 확률적인 방법과 동적 조정을 통해 효율적인 계층 구조를 만들고 유지합니다.
실제 코드HNSW의 기본 개념:도서관에서 책을 찾는 과정으로 비유하면:일반 KNN: 모든 책장을 하나씩 둘러보며 찾기HNSW: 1층: 대표 도서 몇 권만 있는 안내데스크2층: 주요 분류별 책장3층: 모든 도서가 있는 책장이렇게 계층적으로 검색하여 빠르게 찾는 방식코드
efConstruction: 그래프 구축 시 탐색할 이웃의 수값이 클수록 더 많은 이웃을 탐색하여 정확한 그래프를 구축실제 예상 결과:이 결과에서 알 수 있는 점:1\. efConstruction이 증가할수록:색인 시간 증가 (더 많은 이웃 탐색)정확도(Recall)
이 코드는 HNSW에서 검색 시 탐색할 이웃의 수(efSearch)를 변경하며 성능을 테스트하는 코드입니다.실제 검색 과정 예시:efSearch = 16인 경우:efSearch = 64인 경우:예상되는 전체 결과:주요 특징:1\. efSearch가 증가할수록:더 많은
RAG 평가의 필요성예를 들어, 의료 분야에서 "코로나19의 초기 증상은 무엇인가요?"라는 질문이 들어왔다고 가정해보겠습니다. RAG 시스템은:관련 의학 문서를 검색하고검색된 정보를 바탕으로 답변을 생성합니다이때 시스템의 성능을 세 가지 측면에서 평가해야 합니다:평가