검색 Quality 에 영향을 줄 수 있는 요인:
- kNN 검색에서 num_candidates
- Rescoring (인덱스를 양자와 하는 경우에 해당)
- rff (license issue 가 필요함.)
- Filtered kNN Search 적용
- Boost 값 조절
- Combine Semantic Search (Embedding 모델 배포해야함, License 필요.)
- 다중 kNN 필드 검색
- Similarity 파라미터로 최소 유사도를 지정하는 것. (하한 설정)
- Text Chunking 을 해서 ES 에 저장하고 이를 활용하는 것. (매칭 되었을 때 Passage 를 추출하는 방법인 inner hits 를 이용하는 것과, 문서 전체를 이용하는 방법이 있음.)
검색 Speed 에 영향을 줄 수 있는 요인:
- Vector Dimensions 관리 (벡터 차원을 축소 시키면 더 빠른 검색이 됨, 늘리면 더 퀄리티 있는 검색이 됨)
- 검색된 문서를 반환할 때 dense_vector 필드를 제외시키는 것. 검색에만 사용하면 됨.
- HNSW 검색을 하기 위해서는 충분한 메모리가 필요함. 필요한 메모리의 대략적인 추측은 num_vectors * 4 (num_dimensions + 12) 을 하면 된다.
- Warm Up 으로 특정한 확장자를 가진 파일을 미리 로딩해놓는 방법
- Index Segment 관리. 기본적으로 Segment 수만큼 병렬 검색함. 그래서 Segment 수를 적절하게 줄여놓는게 빠른 검색을 위해서 도움이 됨.
- Indexing 이 빈번하게 된다면 Search 에 영향을 줌. HNSW 인덱스 생성은 리소스 사용량이 크기 때문.
- 블록디바이스의 readahead 값 설정으로 페이지 캐시의 thrashing 을 방지하는 것도 도움이 됨.
'Elasticsearch' 카테고리의 다른 글
Elasticsearch: Hybrid Search Optimization Tips (0) | 2024.08.12 |
---|---|
Elasticsearch: Ingest Pipelines (0) | 2024.08.06 |
Elasticsearch: Dense vector field type (0) | 2024.08.05 |
Elasticsearch: kNN Methods (0) | 2024.08.02 |
Elasticsearch: 벡터 유사도 메트릭(similarity metric) (0) | 2024.08.02 |