PostgreSQL용 AlloyDB의 전체 텍스트 검색 (FTS)을 사용하면 쿼리를 충족하는 자연어 문서를 식별할 수 있습니다. 이 접근 방식은 'the'와 같은 일반적인 불용어를 무시하고 'run', 'running', 'ran'과 같은 다양한 형태의 단어를 일치시키는 등 언어적 뉘앙스를 고려하므로 표준 문자열 일치보다 더 효과적입니다.
AlloyDB는 표준 PostgreSQL GIN 및 GiST 색인 외에도 모든 AlloyDB 지원 PostgreSQL 버전 (PostgreSQL 18 이하)에서 고성능 전체 텍스트 검색을 위한 rum 확장 프로그램과 PostgreSQL 17 이상에서 Best Matching 25 (BM25) 관련성 순위를 제공합니다.
전체 텍스트 검색의 핵심 개념
전체 텍스트 검색 (FTS)을 효과적으로 구현하려면 PostgreSQL이 텍스트를 처리하고 검색하는 방법을 이해해야 합니다. 검색 단위인 문서는 일반적으로 텍스트 열 또는 행의 열 조합입니다. 색인 빌드 프로세스는 이 문서를 파싱하여 단어 (또는 단어의 기본 형식인 어휘소)를 행과 연결합니다.
이 프로세스에는 다음을 통해 원시 텍스트를 검색 가능한 형식으로 변환하는 전처리 파이프라인이 포함됩니다.
- 텍스트를 토큰으로 분할합니다.
- 일반적인 불용어 삭제
- 단어를 어근 형태로 정규화합니다. 예를 들어 'run'은 'run', 'runs', 'running', 'ran'의 어휘소입니다.
전체 텍스트 검색을 사용하려면 특수 데이터 유형, 연산자, 다양한 색인 생성 전략(기본 제공 PostgreSQL 색인 및 고성능 RUM 색인 포함)에 대해서도 알아야 합니다.
PostgreSQL은 두 가지 기본 데이터 유형과 일치 연산자를 사용하여 FTS를 관리합니다.
tsvector: 검색 가능한 형식의 문서를 고유한 어휘소의 정렬된 목록으로 나타냅니다.tsquery: 어휘소를 결합할 수 있는 불리언 연산자를 포함한 검색어를 나타냅니다.@@:tsvector가tsquery와 일치하는지 확인하여 언어 인식 검색을 허용합니다.
AlloyDB는 기본 제공 PostgreSQL에서 지원하는 전체 텍스트 검색의 모든 색인 유형을 지원합니다. 색인 선택은 검색 속도, 색인 빌드 시간, 업데이트 속도, 필요한 특정 검색 기능(예: 구문 검색 또는 관련성 순위 지정) 간의 균형에 따라 달라집니다.
검색 관련성과 정확성을 최적화하기 위해 다음 중에서 선택할 수도 있습니다.
- RUM 색인: 위치 정보를 색인에 직접 저장하여 표준 GIN 색인을 개선하므로 테이블 데이터에 액세스하지 않고도 더 빠른 구문 검색과 관련성 순위 지정을 수행할 수 있습니다. 이 확장 프로그램은 모든 AlloyDB 지원 PostgreSQL 버전 (PostgreSQL 18 이하)에서 지원됩니다. 자세한 내용은 RUM 색인 만들기 및 관리를 참조하세요.
- BM25 색인: 확률적 Best Matching 25 알고리즘을 구현하여 용어 빈도 및 길이 포화를 기준으로 문서의 순위를 지정하고 업계 표준 키워드 검색 유형 정밀도를 제공합니다. 이 확장 프로그램은 PostgreSQL 17 이상에서 지원됩니다. 자세한 내용은 BM25 색인 만들기 및 관리를 참조하세요.
전체 텍스트 검색과 시맨틱 검색 결합
가장 강력한 검색 구현은 RUM 색인과 벡터 검색을 사용하는 전체 텍스트 검색을 결합하는 경우가 많습니다. 하이브리드 검색을 사용하여 시맨틱 이해와 정확한 키워드 검색 유형의 장점을 결합하고, 고유한 결과 집합을 병합하여 종합적인 순위를 매깁니다.
예를 들어 이커머스 애플리케이션에서 먼저 RUM과 함께 전체 텍스트 검색을 사용하여 '러닝화'와 같은 특정 키워드가 포함된 제품을 찾고 벡터 검색을 사용하여 '장거리 훈련용 편안한 신발'과 같은 사용자의 더 상세한 쿼리와의 시맨틱 유사성을 기반으로 결과를 찾을 수 있습니다. 그런 다음 데이터베이스는 Reciprocal Rank Fusion (RRF) 알고리즘을 사용하여 두 검색 구성요소의 순위가 지정된 결과를 단일 통합 목록으로 융합하여 최종 순위를 생성합니다.
이 하이브리드 접근 방식을 사용하는 방법에 대한 자세한 내용은 하이브리드 벡터 유사성 검색 실행을 참조하세요.
다음 단계
- RUM 색인을 만들고 쿼리하는 방법 알아보기
- BM25 색인 만들기 및 관리 방법 알아보기
- 하이브리드 벡터 유사성 검색을 실행하는 방법 알아보기