이 기능은 @vectorize 데코레이터의 핵심 파라미터를 통해 작동하며, 단순한 유사도 검색을 넘어 데이터 격리(Isolation) 및 정적 필터링을 가능하게 하는 중요한 개념이기 때문입니다.
다음은 문서 업데이트를 위한 구체적인 제안입니다.
1. 수정 대상 파일 및 위치
- 파일:
docs/core_concepts.md
- 위치:
## 3. Semantic Caching 섹션의 하단 (기존 설명 및 예제 코드 바로 뒤)
2. 추가할 내용 (초안)
아래 내용을 기존 Setup Method 하단에 **"캐시 격리 및 필터링 (Cache Isolation & Filtering)"**이라는 소제목으로 추가하는 것을 추천합니다. semantic_cache_scope는 멀티 테넌트 환경에서의 데이터 보안(격리)을 위해, semantic_cache_filters는 버전 관리 등을 위해 필수적입니다.
[제안하는 문서 업데이트 내용]
캐시 격리 및 필터링 (Cache Isolation & Filtering)
단순히 입력값의 의미적 유사성만으로 캐시를 공유하면, 다른 프로젝트나 사용자의 데이터가 조회될 위험이 있습니다. VectorWave는 이를 방지하기 위해 동적 스코프와 정적 필터 기능을 제공합니다.
semantic_cache_scope (Dynamic): 함수의 인자(Argument) 중 특정 필드가 정확히 일치할 때만 캐시를 사용하도록 제한합니다. (예: project_id, user_id)
semantic_cache_filters (Static): 코드 레벨에서 고정된 메타데이터 필터링 조건을 적용합니다. (예: env='prod', version__gte=2)
사용 예시
@vectorize(
semantic_cache=True,
# 1. 동적 스코프: 'project_id' 인자가 같은 경우에만 캐시를 공유 (데이터 격리)
semantic_cache_scope=['project_id'],
# 2. 정적 필터: 메타데이터에 'env'가 'production'인 데이터만 조회
semantic_cache_filters={'env': 'production'},
cache_threshold=0.85
)
def generate_report(project_id: str, content: str):
# project_id가 'A'인 요청은 'B'인 요청의 캐시를 절대 사용하지 않음
return llm_process(content)
3. 근거 및 참고 파일
이 내용은 사용자가 업로드한 테스트 코드의 실제 동작 방식을 기반으로 작성되었습니다.
- 동적 스코프 (
semantic_cache_scope):
test_ex/semantic_filter.py에서 project_id가 다를 경우 동일한 입력(shared_content)이라도 캐시가 공유되지 않음(Isolation)을 검증하고 있습니다.
src/tests/core/test_cache_filtering.py의 test_semantic_cache_dynamic_scope 테스트 케이스는 인자 값이 런타임에 필터로 변환되는 것을 보여줍니다.
- 정적 필터 (
semantic_cache_filters):
src/tests/core/test_cache_filtering.py의 test_semantic_cache_static_filters 테스트 케이스에서 고정된 딕셔너리 값(static_filter)이 쿼리 필터로 전달됨을 확인했습니다.
이 기능은
@vectorize데코레이터의 핵심 파라미터를 통해 작동하며, 단순한 유사도 검색을 넘어 데이터 격리(Isolation) 및 정적 필터링을 가능하게 하는 중요한 개념이기 때문입니다.다음은 문서 업데이트를 위한 구체적인 제안입니다.
1. 수정 대상 파일 및 위치
docs/core_concepts.md## 3. Semantic Caching섹션의 하단 (기존 설명 및 예제 코드 바로 뒤)2. 추가할 내용 (초안)
아래 내용을 기존
Setup Method하단에 **"캐시 격리 및 필터링 (Cache Isolation & Filtering)"**이라는 소제목으로 추가하는 것을 추천합니다.semantic_cache_scope는 멀티 테넌트 환경에서의 데이터 보안(격리)을 위해,semantic_cache_filters는 버전 관리 등을 위해 필수적입니다.[제안하는 문서 업데이트 내용]
캐시 격리 및 필터링 (Cache Isolation & Filtering)
단순히 입력값의 의미적 유사성만으로 캐시를 공유하면, 다른 프로젝트나 사용자의 데이터가 조회될 위험이 있습니다. VectorWave는 이를 방지하기 위해 동적 스코프와 정적 필터 기능을 제공합니다.
semantic_cache_scope(Dynamic): 함수의 인자(Argument) 중 특정 필드가 정확히 일치할 때만 캐시를 사용하도록 제한합니다. (예:project_id,user_id)semantic_cache_filters(Static): 코드 레벨에서 고정된 메타데이터 필터링 조건을 적용합니다. (예:env='prod',version__gte=2)사용 예시
3. 근거 및 참고 파일
이 내용은 사용자가 업로드한 테스트 코드의 실제 동작 방식을 기반으로 작성되었습니다.
semantic_cache_scope):test_ex/semantic_filter.py에서project_id가 다를 경우 동일한 입력(shared_content)이라도 캐시가 공유되지 않음(Isolation)을 검증하고 있습니다.src/tests/core/test_cache_filtering.py의test_semantic_cache_dynamic_scope테스트 케이스는 인자 값이 런타임에 필터로 변환되는 것을 보여줍니다.semantic_cache_filters):src/tests/core/test_cache_filtering.py의test_semantic_cache_static_filters테스트 케이스에서 고정된 딕셔너리 값(static_filter)이 쿼리 필터로 전달됨을 확인했습니다.