🚀 완전 관리형 Milvus인 Zilliz Cloud를 무료로 체험해보세요—10배 더 빠른 성능을 경험하세요! 지금 체험하기>>

milvus-logo
LFAI
홈페이지
  • 사용자 가이드

필터 템플릿

Milvus에서 수많은 요소가 포함된 복잡한 필터 표현식, 특히 CJK 문자와 같은 비 ASCII 문자가 포함된 표현식은 쿼리 성능에 큰 영향을 미칠 수 있습니다. 이 문제를 해결하기 위해 Milvus는 복잡한 표현식을 구문 분석하는 데 소요되는 시간을 줄여 효율성을 개선하도록 설계된 필터 표현식 템플릿 메커니즘을 도입했습니다. 이 페이지에서는 검색, 쿼리 및 삭제 작업에서 필터 표현식 템플릿을 사용하는 방법에 대해 설명합니다.

개요

필터 표현식 템플릿을 사용하면 쿼리 실행 중에 값으로 동적으로 대체할 수 있는 자리 표시자를 사용하여 필터 표현식을 만들 수 있습니다. 템플릿을 사용하면 큰 배열이나 복잡한 표현식을 필터에 직접 포함하지 않아도 되므로 구문 분석 시간이 단축되고 쿼리 성능이 향상됩니다.

agecity 이라는 두 개의 필드가 포함된 필터 표현식이 있고, 나이가 25세 이상이고 '北京'(베이징) 또는 '上海'(상하이)에 거주하는 모든 사람을 찾고자 한다고 가정해 보겠습니다. 필터 표현식에 값을 직접 포함하는 대신 템플릿을 사용할 수 있습니다.

filter = "age > {age} AND city IN {city}"
filter_params = {"age": 25, "city": ["北京", "上海"]}

여기서 {age}{city} 은 쿼리가 실행될 때 filter_params 의 실제 값으로 대체되는 자리 표시자입니다.

Milvus에서 필터 표현식 템플릿을 사용하면 몇 가지 주요 이점이 있습니다.

  • 구문분석 시간 단축: 크거나 복잡한 필터 표현식을 자리 표시자로 대체함으로써 시스템에서 필터를 구문 분석하고 처리하는 데 소요되는 시간을 줄일 수 있습니다.

  • 쿼리 성능 향상: 구문 분석 오버헤드가 줄어들면 쿼리 성능이 향상되어 QPS가 높아지고 응답 시간이 빨라집니다.

  • 확장성: 데이터 세트가 증가하고 필터 표현식이 더 복잡해져도 템플릿을 사용하면 효율적이고 확장 가능한 성능을 유지할 수 있습니다.

검색 작업

Milvus의 검색 작업에서 filter 표현식은 필터링 조건을 정의하는 데 사용되며, filter_params 매개변수는 자리 표시자의 값을 지정하는 데 사용됩니다. filter_params 사전에는 Milvus가 필터 표현식으로 대체하는 데 사용할 동적 값이 포함되어 있습니다.

expr = "age > {age} AND city IN {city}"
filter_params = {"age": 25, "city": ["北京", "上海"]}
res = client.search(
    "hello_milvus",
    vectors[:nq],
    filter=expr,
    limit=10,
    output_fields=["age", "city"],
    search_params={"metric_type": "COSINE", "params": {"search_list": 100}},
    filter_params=filter_params,
)

이 예제에서는 검색을 실행할 때 Milvus가 {age}25 으로, {city}["北京", "上海"] 으로 동적으로 대체합니다.

쿼리 연산

Milvus의 쿼리 연산에도 동일한 템플릿 메커니즘을 적용할 수 있습니다. query 함수에서 필터 표현식을 정의하고 filter_params 을 사용하여 대체할 값을 지정합니다.

expr = "age > {age} AND city IN {city}"
filter_params = {"age": 25, "city": ["北京", "上海"]}
res = client.query(
    "hello_milvus",
    filter=expr,
    output_fields=["age", "city"],
    filter_params=filter_params
)

filter_params 을 사용하면 Milvus는 값의 동적 삽입을 효율적으로 처리하여 쿼리 실행 속도를 향상시킵니다.

삭제 작업

삭제 작업에서도 필터 표현식 템플릿을 사용할 수 있습니다. 검색 및 쿼리와 마찬가지로 filter 식은 조건을 정의하고 filter_params 은 자리 표시자에 대한 동적 값을 제공합니다.

expr = "age > {age} AND city IN {city}"
filter_params = {"age": 25, "city": ["北京", "上海"]}
res = client.delete(
    "hello_milvus",
    filter=expr,
    filter_params=filter_params
)

이 접근 방식은 특히 복잡한 필터 조건을 처리할 때 삭제 작업의 성능을 향상시킵니다.

결론

필터 표현식 템플릿은 Milvus에서 쿼리 성능을 최적화하는 데 필수적인 도구입니다. 플레이스홀더와 filter_params 사전을 사용하면 복잡한 필터 표현식을 구문 분석하는 데 소요되는 시간을 크게 줄일 수 있습니다. 이는 쿼리 실행 속도와 전반적인 성능 향상으로 이어집니다.

Try Managed Milvus for Free

Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.

Get Started
피드백

이 페이지가 도움이 되었나요?