logo

임베딩 검색

  • 유사도를 이용한 검색은 시간이 오래 걸림
    • 유사도 계산: → 문서 수에 비례하여 시간 증가
    • 유사도 순으로 정렬: → 문서 수가 늘 수록 시간이 크게 증가
  • 인덱싱을 하면 검색 속도를 높일 수 있음
  • ANN: 정확도를 감소시키는 대신, 검색 속도를 높이는 방법

Product Quantization

  • 큰 실수 벡터를 작은 정수 벡터로 표현하는 방법
  • 방법:
    • 하나의 큰 벡터를 작은 서브벡터들로 자름
    • 각각의 서브벡터를 클러스터링하여, 클러스터링 번호로 대체

큰 실수 벡터를 서브벡터로 나눈 뒤 클러스터 번호로 압축하는 Product Quantization 도식

트리를 이용한 문서 검색

  • 공간을 무작위로 분할 → 트리(tree)로 만듦
  • 문서를 찾을 때 트리의 같은 말단(terminal)에 있는 문서를 비슷한 문서로 판정
  • 위와 같은 트리를 여러 개 만들어 포레스트(forest)를 구성
  • 여러 트리의 결과를 합쳐서 비슷한 문서들을 찾음

해시를 이용한 문서 검색

  • 해시 함수(hash function): 데이터를 고정된 크기의 값으로 매핑하는 함수(예: 나머지)
  • 랜덤 투영(random projection): 랜덤하게 만든 행렬을 곱하여 작은 차원으로 투영한다 → 축별로 +면 1, -면 0으로 변환한다 → 이진수로 변환한다
  • Locally Sensitive Hashing: 비슷한 데이터를 쉽게 찾기 위한 해싱 방법
  • 비슷한 데이터는 비슷한 해시값을 갖도록 하는 방법을 여러 번 적용
  • 하나라도 일치하면 비슷한 데이터로 판정

위계적 탐색가능한 작은 세상 네트워크

  • Hierarchical Navigable Small Worlds Network
  • 1960년대 심리학자 스탠리 밀그램의 실험: 멀리 떨어진 지역의 모르는 사람에게 편지를 전달 → 5~6단계만에 가능
  • 작은 세상 네트워크: 주로 가까운 점과 연결되어 있지만, 멀리 떨어진 점들과도 일정 비율 연결된 형태
  • 탐색 가능한: 네트워크의 전체 구조를 모르더라도 최대한 가까운 방향으로 이동하면 짧은 경로로 도달 가능
  • 위계적: 연결된 거리에 따라 단계적으로 구성

HNSW에서 위계적 네트워크를 따라 query vector에서 nearest neighbor로 탐색하는 도식

벡터 데이터베이스 Vector Database

chroma

  • 오픈소스 in-memory 벡터 데이터베이스
  • Python으로 구현
  • HNSW 지원(hnswlib 기반)
  • 메타데이터와 검색 조건 지정도 가능
  • ChatGPT의 등장으로 AI 서비스 개발에 활발하게 사용

벡터 데이터베이스의 기능

  • 데이터 관리: 데이터 삽입, 삭제 및 업데이트 등 벡터 데이터를 쉽게 관리하고 유지
  • 메타데이터: 각 벡터 항목과 관련된 메타데이터를 저장/검색
  • 확장성: 데이터 볼륨과 사용자 요구에 따라 확장, 분산 및 병렬 처리
  • 실시간 업데이트: 실시간 데이터 업데이트, 데이터 동적 변경
  • 백업
  • 에코시스템: ETL, 분석도구, 시각화 플랫폼, 다른 AI 도구등과 쉽게 통합
  • 데이터 보안 및 접근 제어
Previous
이미지 임베딩