이 페이지에서는 MongoDB Vector Search 쿼리의 성능을 개선하기 위한 추가 권장 사항을 제공합니다.
충분한 메모리 확보
Hierarchical Navigable Small Worlds 는 벡터 데이터가 메모리에 저장되어 있을 때 효율적으로 작동합니다. 데이터 노드에 벡터 데이터와 인덱스를 저장할 수 있는 충분한 RAM 있는지 확인해야 합니다.데이터 격리 없이 워크로드 격리 위해 별도의 검색 노드를 배포하여 벡터 검색 사용 사례에서 메모리를 보다 효율적으로 사용할 수 있습니다.
| 임베딩 모델 | 벡터 차원 | 공간 요구 사항 | 
|---|---|---|
| Voyage AI  | 2048 | 8kb (for  float)2.14kb (for  int8)0.334kb (for  int1) | 
| OpenAI  | 1536 | 6kb | 
| Google  | 768 | 3kb | 
| Cohere  | 1024 | 4kb (for  float)1.07kb (for  int8)0.167kb (for  int1) | 
BinData 양자화된 벡터. 자세한 내용은 양자화된 벡터 수집을 참조하세요.
MongoDB Vector Search가 소비하는 CPU, 메모리 및 디스크 리소스의 양은 인덱스 크기 및 쿼리 기준 등 여러 요인에 따라 달라집니다. 벡터 검색 상태와 성능을 이해하고 적절한 인프라 용량 확인하고 이상 징후를 식별하려면 환경을 모니터 것이 중요합니다.
다음 지표 사용하여 MongoDB Vector Search 인덱스 및 쿼리의 성능을 관찰하고 개선할 수 있습니다.
시스템 메모리 검색
MongoDB Vector Search 인덱스에서 사용하는 총 RAM 양을 모니터링합니다. 디스크로 이동하는 쿼리는 성능이 훨씬 떨어지므로 충분한 RAM MongoDB Vector Search 쿼리 성능에 매우 중요합니다. 전체 인덱스 가 메모리에 들어갈 수 있는지 확인합니다.
사용 가능한 가 항상 사용된 보다 큰지 System Memory System Memory 확인합니다. 인덱스 자주 쿼리되지 않는 경우 모든 인덱스 메모리에 있지 않을 수 있습니다. 따라서 System Memory 지표를 Index Size 지표와 함께 활용하여 프로비저닝 최적화하세요.
벡터 인덱스 크기가 3 GB 초과하는 경우 전체 인덱스 아닌 인덱스 의 4%만 메모리에 저장하는 벡터 양자화를 권장합니다.
검색 인덱스 크기
디스크에 있는 모든 인덱스의 총 크기(바이트)를 모니터링합니다. 이는 RAM 요구 사항의 크기를 정확하게 지정했는지 확인하는 데 필요합니다.
디스크 메트릭에서 Index Size 검색 메트릭을 확인하여 100벡터의 %가 메모리에 저장되어 있는 경우 전체 인덱스 크기가 얼마인지 확인하고 사용 가능한 시스템 메모리보다 작은지 확인합니다.
페이지 오류 검색
선택한 샘플 기간 동안 프로세스 의 초당 평균 페이지 오류 비율을 모니터링합니다. Page Faults 지표는 검색 쿼리 디스크로 이동하는 빈도를 나타내며, 이는 전체 인덱스 메모리에 맞지 않음을 나타냅니다.
이 지표는 가능한 한 0에 가깝게 유지되어야 합니다. 페이지 오류가 지속적으로 표시되면 클러스터 계층 확장 하여 적절한 RAM 프로비저닝하는 것이 좋습니다.
파일 시스템 캐시 워밍업
전용 검색 노드를 사용하지 않고 벡터 검색 수행하는 경우,Hierarchical Navigable Small Worlds 그래프 탐색할 때 쿼리가 처음에 디스크에서 무작위 검색을 수행하고 벡터 값을 메모리로 읽습니다. 검색 노드를 사용할 때 이 캐시 워밍업은 일반적으로 인덱스 다시 작성하는 이벤트 , 일반적으로 예약된 유지 관리 기간 동안에만 발생합니다.
CPU 병목 현상 모니터링
벡터 임베딩은 인덱싱 중에 계산 리소스를 소비합니다. 대규모 데이터 세트에 대한ENN 쿼리는 CPU 리소스를 소비합니다. 따라서 인덱싱 과 쿼리를 동시에 수행하면 리소스 병목 현상이 발생할 수 있습니다. CPU 병목 현상을 방지하려면 쿼리가 실행 중일 때 인덱싱 벡터를 피하세요. 초기 동기화 수행할 때는 테스트 쿼리를 실행하기 전에 검색 노드 CPU 사용량이 0%에 가깝게 반환되는지, 세그먼트가 병합 및 디스크로 플러시되었는지 확인하세요.
인덱싱 많으면 CPU 사용량이 증가하므로 인덱싱 작업 중에 Search Normalized Process CPU 지표를 모니터링합니다. 이 지표는 사용 가능한 CPU 코어 수에 대해 정규화된 백분율로 CPU 사용량을 표시하며, 이를 통해 클러스터의 용량 기준으로 한 리소스 포화도를 평가할 수 있습니다. 벡터 임베딩이 인덱싱된 후 세그먼트 병합 및 플러시가 완료되면 CPU 사용량이 0%에 가까워질 때까지 기다립니다.