> ## Documentation Index
> Fetch the complete documentation index at: https://docs.platform.nora.my/llms.txt
> Use this file to discover all available pages before exploring further.

# 필터

> 메타데이터로 리트리벌 후보 좁히기 — 태그, 소스, 날짜, 엔티티.

필터는 랭킹 **전에** 실행됩니다. 기준에 매치되는 청크만 남기도록 후보 풀을 줄여서 랭킹이 집중된 세트에서 동작하게 합니다.

## 필터할 수 있는 것

강화된 모든 청크는 메타데이터를 가짐. 흔한 필터 가능 필드:

* **Tags** — 자동 태그 강화기가 추가한 태그.
* **Source** — 어느 문서·폴더·데이터베이스 로우.
* **Path** — 헤딩 경로 또는 폴더 위치.
* **Language** — 청크의 감지된 언어.
* **Entities** — 추출된 사람·조직·제품.
* **Modified date** — 소스 마지막 업데이트 시점.
* **Custom fields** — 인라인 강화기가 쓴 것.

필드는 [Enrich 스테이지](/ko/build/foundry/enrich) 로 추가.

## 필터 표현식

필터는 JSON 유사 술어로 표현. 예:

```json theme={null}
{ "tag": "billing" }
```

```json theme={null}
{ "tag": { "$in": ["billing", "pricing"] } }
```

```json theme={null}
{ "modified_at": { "$gte": "2026-01-01" } }
```

```json theme={null}
{ "$and": [
  { "tag": "customer-facing" },
  { "language": "en" },
  { "not": { "tag": "deprecated" } }
] }
```

연산자: `$eq`, `$ne`, `$in`, `$nin`, `$gt`, `$gte`, `$lt`, `$lte`, `$contains`, `$startsWith`, `$exists`, `$and`, `$or`, `$not`.

## 세 레벨의 필터

필터는 레벨 간 합성됨. 상위 레벨의 설정이 모든 하위 레벨에 적용.

1. **데이터 소스 레벨** — 문서 컬렉션에 붙임. 그것에 대한 모든 쿼리에 적용.
2. **프리셋 레벨** — 리트리벌 프리셋 안. 그 프리셋을 쓰는 모든 Agent 에 적용.
3. **쿼리 레벨** — 호출별, 런타임에 설정. Agent 가 특별한 도구 인자로, 또는 여러분 코드로.

런타임 필터는 프리셋 필터에 병합됨 (둘 다 매치해야 함). 이렇게 하면 Agent 가 "고객 대상 문서만 검색 가능" 을 시스템 룰로 노출하지 않고 더 좁힐 수 있음.

## 변수로부터의 동적 필터

필터는 Flow 변수를 참조 가능:

```json theme={null}
{ "department": "{vars.CURRENT_USER_DEPT}" }
```

흔한 패턴: 테넌트별 스코핑. 실행 시작 시 변수를 요청자의 테넌트 ID 로 설정, 모든 리트리벌이 자동 스코프.

## 테스트

프리셋 **Test** 패널에서 런타임 필터를 설정하고 결과가 어떻게 바뀌는지 볼 수 있음. 배포 전 접근 통제 검증에 좋음.

## 성능

인덱스된 필드 (태그, 소스, 날짜) 의 필터는 무료 — 인덱스 스캔 시점에 실행. 인덱스 안 된 커스텀 필드 필터는 fetch 후 스캔으로 저하되고 컬렉션 크기가 커질수록 느려짐. 컬렉션 설정에서 hot 필터 필드에 인덱스 추가.
