Tan Kim

policy-based-retrieval

Policy-based Retrieval

Policy-based Retrieval은 접근 제어(access control), 콘텐츠 필터링, 컴플라이언스 규칙 등 비즈니스·보안 정책을 검색 파이프라인에 직접 내재화하여, 사용자가 권한 있는 문서만 검색하고 규정에 맞는 결과만 반환하도록 강제하는 기법이다.

핵심 개념

LLM 기반 RAG 시스템에서 "올바른 답변"만큼 중요한 것은 "허용된 정보만 답변하는 것"이다. Policy-based Retrieval은 이 요구사항을 애플리케이션 로직이 아닌 검색 레이어에서 해결한다. 정책을 검색 단계에서 적용하면, LLM이 허가되지 않은 문서를 컨텍스트로 받지 않으므로 정보 유출 가능성이 원천적으로 차단된다.

정책 유형

접근 제어 정책 (Access Control Policy)

사용자의 역할(role), 부서, 권한 수준에 따라 검색 가능한 문서를 제한한다.

def retrieve_with_acl(query: str, user: User) -> list[Document]:
    filters = {
        "allowed_roles": {"$in": user.roles},
        "department": {"$in": user.departments + ["public"]}
    }
    return vector_store.search(query, filter=filters)

콘텐츠 필터링 정책 (Content Filtering Policy)

특정 카테고리의 콘텐츠를 결과에서 제외한다. 예를 들어 미공개 재무 정보, 개인식별정보(PII), 법적 검토 전 문서 등을 필터링한다.

시간 기반 정책 (Temporal Policy)

문서의 유효 기간이나 최신성 기준으로 검색 범위를 제한한다. 폐기된 정책 문서나 만료된 계약서가 컨텍스트에 포함되는 것을 방지한다.

filters = {
    "valid_until": {"$gte": datetime.now()},
    "status": {"$ne": "deprecated"}
}

컴플라이언스 정책 (Compliance Policy)

GDPR, HIPAA, SOC2 등 규정 요구사항을 검색 필터로 구현한다. 예를 들어 GDPR 환경에서 사용자 동의가 없는 개인 데이터를 검색 대상에서 제외한다.

구현 패턴

Pre-retrieval Filtering (사전 필터링)

검색 전에 쿼리에 필터 조건을 추가한다. 벡터 스토어의 메타데이터 필터링 기능을 활용한다. 가장 일반적인 방식이며 성능 오버헤드가 낮다.

Vector DB Query:
  embedding: [query_vector]
  filter: {role: "admin", classification: {$lte: user.clearance_level}}
  top_k: 10

Post-retrieval Filtering (사후 필터링)

검색 후 결과에서 정책 위반 문서를 제거한다. Pre-retrieval이 불가능한 복잡한 정책(동적 계산이 필요한 경우)에 사용한다. 실제 반환되는 문서 수가 top_k보다 적어질 수 있으므로 여유 있게 검색해야 한다.

Policy as Code

정책을 코드로 선언하고 검색 파이프라인이 이를 평가한다. OPA(Open Policy Agent) 같은 정책 엔진을 RAG 파이프라인에 통합하는 방식이다.

# OPA 정책 예시
allow {
    input.user.role == "legal"
    input.document.classification != "attorney-client-privilege"
}

문서 메타데이터 설계

정책 기반 검색이 효과적으로 동작하려면 인덱싱 시 문서에 충분한 메타데이터를 부착해야 한다.

{
  "doc_id": "contract-2024-001",
  "content": "...",
  "metadata": {
    "classification": "confidential",
    "allowed_roles": ["legal", "c-suite"],
    "department": "legal",
    "valid_until": "2025-12-31",
    "pii_contains": false,
    "region": "KR"
  }
}

주의사항

  • 필터 과잉: 너무 엄격한 필터는 재현율을 낮춰 유용한 문서를 놓칠 수 있다.
  • 메타데이터 정확성: 잘못된 메타데이터는 정책 우회로 이어진다. 인덱싱 시 메타데이터 검증이 필수다.
  • 정책 동기화: 권한 시스템(IAM, AD)과 검색 필터가 항상 동기화되어야 한다.

관련 개념

  • Federated Retrieval: 데이터 격리가 필요한 환경에서의 분산 검색 전략
  • Tiered Retrieval: 비용·품질 기준으로 검색을 계층화하는 기법
  • RAG Routing: 정책을 포함한 다양한 기준으로 검색 경로를 분기하는 기법