추천 시스템을 구축하는 과정은 종종 복잡하고 비효율적입니다. 다양한 데이터베이스(DB)와 검색 엔진에 흩어진 데이터를 활용해야 하는데, 각 시스템마다 검색 및 랭킹 방식이 달라 개발팀은 매번 수백 줄의 코드를 수동으로 작성해야 했습니다. 이러한 문제를 해결하기 위해, 새로운 휴대용 쿼리 언어인 RecQL(Recommender Query Language)이 등장했습니다. RecQL은 개발자가 단일 쿼리로 전체 추천 파이프라인을 구축하고 실행할 수 있도록 지원하며, 기존에 사용하던 DB 위에서 바로 작동합니다.
RecQL은 데이터베이스 종류에 구애받지 않고 추천, 개인화, 순위 검색을 위한 쿼리를 작성할 수 있게 해줍니다. 후보 검색(candidate retrieval), 필터링, 점수 매기기(scoring), 랭킹(ranking), 재정렬(reordering) 등 추천 시스템의 핵심 단계를 하나의 쿼리로 표현할 수 있으며, 여러 시스템에 분산된 데이터를 혼합하여 사용할 수도 있습니다. 예를 들어, 텍스트 검색(어휘적/의미론적)과 사용자 취향 기반 유사성 검색을 결합하고, 재고 여부로 필터링한 뒤, 다양성(diversity)을 고려하여 최종 순위를 매기는 복잡한 로직을 단 한 줄의 RecQL 쿼리로 구현할 수 있습니다. 이는 기존에 백엔드 시스템을 바꿀 때마다 파이프라인을 재구축해야 했던 비효율을 제거합니다.
RecQL의 가장 큰 장점은 '휴대성(portability)'입니다. RecQL 쿼리는 Postgres, MySQL, MongoDB, Snowflake, Elasticsearch 등 다양한 관계형 및 NoSQL DB의 네이티브 전문 검색 및 벡터 검색 기능으로 컴파일됩니다. 덕분에 개발팀은 특정 DB나 검색 엔진에 종속되지 않고, 동일한 쿼리를 여러 백엔드에서 재작성 없이 실행할 수 있습니다. 이는 개인화된 'For You' 피드, 하이브리드 검색, 다양성 재정렬 등 다양한 추천 및 검색 시나리오를 훨씬 빠르고 유연하게 구현할 수 있도록 돕습니다. RecQL은 개발자들이 추천 시스템 구축에 드는 시간과 노력을 획기적으로 줄여, 핵심 비즈니스 로직에 더 집중할 수 있도록 지원할 것입니다.