사내 AI가 휴가 규정을 찾는다고 해보겠습니다. 질문과 의미가 비슷한 문서는 많지만, 해외 지사의 문서나 폐기된 예전 규정까지 답에 들어오면 곤란합니다. 이때 문서 내용만 비교하지 않고 국가와 날짜, 문서 상태를 함께 걸러야 합니다.
메타데이터 필터링은 문서에 붙인 날짜, 언어, 종류와 권한 같은 필드 값으로 검색할 후보를 포함하거나 제외하는 방법입니다. 질문과 의미가 가까운지를 계산하는 검색과 함께 쓰되, 맡는 역할은 다릅니다.
이 글은 Amazon S3 Vectors, Microsoft Azure AI Search와 Pinecone의 공식 문서를 기준으로 작성했습니다.
문서 내용 밖의 조건으로 좁히는 검색
메타데이터는 문서를 설명하는 구조화된 값입니다. 문서 본문이 휴가 신청 방법이라면, 메타데이터에는 아래와 같은 값을 붙일 수 있습니다.
{
"language": "ko",
"region": "KR",
"document_type": "policy",
"status": "active",
"updated_year": 2026
}
사용자가 한국 지사의 최신 휴가 규정을 물으면 질문의 의미만으로 찾지 않고 region=KR, status=active, updated_year>=2026 같은 조건을 함께 보냅니다.

이때 본문과 의미가 비슷해도 조건에 맞지 않는 문서는 후보에서 빠집니다. 반대로 조건에 맞더라도 질문과 전혀 관련이 없으면 의미 검색 점수가 낮아 선택되지 않을 수 있습니다. 필터는 관련도를 대신하지 않고, 검색할 범위를 정합니다.
사전 필터와 사후 필터의 차이
필터를 언제 적용하는지도 결과에 영향을 줍니다.
| 방식 | 작동 순서 | 장점과 주의점 |
|---|---|---|
| 사전 필터 | 조건에 맞는 문서를 먼저 남긴 뒤 벡터 검색 | 허용된 범위 안에서 가까운 문서를 찾지만, 조건이 너무 좁으면 후보가 부족할 수 있음 |
| 사후 필터 | 벡터 검색으로 후보를 찾은 뒤 조건에 맞지 않는 문서를 제거 | 검색 비용을 예측하기 쉽지만, 처음 뽑은 후보에 조건을 만족하는 문서가 적으면 결과를 놓칠 수 있음 |
Azure AI Search는 사전 필터와 사후 필터를 모두 지원하고, 적용 시점에 따라 검색 누락 가능성과 처리 시간이 달라질 수 있다고 설명합니다. Amazon S3 Vectors는 벡터 후보를 찾는 동안 필터 조건을 함께 확인합니다.
모든 벡터 데이터베이스가 같은 방식과 이름을 쓰는 것은 아닙니다. 실제 구현에서는 제품의 필터 모드, 지원 필드와 연산자를 확인해야 합니다.
날짜, 권한과 문서 종류의 실제 용도
메타데이터 필터는 질문의 조건이 구조화된 값으로 바뀔 수 있을 때 유용합니다.
- 날짜: 2026년 이후에 수정된 자료만 검색합니다
- 언어와 지역: 한국어이면서 한국 정책에 해당하는 문서만 남깁니다
- 문서 종류: 블로그가 아니라 공식 매뉴얼만 찾습니다
- 상태: 초안과 폐기 문서를 빼고 현재 사용 중인 문서만 남깁니다
- 권한: 사용자가 볼 수 있는 부서와 프로젝트의 자료만 검색합니다
다만 권한 필터는 원본 저장소와 API의 접근 통제를 대신하지 않습니다. 필터 조건이 빠지거나 잘못 전달될 때도 자료가 노출되지 않도록 보안은 여러 단계에서 막아야 합니다.
또한 날짜 필드가 있다고 문서 내용까지 최신이라는 뜻은 아닙니다. updated_at 값이 실제 본문 변경과 맞는지, 폐기한 문서의 상태가 제대로 바뀌었는지 확인해야 합니다.
시맨틱 검색과 리랭킹의 차이
RAG 검색에서는 여러 기술이 이어서 작동합니다.
하이브리드 검색은 키워드 검색과 벡터 검색을 함께 쓰는 방법입니다. 메타데이터 필터는 그 검색의 앞이나 뒤에서 후보 범위를 좁힐 수 있습니다.
스키마 마크업과도 다릅니다. 스키마 마크업은 공개 웹페이지의 정보를 정해진 어휘로 표현하는 방식입니다. 사이트에 구조화 데이터를 넣었다고 ChatGPT나 Perplexity가 그 값을 내부 메타데이터 필터에 쓴다는 공식 근거는 확인되지 않았습니다.
AI 검색과 만나는 범위
메타데이터 필터링은 자체 RAG와 벡터 검색에서 직접 설정할 수 있습니다. 문서를 저장할 때 필드를 붙이고, 질의할 때 조건을 보내기 때문입니다.
공개 AI 검색은 다릅니다. 사이트 운영자는 ChatGPT, Gemini, Claude와 Perplexity가 검색 후보를 어떤 필드로 거르는지 볼 수 없습니다. 발행일, 언어와 문서 유형을 분명하게 제공하는 일은 정보 관리에 도움이 되지만, 특정 서비스가 이를 필터 조건으로 사용한다고 단정할 수는 없습니다.
따라서 메타데이터 필터링을 GEO 순위 요인처럼 설명하면 범위를 벗어납니다. 이 용어가 검색 실무에서 중요한 이유는 자체 지식 검색을 설계하고, AI 검색이 후보를 고르는 과정에 내용 외 조건도 개입할 수 있다는 점을 이해하는 데 있습니다.
자체 RAG에서 확인할 항목
필터를 넣은 뒤에는 결과가 줄었다는 사실보다 정답이 남았는지 봐야 합니다.
- 저장된 문서에 필요한 필드와 값이 빠짐없이 들어갔는지 확인합니다
- 사용자의 질문이 올바른 필터 조건으로 바뀌었는지 봅니다
- 필터 적용 전후의 후보 수와 상위 문서를 비교합니다
- 정답 문서가 조건 때문에 잘못 빠지지 않았는지 확인합니다
- 권한이 없는 문서가 어떤 질문에서도 나오지 않는지 따로 시험합니다
조건을 너무 많이 걸면 결과가 0개가 될 수 있습니다. 이때 필터를 모두 풀기보다 어떤 조건에서 정답이 사라졌는지 하나씩 확인하세요. 문서에 필드가 누락된 문제와 질문에서 조건을 잘못 만든 문제는 고치는 곳이 다릅니다.
자주 묻는 질문
메타데이터 필터링은 벡터 검색에만 쓰나요?
아닙니다. 구조화된 필드로 검색 범위를 제한하는 방식은 일반 검색에도 쓸 수 있습니다. 다만 RAG에서는 벡터 검색과 함께 설명되는 경우가 많아 날짜, 권한과 문서 종류를 조건으로 거르는 예시가 자주 나옵니다.
필터를 먼저 적용하는 방식이 항상 더 좋은가요?
제품과 데이터에 따라 다릅니다. 사전 필터는 조건 안에서 가까운 문서를 찾는 데 유리하지만, 매우 좁은 조건은 처리 비용을 늘리거나 후보를 없앨 수 있습니다. 실제 질문과 정답 문서로 검색률과 응답 시간을 함께 시험해야 합니다.
메타데이터 필터링으로 최신 정보만 찾을 수 있나요?
수정일 필드가 정확하다면 최근 문서로 범위를 좁힐 수 있습니다. 하지만 날짜가 최신이어도 본문이 낡았을 수 있으므로 데이터 신선도는 별도로 확인해야 합니다.
구조화 데이터를 넣으면 AI가 필터에 쓰나요?
그렇게 단정할 수 없습니다. 공개 웹의 구조화 데이터와 자체 벡터 저장소의 메타데이터는 다른 층의 정보입니다. AI 검색 서비스가 어떤 필드를 내부 필터에 쓰는지는 공식 문서가 밝힌 범위에서만 말해야 합니다.
함께 알아두면 좋은 용어
- 벡터 데이터베이스: 임베딩 벡터와 메타데이터를 저장하고 검색하는 시스템
- 시맨틱 검색: 단어가 아니라 의미의 가까움을 기준으로 찾는 검색
- 리랭커: 1차 검색 후보의 관련도를 다시 평가해 순서를 조정하는 모델
- RAG: 찾은 외부 자료를 생성 모델에 제공해 답을 만드는 구조