FTS와 벡터 검색

개요 Class S를 만들었던 지난 하이브리드 검색 글에서는 텍스트를 토큰으로 나눠 검색하는 FTS 방식과, 임베딩 모델을 거쳐 수치로 표현해 비교하는 벡터 검색 방식을 사용했습니다. 전에는 이 두 방식을 로직 흐름으로 짧게 지나갔지만, 이번에는 더 면밀히 봐봅시다. FTS FTS는 Full Text Search입니다. LIKE '%키워드%'보다 키워드와 토큰 검색에 적합하고, 보통 tsvector, tsquery, GIN index를 조합해서 사용합니다. ※ ts: Text Search의 약어 tsvector: PostgreSQL의 데이터 타입으로, 문서를 검색 가능한 토큰 형태로 표현합니다 tsquery: PostgreSQL의 데이터 타입으로, 검색 조건을 표현합니다. plainto_tsquery(), to_tsquery() 같은 함수가 tsquery 값을 만듭니다 GIN index: tsvector의 토큰을 빠르게 찾기 위한 인덱스 구조입니다 GIN은 역인덱스(Inverted Index) 구조를 사용합니다. 일반적인 저장이 행 → 토큰이라면, 역인덱스는 이를 뒤집어 토큰 → 해당 토큰이 들어 있는 인덱스(행 위치) 목록으로 저장합니다. ...

August 12, 2026 · 10 min · DSeung001