RediSearch
무엇인가
RediSearch는 Redis 위에서 동작하는 쿼리·인덱싱 엔진이다. 데이터 저장소 자체를 대체하지 않고, Redis 해시에 선언한 인덱스를 통해 보조 인덱스·전문 검색·집계·벡터 검색을 같은 프로세스 안에서 처리한다. Redis 8부터는 코어에 통합되어 별도 모듈로 배포되지 않는다.
어떻게 동작하나
인덱스는 Redis 해시의 필드를 대상으로 선언한다. 모듈은 해당 필드 값에서 압축된 역색인(inverted index)을 만들어 메모리에 유지하고, 문서가 추가·변경될 때마다 증분 갱신한다. 질의는 불리언 연산자(AND/OR/NOT), 접두사·퍼지·정확 구문 매칭, 숫자 범위 필터, 지오셰이프, 벡터 KNN·필터드 KNN·범위 질의를 지원한다. 결과 순위는 기본 BM25로 계산하며 필드별 가중치를 지정할 수 있다. 형태소 처리는 Snowball 어간 추출, 중국어 토큰화는 Friso, 음성 매칭은 double-metaphone을 사용한다. 집계 엔진은 검색 결과를 그룹화·변환해 반환한다.
무엇과 다른가
별도 검색 엔진을 Redis 옆에 두는 구성과 달리, 인덱스가 Redis 프로세스 안에 있고 원본 문서도 Redis 해시에 그대로 남는다. 검색 엔진으로 데이터를 복제·동기화하는 파이프라인이 필요 없다. Redis의 키 순회는 패턴 매칭만 가능하고 필드 값 조건으로 후보를 좁힐 수 없는데, RediSearch는 역색인으로 대상을 먼저 추린다.
어떻게 쓰나
Redis 8 이상에서는 모듈이 이미 포함되어 있어 별도 설치 과정이 없다. 이전 버전에서는 redis.conf의 loadmodule 지시자나 서버 기동 옵션으로 모듈을 적재한다. 이후 해시 필드에 인덱스를 선언하고 RediSearch 질의 언어로 검색·집계를 실행한다. redis-cli를 포함한 Redis 클라이언트가 같은 명령을 전송한다.
전제와 한계
32비트 시스템은 지원하지 않는다. 독립 실행 버전은 더 이상 릴리스되지 않고 Redis 8 이상에 포함된 형태로만 제공된다. 수백 대 서버에 걸쳐 수십억 문서로 확장하는 분산 클러스터 버전은 Redis Cloud와 Redis Enterprise Software에서만 쓸 수 있다. Redis 8부터 라이선스는 RSALv2, SSPLv1, AGPLv3 중 선택이며 이전 버전은 RSALv2와 SSPLv1을 따른다.
유사 도구
- paradedbPostgres에 커스텀 인덱스를 추가해 전문 검색·벡터 검색·집계를 한 데이터베이스 안에서 처리하는 Rust 확장이다. 별도 검색 시스템을 두지 않는다.
- meilisearchRust로 작성된 검색 엔진 서버다. 전문 검색과 시맨틱 검색을 결합한 하이브리드 검색을 RESTful HTTP API로 제공한다.
- orama브라우저·서버·엣지에서 도는 TypeScript 검색 엔진 라이브러리다. 전문 검색·벡터 검색·하이브리드 검색을 2KB 미만 코어로 처리한다.
- pgvectorPostgres에 벡터 컬럼 타입과 거리 연산자, 근사 최근접 이웃 인덱스를 추가하는 C 확장이다. HNSW와 IVFFlat으로 유사도 검색을 SQL 안에서 처리한다.
- databendRust로 작성된 오픈소스 엔터프라이즈 데이터 웨어하우스다. S3 위에서 분석·벡터 검색·전문 검색을 한 엔진에 통합하고, 샌드박스 UDF로 에이전트 로직을 격리 실행한다.
- helix-db그래프와 벡터를 한 엔진에 담은 Rust OLTP 데이터베이스다. 객체 스토리지 위에서 동작하며 벡터·전문 검색을 내장하고 KV·문서·관계형 데이터도 함께 다룬다.