개요
SemanticCachePopulate 정책은 AI 워크로드, 특히 대규모 언어 모델 (LLM)이 포함된 워크로드의 성능을 최적화하도록 설계된 고급 캐싱 정책입니다.
이 정책은 Vertex AI 텍스트 임베딩 API를 사용하여 텍스트의 임베딩을 생성하고 벡터 검색을 사용하여 정확한 일치가 아닌 시맨틱 유사성을 기반으로 API 응답을 캐시합니다.
SemanticCachePopulate 정책을 사용하면 반복 쿼리의 응답 시간을 줄이고 LLM에 대한 호출 수를 줄여 비용을 최적화할 수 있습니다.
이 정책은 SemanticCacheLookup 정책과 함께 사용됩니다.
이 정책은 확장 가능한 정책이며, 이 정책을 사용하면 Apigee 라이선스에 따라 비용 또는 사용률이 영향을 받을 수 있습니다. 정책 유형 및 사용 영향에 대한 자세한 내용은 정책 유형을 참조하세요.
시작하기 전에
SemanticCachePopulate 정책을 사용하기 전에 다음 작업을 완료해야 합니다.
- Vertex AI 프로젝트를 만듭니다.
- 벡터 검색 색인을 만듭니다.
- 색인의 Vertex AI 엔드포인트를 만듭니다.
- SemanticCachePopulate 정책을 만듭니다.
이러한 작업을 완료하는 방법에 관한 자세한 내용은 시맨틱 캐싱 정책 시작하기를 참고하세요.
역할 및 권한
SemanticCachePopulate 정책을 적용하고 사용하는 데 필요한 권한을 얻으려면 관리자에게 Apigee 프록시를 배포하는 데 사용하는 서비스 계정에 대한 AI Platform 사용자 (roles/aiplatform.user
) IAM 역할을 부여해 달라고 요청하세요.
역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.
커스텀 역할이나 다른 사전 정의된 역할을 통해 필요한 권한을 얻을 수도 있습니다.
API 사용 설정
Enable the Compute Engine, Vertex AI, and Cloud Storage APIs.
<SemanticCachePopulate>
요소
SemanticCachePopulate 정책을 정의합니다.
기본값 | 아래의 기본 정책 탭을 참조하세요. |
필수 여부 | 필수 |
유형 | 복합 객체 |
상위 요소 | 해당 사항 없음 |
하위 요소 |
<DisplayName> <IgnoreUnresolvedVariables> <SimilaritySearch> <TTLInSeconds> |
<SemanticCachePopulate>
요소는 다음 구문을 사용합니다.
구문
<SemanticCachePopulate>
요소는 다음 문법을 사용합니다.
<SemanticCachePopulate async="false" continueOnError="false"enabled="true" name="SCP-populate"> <DisplayName>SCP-populate</DisplayName> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> <SimilaritySearch> <VertexAI> <URL>https://{LOCATION}-aiplatform.googleapis.com/v1/projects/{PROJECT_ID}/locations/{LOCATION}/indexes/{INDEX_ID}:upsertDatapoints</URL> </VertexAI> </SimilaritySearch> <TTLInSeconds>{EXPIRATION_TIME_IN_SECONDS}</TTLInSeconds> </SemanticCachePopulate>
기본 정책
다음 예에서는 Apigee UI의 API 프록시에 SemanticCachePopulate 정책을 추가할 때의 기본 설정을 보여줍니다.
<SemanticCachePopulate async="false" continueOnError="false"enabled="true" name="SCP-populate"> <DisplayName>SCP-populate</DisplayName> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> <SimilaritySearch> <VertexAI> <URL>https://{LOCATION}-aiplatform.googleapis.com/v1/projects/{PROJECT_ID}/locations/{LOCATION}/indexes/{INDEX_ID}:upsertDatapoints</URL> </VertexAI> </SimilaritySearch> <TTLInSeconds>60</TTLInSeconds> </SemanticCachePopulate>
Apigee UI에 새 SemanticCachePopulate 정책을 삽입하면 가능한 모든 작업에 대한 스텁이 템플릿에 포함됩니다. 필수 요소에 대한 자세한 내용은 아래를 참조하세요.
이 요소에는 다음과 같이 모든 정책에 공통된 속성이 있습니다.
속성 | 기본값 | 필수 여부 | 설명 |
---|---|---|---|
name |
해당 없음 | 필수 |
정책의 내부 이름입니다. 원하는 경우 |
continueOnError |
거짓 | 선택사항 | 정책이 실패할 경우 오류가 반환되도록 하려면 false 로 설정합니다. 이는 대부분의 정책에서 예상되는 동작입니다. 정책이 실패해도 흐름 실행이 계속되도록 하려면 true 로 설정합니다. 참조:
|
enabled |
참 | 선택사항 | 정책을 시행하려면 true 로 설정합니다. 정책을 중지하려면 false 로 설정합니다. 정책이 흐름에 연결되어 있어도 정책이 시행되지 않습니다. |
async |
거짓 | 지원 중단됨 | 이 속성은 지원이 중단되었습니다. |
다음 표에서는 <SemanticCachePopulate>
의 하위 요소에 대한 대략적인 설명을 제공합니다.
하위 요소 | 필수 여부 | 설명 |
---|---|---|
<DisplayName> |
선택사항 | 정책의 이름입니다. |
<IgnoreUnresolvedVariables> |
선택사항 | 속성 집합이 확인되지 않은 경우 처리가 중지되는지 여부를 결정합니다. |
<SimilaritySearch> |
필수 | 벡터 색인을 업데이트하는 데 필요한 정보가 포함된 요소입니다.
자세한 내용은 데이터 포인트 upsert를 참고하세요. 데이터 포인트의 만료 시간은 항목 입력 시점으로부터 <TTLInSeconds>입니다. |
<TTLInSeconds> |
선택사항 | 캐시된 응답의 TTL(수명)입니다(단위: 초).
기본값은 |
예
이 섹션에서는 <SemanticCachePopulate>
를 사용하는 예시를 제공합니다.
<SemanticCachePopulate async="false" continueOnError="false"enabled="true" name="SCP-populate"> <DisplayName>SCP-populate</DisplayName> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> <SimilaritySearch> <VertexAI> <URL>https://{LOCATION}-aiplatform.googleapis.com/v1/projects/{PROJECT_ID}/locations/{LOCATION}/indexes/{INDEX_ID}:upsertDatapoints</URL> </VertexAI> </SimilaritySearch> <TTLInSeconds>60</TTLInSeconds> </SemanticCachePopulate>
하위 요소 참조
이 섹션에서는 <SemanticCachePopulate>
의 하위 요소를 설명합니다.
<DisplayName>
name
속성 외에 이 요소를 사용하여 관리 UI 프록시 편집기에서 자연스러운 다른 이름으로 정책의 라벨을 지정합니다.
<DisplayName>
요소는 모든 정책에 공통으로 적용됩니다.
기본값 | 해당 사항 없음 |
필수 여부 | 선택사항. <DisplayName> 을 생략하면 정책의 name 속성 값이 사용됩니다. |
유형 | 문자열 |
상위 요소 | <PolicyElement> |
하위 요소 | 없음 |
<DisplayName>
요소는 다음 문법을 사용합니다.
구문
<PolicyElement> <DisplayName>POLICY_DISPLAY_NAME</DisplayName> ... </PolicyElement>
예
<PolicyElement> <DisplayName>My Validation Policy</DisplayName> </PolicyElement>
<DisplayName>
요소에 속성 또는 하위 요소가 없습니다.
<IgnoreUnresolvedVariables>
변수가 확인되지 않은 경우 처리를 중지할지 여부를 결정합니다. 확인되지 않은 변수를 무시하고 계속 처리하려면 true
로 설정합니다.
<DefaultValue>
가 제공된 경우 IgnoreUnresolvedVariables
를 적용할 수 없습니다.
기본값 | 거짓 |
필수 여부 | 선택사항 |
유형 | 불리언 |
상위 요소 |
<SemanticCachePopulate>
|
하위 요소 | 없음 |
<SimilaritySearch>
벡터 색인을 업데이트하는 데 필요한 정보가 포함된 요소입니다.
자세한 내용은 데이터 포인트 upsert를 참고하세요.
데이터 포인트의 만료 시간은 입력 시간으로부터 <TTLInSeconds>
입니다.
기본값 | 해당 사항 없음 |
필수 여부 | 필수 |
유형 | 문자열 |
상위 요소 |
<SemanticCachePopulate>
|
하위 요소 |
<VertexAI> |
<SimilaritySearch>
요소는 다음 구문을 사용합니다.
<SimilaritySearch> <VertexAI> <URL>https://{LOCATION}-aiplatform.googleapis.com/v1/projects/{PROJECT_ID}/locations/{LOCATION}/indexes/{INDEX_ID}:upsertDatapoints</URL> </VertexAI> </SimilaritySearch>
<VertexAI> (<SimilaritySearch>
의 하위 요소)
Vertex AI 관련 속성의 <URL> 요소를 포함합니다.
기본값 | 해당 사항 없음 |
필수 여부 | 필수 |
유형 | 문자열 |
상위 요소 |
<SimilaritySearch>
|
하위 요소 |
<URL> |
VertexAI
요소는 다음 구문을 사용합니다.
<VertexAI> <URL>https://{LOCATION}-aiplatform.googleapis.com/v1/projects/{PROJECT_ID}/locations/{LOCATION}/indexes/{INDEX_ID}:upsertDatapoints</URL> </VertexAI>
<URL> (<VertexAI>
의 하위 요소)
벡터 색인에 데이터 포인트를 업서트하는 데 사용되는 URL입니다.
기본값 | 해당 사항 없음 |
필수 여부 | 필수 |
유형 | 문자열 |
상위 요소 |
<VertexAI>
|
하위 요소 |
없음 |
URL
요소는 다음 구문을 사용합니다.
<URL>https://{LOCATION}-aiplatform.googleapis.com/v1/projects/{PROJECT_ID}/locations/{LOCATION}/indexes/{INDEX_ID}:upsertDatapoints</URL>
<TTLInSeconds>
캐시된 응답의 TTL (수명)을 초 단위로 지정하는 요소입니다. 기본값은 60입니다.
자세한 내용은 활성 색인 업데이트 및 다시 빌드를 참고하세요.
기본값 | 해당 사항 없음 |
필수 여부 | 선택사항 |
유형 | 문자열 |
상위 요소 |
<SemanticCachePopulate>
|
하위 요소 |
없음 |
흐름 변수
흐름 변수를 사용하면 HTTP 헤더, 메시지 콘텐츠 또는 흐름에서 사용 가능한 컨텍스트를 기준으로 정책 및 흐름의 동적 런타임 동작을 구성할 수 있습니다. 흐름 변수에 관한 자세한 내용은 흐름 변수 참조를 참고하세요.
정책은 실행 중에 이러한 읽기 전용 변수를 설정할 수 있습니다.
변수 이름 | 설명 |
---|---|
response.content |
API 응답의 전체 콘텐츠를 포함합니다. |
semanticcache.populate.policy_name.upsert_index_request |
새 임베딩 및 메타데이터로 벡터 색인을 업데이트하기 위해 Vertex AI Vector Search API로 전송된 요청 페이로드를 포함합니다. |
semanticcache.populate.policy_name.upsert_index_response |
색인 업데이트 작업의 성공 또는 실패를 나타내는 Vertex AI Vector Search API의 응답을 포함합니다. |
오류 참조
이 섹션에서는 반환되는 오류 코드 및 오류 메시지와 <SemanticCachePopulate>
정책과 관련해서 Apigee에서 설정된 오류 변수에 대해 설명합니다.
오류를 처리하기 위해 오류 규칙을 개발 중인 경우 이 정보는 중요합니다. 자세한 내용은 정책 오류에 대해 알아야 할 사항 및 오류 처리를 참고하세요.
런타임 오류
이러한 오류는 정책이 실행될 때 발생할 수 있습니다.
오류 코드 | HTTP 상태 | 원인 |
---|---|---|
steps.semanticcachepopulate.VectorSearchUpsertServiceUnavailable
|
400 |
이 오류는 Vector Search Upsert Datapoints API를 사용할 수 없는 경우에 발생합니다. |
steps.semanticcache.populate.VectorSearchUpsertAPIFailed |
500 |
이 오류는 Vector Search Upsert Datapoints API 서비스가 실패하면 발생합니다. |
steps.semanticcache.populate.AuthenticationFailure |
500 |
이 오류는 서비스 계정에 필요한 권한이 없는 경우에 발생합니다. |
steps.semanticcache.populate.CalloutError |
500 |
Vertex AI 서비스 호출에 실패했습니다. |
steps.semanticcache.populate.InternalError |
500 |
이 오류는 |
배포 오류
이 오류는 이 정책이 포함된 프록시를 배포할 때 발생할 수 있습니다.
오류 이름 | 원인 |
---|---|
The SimilaritySearch URL {url} is invalid. |
<SimilaritySearch>의 <URL> 요소가 비어 있거나 유효하지 않은 경우 발생합니다. |
The scheme {http-scheme} of SimilaritySearch URL {url} must be one of http, https. |
SimilaritySearch <URL> 요소의 http 스키마가 잘못된 경우 발생합니다. |
The TTLInSeconds element must be >= 0. |
값이 0 또는 음수로 설정되면 API 프록시 배포가 실패합니다. |
오류 변수
이러한 변수는 이 정책이 런타임 시 오류를 트리거할 때 설정됩니다. 자세한 내용은 정책 오류에 대해 알아야 할 사항을 참조하세요.
변수 | 장소 | 예 |
---|---|---|
fault.name="FAULT_NAME" |
FAULT_NAME은 위의 런타임 오류 표에 나열된 오류 이름입니다. 오류 이름은 오류 코드의 마지막 부분입니다. | fault.name Matches "UnresolvedVariable" |
semanticcachepopulate.POLICY_NAME.failed |
POLICY_NAME은 오류를 발생시킨 정책의 사용자 지정 이름입니다. | semanticcachepopulate.SC-populate.failed = true |
오류 응답 예시
{ "fault": { "faultstring": "SemanticCacheLookup[SC-populate]: unable to resolve variable [variable_name]", "detail": { "errorcode": "steps.semanticcachepopulate.UnresolvedVariable" } } }
오류 규칙 예시
<FaultRule name="SemanticCacheLookup Faults"> <Step> <Name>SCL-CustomSetVariableErrorResponse</Name> <Condition>(fault.name = "SetVariableFailed")</Condition> </Step> <Condition>(semanticcachelookup.failed = true)</Condition> </FaultRule>
스키마
각 정책 유형은 XML 스키마 (.xsd
)로 정의됩니다. 참고로 GitHub에서 정책 스키마를 사용할 수 있습니다.