k-NN API
출처: 문서
본문
k-NN API
OpenSearch는 벡터 워크로드를 관리, 모니터링, 최적화하기 위한 여러 k-nearest neighbors(k-NN) API를 제공해요.
Stats
k-NN stats API는 벡터 검색 기능을 구현하는 k-NN 플러그인의 현재 상태에 대한 정보를 제공해요. 여기에는 클러스터 수준 통계와 노드 수준 통계가 모두 포함돼요. 클러스터 수준 통계는 클러스터 전체에 대해 하나의 값을 가져요. 노드 수준 통계는 클러스터 내 각 노드에 대해 하나의 값을 가져요. 다음 예시에서 볼 수 있듯이 nodeId와 statName으로 쿼리를 필터링할 수 있어요:
GET /_plugins/_knn/nodeId1,nodeId2/stats/statName1,statName2
{% include copy-curl.html %}
응답 본문 필드
다음 표는 사용 가능한 응답 본문 필드를 나열한 거예요.
| 필드 | 설명 |
|---|---|
circuit_breaker_triggered |
서킷 브레이커가 작동했는지 여부를 나타내요. 이 통계는 근사 k-NN 검색에만 해당돼요. |
total_load_time |
k-NN이 네이티브 라이브러리 인덱스를 캐시에 로드하는 데 걸린 시간(나노초)이에요. 이 통계는 근사 k-NN 검색에만 해당돼요. |
eviction_count |
메모리 제약이나 유휴 시간 때문에 캐시에서 축출된 네이티브 라이브러리 인덱스의 수예요. 이 통계는 근사 k-NN 검색에만 해당돼요. 참고: 인덱스 삭제로 인해 발생하는 명시적 축출은 집계되지 않아요. |
hit_count |
캐시 히트 횟수예요. 캐시 히트는 사용자가 이미 메모리에 로드된 네이티브 라이브러리 인덱스를 쿼리할 때 발생해요. 이 통계는 근사 k-NN 검색에만 해당돼요. |
miss_count |
캐시 미스 횟수예요. 캐시 미스는 사용자가 아직 메모리에 로드되지 않은 네이티브 라이브러리 인덱스를 쿼리할 때 발생해요. 이 통계는 근사 k-NN 검색에만 해당돼요. |
graph_memory_usage |
노드에서 네이티브 라이브러리 인덱스가 사용 중인 네이티브 메모리의 양(킬로바이트)이에요. |
graph_memory_usage_percentage |
노드에서 네이티브 라이브러리 인덱스가 사용 중인 네이티브 메모리의 양을 최대 캐시 용량에 대한 백분율로 나타낸 값이에요. |
graph_index_requests |
문서의 knn_vector 필드를 네이티브 라이브러리 인덱스에 추가하는 요청의 수예요. |
graph_index_errors |
문서의 knn_vector 필드를 네이티브 라이브러리 인덱스에 추가하는 요청 중 오류가 발생한 요청의 수예요. |
graph_query_requests |
수행된 네이티브 라이브러리 인덱스 쿼리의 수예요. |
graph_query_errors |
오류가 발생한 네이티브 라이브러리 인덱스 쿼리의 수예요. |
knn_query_requests |
수신된 k-NN 쿼리 요청의 수예요. |
cache_capacity_reached |
knn.memory.circuit_breaker.limit에 도달했는지 여부예요. 이 통계는 근사 k-NN 검색에만 해당돼요. |
load_success_count |
k-NN이 네이티브 라이브러리 인덱스를 캐시에 성공적으로 로드한 횟수예요. 이 통계는 근사 k-NN 검색에만 해당돼요. |
load_exception_count |
네이티브 라이브러리 인덱스를 캐시에 로드하려다 예외가 발생한 횟수예요. 이 통계는 근사 k-NN 검색에만 해당돼요. |
indices_in_cache |
knn_vector 필드가 있고 근사 k-NN이 켜져 있는 각 OpenSearch 인덱스에 대해, 이 통계는 해당 OpenSearch 인덱스가 보유한 네이티브 라이브러리 인덱스의 수와 이 인덱스가 사용 중인 총 graph_memory_usage(킬로바이트 단위)를 제공해요. |
script_compilations |
k-NN 스크립트가 컴파일된 횟수예요. 이 값은 보통 1 또는 0이어야 하지만, 컴파일된 스크립트를 담고 있는 캐시가 가득 차면 k-NN 스크립트가 다시 컴파일될 수 있어요. 이 통계는 k-NN 스코어링 스크립트 검색에만 해당돼요. |
script_compilation_errors |
스크립트 컴파일 중 발생한 오류의 수예요. 이 통계는 k-NN 스코어링 스크립트 검색에만 해당돼요. |
script_query_requests |
스크립트 쿼리의 총 수예요. 이 통계는 k-NN 스코어링 스크립트 검색에만 해당돼요. |
script_query_errors |
스크립트 쿼리 중 발생한 오류의 수예요. 이 통계는 k-NN 스코어링 스크립트 검색에만 해당돼요. |
nmslib_initialized |
nmslib JNI 라이브러리가 노드에서 로드되고 초기화됐는지 여부를 나타내는 부울 값이에요. |
faiss_initialized |
faiss JNI 라이브러리가 노드에서 로드되고 초기화됐는지 여부를 나타내는 부울 값이에요. |
model_index_status |
모델 시스템 인덱스의 상태예요. 유효한 값은 red, yellow, green이에요. 인덱스가 존재하지 않으면 이 값은 null이에요. |
indexing_from_model_degraded |
모델을 사용한 인덱싱이 성능 저하 상태에 있는지 여부를 나타내는 부울 값이에요. 모델을 캐시하기에 JVM 메모리가 충분하지 않을 때 발생해요. |
ing_requests |
해당 노드로 전송된 훈련 요청의 수예요. |
training_errors |
노드에서 발생한 훈련 오류의 수예요. |
training_memory_usage |
노드에서 훈련이 사용 중인 네이티브 메모리의 양(킬로바이트)이에요. |
training_memory_usage_percentage |
노드에서 훈련이 사용 중인 네이티브 메모리의 양을 최대 캐시 용량에 대한 백분율로 나타낸 값이에요. |
일부 통계는 이름에 graph를 포함하고 있어요. 이 경우 graph는 native library index와 같은 의미예요. graph라는 용어는 플러그인이 계층적 그래프로 구성된 HNSW 알고리즘만 지원하던 시절을 반영한 거예요. {: .note}
원격 인덱스 빌드 통계
3.0에 도입됨 {: .label .label-purple }
원격 인덱스 빌드를 구성했다면 응답에 추가 필드가 포함돼요. 다음 표는 사용 가능한 원격 인덱스 빌드 통계 응답 본문 필드를 나열한 거예요.
| 필드 | 설명 |
|---|---|
repository_stats.read_success_count |
리포지토리에서 성공한 읽기 작업의 수예요. |
repository_stats.read_failure_count |
리포지토리에서 실패한 읽기 작업의 수예요. |
repository_stats.successful_read_time_in_millis |
성공한 읽기 작업에 소요된 총 시간(밀리초)이에요. |
repository_stats.write_success_count |
리포지토리에 성공한 쓰기 작업의 수예요. |
repository_stats.write_failure_count |
리포지토리에 실패한 쓰기 작업의 수예요. |
repository_stats.successful_write_time_in_millis |
성공한 쓰기 작업에 소요된 총 시간(밀리초)이에요. |
client_stats.build_request_success_count |
성공한 빌드 요청 작업의 수예요. |
client_stats.build_request_failure_count |
실패한 빌드 요청 작업의 수예요. |
client_stats.status_request_failure_count |
실패한 상태 요청 작업의 수예요. |
client_stats.status_request_success_count |
성공한 상태 요청 작업의 수예요. |
client_stats.index_build_success_count |
성공한 인덱스 빌드 작업의 수예요. |
client_stats.index_build_failure_count |
실패한 인덱스 빌드 작업의 수예요. |
client_stats.waiting_time_in_ms |
클라이언트가 원격 빌드 완료를 기다리는 데 소요한 총 시간(밀리초)이에요. |
build_stats.remote_index_build_flush_time_in_millis |
원격 플러시 작업에 소요된 총 시간(밀리초)이에요. |
build_stats.remote_index_build_merge_time_in_millis |
원격 병합 작업에 소요된 총 시간(밀리초)이에요. |
build_stats.remote_index_build_current_merge_operations |
현재 진행 중인 원격 병합 작업의 수예요. |
build_stats.remote_index_build_current_flush_operations |
현재 진행 중인 원격 플러시 작업의 수예요. |
build_stats.remote_index_build_current_merge_size |
원격 병합 작업의 현재 크기예요. |
build_stats.remote_index_build_current_flush_size |
원격 플러시 작업의 현재 크기예요. |
요청 예시
다음 예시는 k-NN 플러그인과 관련된 통계를 조회하는 방법을 보여줘요.
다음 예시는 클러스터 내 모든 노드에 대한 k-NN 플러그인의 포괄적인 통계를 가져와요:
GET /_plugins/_knn/stats?pretty
{
"_nodes" : {
"total" : 1,
"successful" : 1,
"failed" : 0
},
"cluster_name" : "my-cluster",
"circuit_breaker_triggered" : false,
"model_index_status" : "YELLOW",
"nodes" : {
"JdfxIkOS1-43UxqNz98nw" : {
"graph_memory_usage_percentage" : 3.68,
"graph_query_requests" : 1420920,
"graph_memory_usage" : 2,
"cache_capacity_reached" : false,
"load_success_count" : 179,
"training_memory_usage" : 0,
"indices_in_cache" : {
"myindex" : {
"graph_memory_usage" : 2,
"graph_memory_usage_percentage" : 3.68,
"graph_count" : 2
}
},
"script_query_errors" : 0,
"hit_count" : 1420775,
"knn_query_requests" : 147092,
"total_load_time" : 2436679306,
"miss_count" : 179,
"training_memory_usage_percentage" : 0.0,
"graph_index_requests" : 656,
"faiss_initialized" : true,
"load_exception_count" : 0,
"training_errors" : 0,
"eviction_count" : 0,
"nmslib_initialized" : false,
"script_compilations" : 0,
"script_query_requests" : 0,
"graph_query_errors" : 0,
"indexing_from_model_degraded" : false,
"graph_index_errors" : 0,
"training_requests" : 17,
"script_compilation_errors" : 0
}
}
}
{% include copy-curl.html %}
다음 예시는 단일 노드에 대한 특정 지표(서킷 브레이커 상태 및 그래프 메모리 사용량)를 조회해요:
GET /_plugins/_knn/HYMrXXsBSamUkcAjhjeN0w/stats/circuit_breaker_triggered,graph_memory_usage?pretty
{
"_nodes" : {
"total" : 1,
"successful" : 1,
"failed" : 0
},
"cluster_name" : "my-cluster",
"circuit_breaker_triggered" : false,
"nodes" : {
"HYMrXXsBSamUkcAjhjeN0w" : {
"graph_memory_usage" : 1
}
}
}
{% include copy-curl.html %}
워밍업 작업
근사 k-NN 검색을 수행하는 데 사용되는 네이티브 라이브러리 인덱스는 다른 Apache Lucene 세그먼트 파일과 함께 특수한 파일로 저장돼요. k-NN 플러그인을 사용해 이러한 인덱스에 대해 검색을 수행하려면 플러그인이 이 파일들을 네이티브 메모리에 로드해야 해요.
플러그인이 아직 파일을 네이티브 메모리에 로드하지 않았다면, 검색 요청을 받는 시점에 파일을 로드해요. 이 로딩 시간 때문에 초기 쿼리에서 높은 지연이 발생할 수 있어요. 이를 피하기 위해 사용자들은 보통 워밍업 기간 동안 무작위 쿼리를 실행해요. 이 워밍업 기간이 지나면 파일이 네이티브 메모리에 로드되고, 프로덕션 워크로드를 시작할 수 있어요. 이 로딩 과정은 간접적이며 추가적인 수고를 필요로 해요.
대신, 검색하려는 인덱스에 대해 k-NN 플러그인 워밍업 API 작업을 실행하면 이 지연 문제를 피할 수 있어요. 이 작업은 요청에 지정된 모든 인덱스의 모든 샤드(프라이머리와 레플리카)에 대한 네이티브 라이브러리 파일을 전부 네이티브 메모리에 로드해요.
이 과정이 끝나면 초기 지연 페널티 없이 해당 인덱스를 검색할 수 있어요. 워밍업 API 작업은 멱등(idempotent)하기 때문에, 세그먼트의 네이티브 라이브러리 파일이 이미 메모리에 로드되어 있다면 이 작업은 아무런 효과가 없어요. 현재 메모리에 저장되어 있지 않은 파일만 로드해요.
요청 예시
다음 요청은 세 개의 인덱스에 대해 워밍업을 수행해요:
GET /_plugins/_knn/warmup/index1,index2,index3?pretty
{
"_shards" : {
"total" : 6,
"successful" : 6,
"failed" : 0
}
}
{% include copy-curl.html %}
total 값은 k-NN 플러그인이 워밍업을 시도한 샤드의 수를 나타내요. 응답에는 플러그인이 성공적으로 워밍업한 샤드의 수와 워밍업하지 못한 샤드의 수도 포함돼요.
이 호출은 워밍업 작업이 끝나거나 요청이 시간 초과되기 전까지는 결과를 반환하지 않아요. 요청이 시간 초과되더라도 작업은 클러스터에서 계속 진행돼요. 워밍업 작업을 모니터링하려면 OpenSearch _tasks API를 사용하면 돼요:
GET /_tasks
{% include copy-curl.html %}
작업이 끝난 후에는 k-NN _stats API 작업을 사용해 k-NN 플러그인이 그래프에 무엇을 로드했는지 확인하세요.
모범 사례
워밍업 작업이 제대로 작동하려면 다음 모범 사례를 따르세요:
-
워밍업하려는 인덱스에서는 병합 작업을 실행하지 마세요. 병합 작업 중에 k-NN 플러그인은 새 세그먼트를 만들고, 오래된 세그먼트는 때때로 삭제돼요. 예를 들어, 워밍업 API 작업이 네이티브 라이브러리 인덱스 A와 B를 네이티브 메모리에 로드했지만 세그먼트 A와 B가 병합되어 세그먼트 C가 생성되는 상황에 직면할 수 있어요. 그러면 네이티브 라이브러리 인덱스 A와 B는 더 이상 메모리에 없고, 네이티브 라이브러리 인덱스 C 역시 메모리에 없게 돼요. 이 경우 네이티브 라이브러리 인덱스 C를 로드하는 초기 페널티는 여전히 존재해요.
-
워밍업하려는 모든 네이티브 라이브러리 인덱스가 네이티브 메모리에 들어갈 수 있는지 확인하세요. 네이티브 메모리 제한에 대한 자세한 내용은 knn.memory.circuit_breaker.limit 통계를 참고하세요. 그래프 메모리 사용량이 높으면 캐시 스래싱이 발생하고, 이로 인해 작업이 계속 실패하고 다시 실행을 시도하는 상황이 벌어질 수 있어요.
-
캐시에 로드하려는 문서는 인덱싱하지 마세요. 세그먼트에 새 정보를 기록하면 네이티브 라이브러리 인덱스가 검색 가능해질 때까지 워밍업 API 작업이 이를 로드하지 못해요. 즉, 인덱싱 후에 워밍업 작업을 다시 실행해야 해요.
k-NN clear cache
2.14에 도입됨 {: .label .label-purple }
approximate k-NN 검색이나 warmup 작업을 수행하는 동안 네이티브 라이브러리 인덱스(faiss 및 nmslib [지원 중단됨] 엔진용)가 네이티브 메모리에 로드돼요. 현재는 인덱스를 삭제하거나 k-NN 클러스터 설정인 knn.cache.item.expiry.enabled와 knn.cache.item.expiry.minutes를 설정하는 방법으로만 캐시나 네이티브 메모리에서 인덱스를 축출할 수 있어요. 이 설정들은 인덱스가 지정된 기간 동안 유휴 상태로 있으면 캐시에서 제거해요. 하지만 인덱스를 삭제하지 않고서는 캐시에서 인덱스를 축출할 수 없어요. 이 문제를 해결하려면 k-NN clear cache API 작업을 사용하면 돼요. 이 작업은 지정된 인덱스 집합을 캐시에서 비워 줘요.
k-NN clear cache API는 요청에 지정된 모든 인덱스의 모든 샤드(프라이머리와 레플리카)에 대한 네이티브 라이브러리 파일을 전부 축출해요. warmup 작업이 동작하는 방식과 마찬가지로 k-NN clear cache API는 멱등(idempotent)해요. 즉, 이미 캐시에서 축출된 인덱스에 대해 캐시 비우기를 시도하면 추가로 어떤 효과도 생기지 않아요.
이 API 작업은 faiss와 nmslib(지원 중단됨) 엔진으로 생성한 인덱스에서만 동작해요. lucene 엔진으로 생성한 인덱스에는 아무런 영향을 주지 않아요.
{: .note}
요청 예제
다음 요청은 세 개 인덱스의 네이티브 라이브러리 인덱스를 캐시에서 축출해요:
POST /_plugins/_knn/clear_cache/index1,index2,index3?pretty
{
"_shards" : {
"total" : 6,
"successful" : 6,
"failed" : 0
}
}
{% include copy-curl.html %}
total 파라미터는 API가 캐시에서 비우려고 시도한 샤드 수를 나타내요. 응답에는 성공적으로 비운 샤드 수와 플러그인이 비우지 못한 샤드 수가 모두 포함돼요.
k-NN clear cache API는 인덱스 패턴과 함께 사용할 수 있어서, 다음 예제처럼 주어진 패턴에 일치하는 하나 이상의 인덱스를 캐시에서 비울 수 있어요:
POST /_plugins/_knn/clear_cache/index*?pretty
{
"_shards" : {
"total" : 6,
"successful" : 6,
"failed" : 0
}
}
{% include copy-curl.html %}
API 호출은 작업이 끝나거나 요청이 타임아웃되기 전까지는 결과를 반환하지 않아요. 요청이 타임아웃되더라도 작업은 클러스터에서 계속 진행돼요. 요청을 모니터링하려면 다음 예제처럼 _tasks API를 사용하세요:
GET /_tasks
{% include copy-curl.html %}
작업이 끝나면 k-NN _stats API 작업을 사용해서 어떤 인덱스가 캐시에서 축출됐는지 확인할 수 있어요.
모델 조회하기
GET model 작업은 클러스터에 있는 모델에 대한 정보를 조회해요. 일부 네이티브 라이브러리 인덱스 설정은 인덱싱과 쿼리를 시작하기 전에 학습 단계가 필요해요. 학습의 결과물은 인덱싱 중에 네이티브 라이브러리 인덱스 파일을 초기화하는 데 사용할 수 있는 모델이에요. 모델은 k-NN 모델 시스템 인덱스에 직렬화돼요.
요청 예제
GET /_plugins/_knn/models/{model_id}
{% include copy-curl.html %}
응답 본문 필드
다음 표는 사용할 수 있는 응답 본문 필드를 정리한 거예요.
| 응답 필드 | 설명 |
|---|---|
model_id |
조회한 모델의 고유 식별자예요. |
model_blob |
직렬화된 모델을 Base64로 인코딩한 문자열이에요. |
state |
모델의 현재 상태예요. created, failed, training 중 하나예요. |
timestamp |
모델이 생성된 날짜와 시간이에요. |
description |
사용자가 제공한 모델 설명이에요. |
error |
모델이 실패 상태인 이유를 설명하는 오류 메시지예요. |
space_type |
모델이 학습된 공간 유형이에요. 예를 들어 Euclidean이나 cosine이 있어요. 참고: 이 값은 요청의 최상위 수준에서 설정할 수 있어요. |
dimension |
이 모델이 설계된 벡터 공간의 차원이에요. |
engine |
모델을 생성하는 데 사용된 네이티브 라이브러리예요. faiss 또는 nmslib(지원 중단됨) 중 하나예요. |
요청 예제
다음 예제들은 k-NN 플러그인 API를 사용해서 특정 모델에 대한 정보를 조회하는 방법을 보여줘요.
다음 예제는 모델에 대해 사용할 수 있는 모든 정보를 반환해요:
GET /_plugins/_knn/models/test-model?pretty
{
"model_id" : "test-model",
"model_blob" : "SXdGbIAAAAAAAAAAAA...",
"state" : "created",
"timestamp" : "2021-11-15T18:45:07.505369036Z",
"description" : "Default",
"error" : "",
"space_type" : "l2",
"dimension" : 128,
"engine" : "faiss"
}
{% include copy-curl.html %}
다음 예제는 필드를 선택적으로 조회하는 방법을 보여줘요:
GET /_plugins/_knn/models/test-model?pretty&filter_path=model_id,state
{
"model_id" : "test-model",
"state" : "created"
}
{% include copy-curl.html %}
모델 검색하기
OpenSearch 쿼리를 사용해서 인덱스에서 모델을 검색할 수 있어요. 다음 사용 예제를 참고하세요.
요청 예제
다음 예제는 OpenSearch 클러스터에서 k-NN 모델을 검색하는 방법과, 크기가 커질 수 있는 model_blob 필드를 제외하고 해당 모델들의 메타데이터를 조회하는 방법을 보여줘요:
GET/POST /_plugins/_knn/models/_search?pretty&_source_excludes=model_blob
{
"query": {
...
}
}
{% include copy-curl.html %}
응답에는 모델 정보가 담겨 있어요:
{
"took" : 0,
"timed_out" : false,
"_shards" : {
"total" : 1,
"successful" : 1,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : {
"value" : 1,
"relation" : "eq"
},
"max_score" : 1.0,
"hits" : [
{
"_index" : ".opensearch-knn-models",
"_id" : "test-model",
"_score" : 1.0,
"_source" : {
"engine" : "faiss",
"space_type" : "l2",
"description" : "Default",
"model_id" : "test-model",
"state" : "created",
"error" : "",
"dimension" : 128,
"timestamp" : "2021-11-15T18:45:07.505369036Z"
}
}
]
}
}
모델 삭제하기
DELETE 작업을 사용해서 클러스터에서 모델을 삭제할 수 있어요. 다음 사용 예제를 참고하세요.
요청 예제
다음 예제는 k-NN 모델을 삭제하는 방법을 보여줘요:
DELETE /_plugins/_knn/models/{model_id}
{
"model_id": {model_id},
"acknowledged": true
}
{% include copy-curl.html %}
모델 학습시키기
인덱싱 중에 k-NN 네이티브 라이브러리 인덱스를 초기화하는 데 사용할 수 있는 모델을 만들고 학습시킬 수 있어요. 이 API는 학습 인덱스의 knn_vector 필드에서 학습 데이터를 가져와서 모델을 만들고 학습시킨 뒤, 모델 시스템 인덱스에 직렬화해요. 학습 데이터는 요청 본문에 전달된 차원과 일치해야 해요. 이 요청은 학습이 시작될 때 반환돼요. 모델의 상태를 모니터링하려면 모델 조회 API를 사용하세요.
쿼리 파라미터
다음 표는 사용할 수 있는 쿼리 파라미터를 정리한 거예요.
| 쿼리 파라미터 | 설명 |
|---|---|
model_id |
모델의 고유 식별자예요. 지정하지 않으면 무작위 ID가 생성돼요. 선택 사항이에요. |
node_id |
학습 프로세스를 실행할 선호 노드를 지정해요. 값을 제공하면, 지정된 노드가 필요한 기능과 리소스를 갖추고 있을 때 해당 노드가 학습에 사용돼요. 선택 사항이에요. |
요청 본문 필드
다음 표는 사용할 수 있는 요청 본문 필드를 정리한 거예요.
| 요청 필드 | 설명 |
|---|---|
training_index |
학습 데이터를 가져오는 인덱스예요. |
training_field |
학습 데이터를 가져오는 training_index의 knn_vector 필드예요. 이 필드의 차원은 이 요청에 전달된 dimension과 일치해야 해요. |
dimension |
학습 중인 모델의 차원이에요. |
max_training_vector_count |
학습에 사용할 학습 인덱스 벡터의 최대 개수예요. 기본값은 인덱스의 모든 벡터예요. 선택 사항이에요. |
search_size |
학습 데이터는 scroll 쿼리를 사용해서 학습 인덱스에서 가져와요. 이 파라미터는 scroll 쿼리당 반환할 결과 수를 정의해요. 기본값은 10000이에요. 선택 사항이에요. |
description |
사용자가 제공한 모델 설명이에요. 선택 사항이에요. |
method |
검색 작업에 사용되는 approximate k-NN 방식의 설정이에요. 사용할 수 있는 방식에 대한 자세한 내용은 메서드와 엔진을 참고하세요. 이 방식이 유효하려면 학습이 필요해요. |
space_type |
이 모델이 학습되는 공간 유형이에요. 예를 들어 Euclidean이나 cosine이 있어요. 참고: 이 값은 method 파라미터에서도 설정할 수 있어요. |
요청 예제
다음 예제들은 k-NN 모델의 학습 프로세스를 시작하는 방법을 보여줘요:
POST /_plugins/_knn/models/{model_id}/_train?preference={node_id}
{
"training_index": "train-index-name",
"training_field": "train-field-name",
"dimension": 16,
"max_training_vector_count": 1200,
"search_size": 100,
"description": "My model",
"space_type": "l2",
"method": {
"name":"ivf",
"engine":"faiss",
"parameters":{
"nlist":128,
"encoder":{
"name":"pq",
"parameters":{
"code_size":8
}
}
}
}
}
{% include copy-curl.html %}
POST /_plugins/_knn/models/_train?preference={node_id}
{
"training_index": "train-index-name",
"training_field": "train-field-name",
"dimension": 16,
"max_training_vector_count": 1200,
"search_size": 100,
"description": "My model",
"space_type": "l2",
"method": {
"name":"ivf",
"engine":"faiss",
"parameters":{
"nlist":128,
"encoder":{
"name":"pq",
"parameters":{
"code_size":8
}
}
}
}
}
{% include copy-curl.html %}
응답 예제
{
"model_id": "dcdwscddscsad"
}