Neural sparse search
출처: 문서
본문
신경망 희소 검색
2.11에서 도입됨 {: .label .label-purple }
시맨틱 검색은 텍스트 임베딩 모델을 기반으로 하는 밀집 검색에 의존합니다. 하지만 밀집 방식은 k-NN 검색을 사용하므로 많은 메모리와 CPU 리소스를 소모합니다. 시맨틱 검색의 대안으로 신경망 희소 검색은 역색인을 사용하여 구현되므로 BM25만큼 효율적입니다. 신경망 희소 검색은 희소 임베딩 모델을 통해 이루어집니다. 신경망 희소 검색을 수행하면 희소 벡터(항목과 가중치를 나타내는 token: weight 키-값 쌍의 목록)를 생성하고 데이터를 rank features 인덱스에 수집합니다.
검색 관련성을 더 높이기 위해 하이브리드 쿼리를 사용하여 신경망 희소 검색을 밀집 시맨틱 검색과 결합할 수 있습니다.
다음과 같은 방법으로 신경망 희소 검색을 구성할 수 있습니다.
- 벡터 임베딩 자동 생성: 수집 파이프라인을 구성하여 문서 텍스트에서 희소 벡터 임베딩을 생성하고 수집 시점에 저장합니다. 쿼리 시점에는 일반 텍스트를 입력하면 검색을 위해 자동으로 벡터 임베딩으로 변환됩니다. 전체 설정 단계는 희소 벡터 임베딩 자동 생성을 참조하세요.
- 원시 희소 벡터를 수집하고 희소 벡터를 직접 사용하여 검색합니다. 전체 설정 단계는 원시 벡터를 사용한 신경망 희소 검색을 참조하세요.
신경망 희소 검색을 위해 긴 텍스트를 구절로 나누는 방법에 대한 자세한 내용은 텍스트 청킹을 참조하세요.
신경망 희소 검색 가속화
neural_sparse_two_phase_processor를 사용하여 검색 파이프라인을 생성하면 검색 프로세스를 크게 가속화할 수 있습니다.
신경망 희소 검색을 위한 2단계 프로세서가 있는 검색 파이프라인을 생성하려면 다음 요청을 사용하세요.
PUT /_search/pipeline/two_phase_search_pipeline
{
"request_processors": [
{
"neural_sparse_two_phase_processor": {
"tag": "neural-sparse",
"description": "Creates a two-phase processor for neural sparse search."
}
}
]
}
{% include copy-curl.html %}
그런 다음 검색 파이프라인으로 구성할 인덱스를 선택하고 index.search.default_pipeline을 파이프라인 이름으로 설정합니다. 다음 예제와 같습니다.
PUT /my-nlp-index/_settings
{
"index.search.default_pipeline" : "two_phase_search_pipeline"
}
{% include copy-curl.html %}
two_phase_search_pipeline에 대한 자세한 내용은 신경망 희소 쿼리 2단계 프로세서를 참조하세요.
텍스트 청킹
임베딩을 생성하기 전에 큰 문서를 더 작은 구절로 나누는 방법에 대한 자세한 내용은 텍스트 청킹을 참조하세요.
신경망 희소 ANN 검색
3.3에서 도입됨 {: .label .label-purple }
높은 쿼리 재현율(>0.9)로 더 나은 쿼리 성능을 얻기 위해 신경망 희소 근사 최근접 이웃(ANN) 검색을 실행할 수 있습니다. 자세한 내용은 신경망 희소 ANN 검색을 참조하세요.
sparse_vector 필드에 대해 Lucene 엔진(기본값)과 네이티브 엔진 중에서 선택할 수 있습니다. 필드 매핑에서 엔진을 선택하며, 쿼리 구문은 동일합니다. 자세한 내용은 엔진을 참조하세요.
추가 자료
- 희소 인코딩 모델의 작동 방식과 OpenSearch 신경망 희소 검색 벤치마크에 대해 자세히 알아보려면 희소 시맨틱 인코더를 사용한 문서 검색 개선을 참조하세요.
- 신경망 희소 검색의 기본 원리와 효율성을 알아보려면 OpenSearch 2.12에서 더 빠른 시맨틱 희소 검색에 대한 심층 분석을 참조하세요.
- AI 검색 애플리케이션을 구축하는 방법을 알아보려면 튜토리얼을 살펴보세요.