검색 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 방지하는 것도 도움이 . 

+ Recent posts