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