Computer >> 컴퓨터 >  >> 프로그래밍 >> Redis

Redis 벡터 유사성 검색(VSS) 완벽 가이드: 개념부터 시작 방법까지

Redis 벡터 유사성 검색(VSS), 공개 프리뷰 출시

Redis는 RedisDays NY 2022에서 새로운 벡터 유사성 검색(Vector Similarity Search, VSS) 기능의 공개 프리뷰를 발표했습니다. VSS는 RediSearch 2.4에 포함되어 있으며, Docker, Redis Stack, 그리고 Redis Enterprise Cloud의 무료 및 고정(fixed) 요금제에서 바로 사용할 수 있습니다.

이 글에서는 벡터 유사성의 기본 개념과 다양한 활용 분야를 살펴보고, Redis VSS를 시작하는 데 도움이 되는 리소스까지 함께 소개합니다.

벡터 유사성이란 무엇일까요?

간단히 말해, 벡터 유사성은 두 개 이상의 벡터가 얼마나 비슷한지(혹은 다른지)를 측정하는 척도입니다. 여기서 벡터는 숫자들의 목록이라고 생각하면 이해하기 쉽습니다.

벡터 유사성 검색은 왜 주목받고 있을까요?

벡터 검색의 핵심은 오디오, 자연어, 이미지, 영상 클립, 음성 녹음 등 다양한 유형의 데이터를 기반으로 정보를 검색할 수 있다는 점입니다. 구조화되지 않은 데이터(unstructured data)를 대상으로 검색할 수 있다는 점에서, VSS는 고급 유사성 검색 경험을 구축하기 위한 핵심 기반 기술로 자리 잡고 있습니다.

내 데이터의 벡터는 어떻게 생성되나요?

AI 기술의 발전으로 데이터 과학자들은 거의 모든 데이터 '엔티티(entity)'를 벡터 표현으로 변환하는 모델을 만들 수 있게 되었습니다. 여기서 엔티티란 트랜잭션, 사용자 프로필, 이미지, 소리, 긴 텍스트(문장 또는 단락), 시계열(time series), 그래프 등 무엇이든 될 수 있습니다. 이러한 데이터는 모두 '특징 벡터(feature vector)', 즉 임베딩(embedding)으로 변환될 수 있습니다.

임베딩은 무엇을 의미하나요?

벡터 임베딩은 데이터를 숫자로 표현한 것입니다. 컴퓨터와 데이터베이스가 손쉽게 비교할 수 있는 형태로 엔티티의 가장 본질적인 특징을 담아냅니다. 흥미로운 점은, 어떤 모델이 두 엔티티에 대해 서로 비슷한 임베딩(벡터)을 생성했다면, 원래 두 엔티티도 근본적으로 유사하다고 추론할 수 있다는 것입니다.

임베딩 생성에 꼭 데이터 과학자여야 할까요?

전혀 그렇지 않습니다! 텍스트, 이미지, 시계열 데이터에서 임베딩을 생성할 수 있게 해주는 무료 AI 모델과 라이브러리가 여럿 있습니다. 대표적인 예는 다음과 같습니다.

  • HuggingFace Sentence Transformers: 문장 임베딩 생성
  • Img2Vec: 이미지 임베딩 생성
  • Facebook Kats: 시계열 데이터 임베딩 생성

AI/ML 실무자라면 데이터 엔티티에 대한 '밀집(dense)' 특징 표현, 즉 임베딩을 생성하는 개념이 익숙할 것입니다. 이제 이러한 특징 벡터를 Redis에 저장하고 유사성 검색을 수행할 수 있습니다.

벡터 유사성 검색으로 어떤 애플리케이션을 만들 수 있을까요?

우리가 일상에서 접하는 여러 애플리케이션이 이미 벡터 유사성 검색에 기반하고 있습니다. 이커머스 웹사이트의 비주얼 검색부터 자동화된 챗봇·Q&A 시스템, 각종 추천 시스템까지 그 범위는 매우 넓습니다. 실시간으로 유사성을 파악하는 것이 가치 창출의 핵심인 애플리케이션이라면 어디에서든 VSS가 유용하게 쓰일 수 있습니다. 대표적인 활용 사례는 다음과 같습니다.

  • 이커머스 추천: 비주얼 유사성 및/또는 의미적 유사성을 활용해 고급 검색 경험과 상품 추천 제공
  • 의미적 유사성: 정교한 검색 경험, 챗봇, 질의응답(Q&A) 시스템 구축
  • 시계열 데이터 유사성: 질병 확산 패턴의 유사성 발견, 과거 패턴의 유사성을 기반으로 한 매매 기회 포착
  • 그래프 데이터 유사성: 서로 다른(무관해 보이는) 행위자 집단이나 네트워크 간의 유사한 연결 패턴 도출
  • 트랜잭션 유사성: 이전에 탐지된 사기·위협 시도와의 유사성을 기반으로 잠재적 사기나 위협 감지
  • 사용자 프로필·상품 유사성: 개인화된 추천 생성, 임베딩 데이터에서 드러난 패턴을 기반으로 한 고객 세분화 고도화

Redis는 벡터 유사성 검색을 어떻게 구현하나요?

RediSearch는 Redis 해시(hash) 또는 JSON 형식으로 저장된 Redis 데이터에 대해 쿼리 기능, 보조 인덱싱, 전문(full-text) 검색을 제공하는 Redis 모듈입니다. RediSearch 2.4부터 벡터 유사성 검색이 지원됩니다.

RediSearch 2.4를 사용하면 Redis 개발자는 다음 작업을 수행할 수 있습니다.

  • Redis 해시에 BLOB 형태로 저장된 벡터 데이터 인덱싱 및 쿼리
  • FLAT와 HNSW라는 두 가지 대표적인 인덱싱 방식 사용
  • 코사인(cosine), 내적(internal product), 유클리드 거리(euclidean distance) 세 가지 일반적인 벡터 거리 메트릭 사용
  • 벡터 유사성과 GEO, NUMERIC, TAG, TEXT 데이터에 대한 기존 RediSearch 필터링 기능을 결합한 하이브리드 쿼리 수행 — 이커머스에서 흔한 예로 "특정 지역에서 구매 가능하고 가격대 내에 있는 상품 중, 주어진 쿼리 이미지와 시각적으로 유사한 아이템 찾기"가 있습니다.

직접 체험해 볼 수 있는 데모가 있나요?

Python에 익숙하다면 다음 데모를 직접 실행해 보세요.

  • 공개 Amazon 데이터셋을 활용한 비주얼·의미적 유사성 검색
  • 금융 뉴스 기사 대상 감성 분석 및 의미적 유사성 분석

Java 개발자라면 인덱스 생성, 데이터 로드, 쿼리 실행 과정을 보여주는 기본 데모를 참고할 수 있습니다.

더 알아보려면?

다음 두 가지 RedisDays 2022 세션 다시 보기를 추천합니다.

  • 키노트(Keynote): 금융 서비스 애플리케이션에 실시간 AI 적용하기
  • 비하인드 더 신(Behind the Scenes): AI로 기업 공시에 숨겨진 매매 신호 찾아내기

두 세션 모두 온디맨드로 시청할 수 있으며, RediSearch 문서의 "Working with Vectors" 섹션에서 관련 내용을 언제든 확인할 수 있습니다.

어떻게 시작하면 될까요?

RediSearch 2.4가 포함된 Redis 데이터베이스를 만드는 방법은 크게 세 가지입니다.

  1. Docker: 터미널에서 다음 명령어 실행
    docker run -p 6379:6379 redislabs/redisearch:2.4.5
  2. Redis Stack: macOS에서는 brew install redis-stack 실행. 다른 운영체제는 "Getting started with Redis Stack" 문서 참고
  3. Redis Enterprise Cloud: 무료 구독 생성

Redis Enterprise Cloud 구독을 선택한다면 반드시 "Redis Stack" 옵션을 선택하세요. 이 옵션에 RediSearch 2.4가 포함되어 있습니다.