유효한 정보가 전부 필요한 정보는 아니다.


검증을 통과한 정보가 1,000개 있다

기계적 검증이 작동했다고 하자.

형식이 올바르고, 필수 필드가 존재하고, 식별자가 유효하고, 타입이 적합하고, 참조가 무결한 서술 1,000개가 남았다.

전부 유효한 정보다. 규격에 맞다. 거부할 이유가 없다.

그런데 컨텍스트 윈도우에는 300개만 들어간다.

어떤 300개를 넣을 것인가.

이것이 필터의 문제다.


검증과 필터는 다른 질문을 한다

검증이 묻는 것: “이 정보는 유효한가?” 필터가 묻는 것: “이 정보는 지금 필요한가?”

검증은 정보 자체의 속성을 본다. 형식이 맞는가. 필드가 있는가. 참조가 유효한가. 정보가 무엇에 대한 것인지, 무슨 목적으로 쓰일지는 관심 없다.

필터는 정보와 상황의 관계를 본다. 지금 이 추론에 관련 있는가. 이 정보를 신뢰할 수 있는가. 이 정보가 충분히 최신인가.

검증은 맥락 없이 가능하다. 규격만 있으면 된다. 필터는 맥락 없이 불가능하다. “지금 무엇이 필요한가"를 알아야 한다.

검증은 확정적이다. 유효하거나 유효하지 않다. 필터는 판단이다. 관련성에는 정도가 있고, 신뢰도에는 기준이 있고, 최신성에는 맥락이 있다.

검증은 싸다. 필터는 상대적으로 비싸다.

그래서 검증이 먼저 오고 필터가 뒤에 온다. 검증이 걸러낸 뒤에 필터가 판단하면, 비싼 판단의 대상이 줄어든다.


필터가 판단하는 세 가지

필터가 보는 것은 크게 세 가지다.

관련성: 지금 이 추론에 필요한가

사용자가 “삼성전자의 2024년 3분기 영업이익"을 물었다.

검증을 통과한 유효한 서술 중에 다음이 있다.

  • 삼성전자의 2024년 3분기 영업이익은 9.18조원이다.
  • 삼성전자의 2024년 3분기 매출은 79조원이다.
  • 삼성전자의 2023년 3분기 영업이익은 2.43조원이다.
  • 삼성전자의 반도체 부문 설비투자 계획은 2025년 기준 53조원이다.
  • 삼성전자의 본사는 수원에 있다.

전부 유효하다. 전부 삼성전자에 대한 서술이다. 전부 컨텍스트에 넣을 것인가.

본사 위치는 관련 없다. 설비투자 계획은 관련이 낮다. 2023년 영업이익은 비교 맥락에서 유용할 수 있다. 매출은 영업이익과 관련이 높다.

자연어 RAG에서는 이 판단을 임베딩 유사도에 맡긴다. “삼성전자 영업이익"과 벡터 거리가 가까운 순서. 그러나 이미 논의했듯이, 유사함과 관련됨은 다르다.

구조화된 표현에서는 관련성 판단의 재료가 다르다. 서술이 가리키는 엔티티가 무엇인가. 삼성전자. 서술의 속성이 무엇인가. 영업이익. 서술의 시점이 무엇인가. 2024년 3분기.

엔티티, 속성, 시점이 필드로 존재하면 “같은 엔티티의 같은 속성의 같은 시점"을 정확히 찾을 수 있다. 그리고 “같은 엔티티의 같은 속성의 다른 시점"을 의도적으로 포함하거나 제외할 수 있다. 벡터 거리가 아니라 필드 매칭이다.

관련성은 여전히 판단이다. 확정적이지 않다. 그러나 판단의 입력이 벡터 거리인지 구조화된 필드인지에 따라 정확도가 다르다.

신뢰도: 이 정보를 믿을 수 있는가

같은 내용에 대해 두 개의 서술이 있다.

  • 출처: 삼성전자 IR 공시. 확신도: 1.0. “2024년 3분기 영업이익 9.18조원.”
  • 출처: 익명 블로그. 확신도: 0.3. “2024년 3분기 영업이익 약 10조원.”

어느 것을 컨텍스트에 넣을 것인가.

당연히 전자다.

그런데 이 판단이 “당연히"가 되려면 출처와 확신도가 읽을 수 있는 형태로 존재해야 한다.

자연어 청크에서는 출처가 텍스트 어딘가에 묻혀 있거나 없다. 확신도는 표현된 적이 없다. 두 청크를 비교해서 어느 쪽이 신뢰할 만한지 판단하려면 LLM이 읽고 추론해야 한다.

구조화된 표현에서는 출처와 확신도가 필드다. “확신도 0.5 미만 제외"가 비교 한 번이다. “출처가 1차 자료인 것만 포함"이 필드 매칭이다.

신뢰도 필터링의 비용이 LLM 추론에서 필드 비교로 바뀐다.

최신성: 이 정보가 충분히 최신인가

“삼성전자의 CEO는 누구인가.”

  • 시점: 2024년 3월. “삼성전자 대표이사 경계현.”
  • 시점: 2022년 12월. “삼성전자 대표이사 한종희, 경계현.”

둘 다 유효하다. 형식도 맞고 출처도 있다. 그러나 최신 것이 필요하다.

자연어에서 시점은 텍스트에 언급되어 있을 수도 있고 없을 수도 있다. “작년 기준"이라고 쓰여 있으면 “작년"이 언제인지도 계산해야 한다.

구조화된 표현에서 시점은 필드다. ISO 8601 형식의 날짜. “가장 최근 시점의 서술만 포함"이 정렬 한 번이다.

더 중요한 것은 최신성의 기준이 맥락에 따라 다르다는 점이다. CEO를 물으면 가장 최근 것이 필요하다. 역대 CEO를 물으면 전부 필요하다. 매출 추이를 물으면 최근 8분기가 필요하다.

시점이 필드로 존재하면 이 조건을 쿼리로 표현할 수 있다. 시점이 자연어에 묻혀 있으면 매번 추출해야 한다.


필터는 왜 기계적 검증이 아닌가

여기서 중요한 구분이 있다.

필터의 세 기준 — 관련성, 신뢰도, 최신성 — 중에서 신뢰도와 최신성은 구조화된 표현에서 상당 부분 기계적으로 처리할 수 있다. 필드 비교, 값 정렬, 범위 필터.

그런데 왜 이것을 “검증"이 아니라 “필터"라고 부르는가.

검증은 정보 자체의 속성만 본다. “이 서술에 시점 필드가 있는가.” 있거나 없다. 맥락 불필요.

필터는 정보와 상황의 관계를 본다. “이 서술의 시점이 지금 이 질문에 적절한가.” 질문이 무엇인지 알아야 답할 수 있다.

같은 시점 필드를 보지만, 검증은 “존재 여부"를 확인하고 필터는 “적절성"을 판단한다.

존재 여부는 맥락이 필요 없다. 적절성은 맥락이 필요하다.

이 차이가 파이프라인에서 두 단계를 분리하는 이유다.


필터의 비용 구조

필터는 검증보다 비싸다. 그러나 얼마나 비싼지는 표현 방식에 따라 다르다.

자연어 파이프라인에서의 필터: 관련성 판단 — LLM 추론 또는 임베딩 유사도 계산. 신뢰도 판단 — LLM이 텍스트에서 출처 정보를 추출하고 평가. 최신성 판단 — LLM이 텍스트에서 시점 정보를 추출하고 비교. 전부 추론이다. 전부 비싸다.

구조화된 표현에서의 필터: 관련성 판단 — 엔티티/속성 필드 매칭 + 맥락 기반 판단. 신뢰도 판단 — 확신도 필드 비교. 출처 필드 매칭. 최신성 판단 — 시점 필드 정렬. 범위 비교. 신뢰도와 최신성은 필드 연산이다. 관련성만 판단이 필요하다.

즉 구조화하면 필터의 세 기준 중 두 가지가 기계적 연산으로 전환된다. 남는 것은 관련성 하나. 관련성조차 “이 엔티티의 이 속성이 질문과 관련 있는가"로 좁아지므로 “이 텍스트 뭉치가 질문과 비슷한가"보다 판단이 명확해진다.

필터의 총 비용이 크게 줄어든다.


필터가 없으면 무엇이 일어나는가

검증만 하고 필터 없이 컨텍스트에 넣는다면.

유효한 정보 1,000개가 전부 들어간다. 그 중 지금 필요한 것은 30개다.

LLM은 1,000개를 전부 읽는다. 읽는 데 비용이 든다. 970개의 불필요한 정보가 주의를 분산시킨다. 관련 없는 정보가 많을수록 환각 가능성이 높아진다는 연구 결과가 있다. 정작 필요한 30개에 대한 추론 품질이 떨어진다.

윈도우도 낭비된다. 1,000개가 차지하는 공간에 970개분의 낭비가 있다. 그 공간에 더 관련 있는 다른 정보를 넣을 수 있었다.

필터는 유한한 윈도우를 유한하게 다루는 것이다. 검증이 “들어올 자격이 있는가"를 확인한다면, 필터는 “들어올 이유가 있는가"를 판단한다.

자격은 형식의 문제다. 이유는 맥락의 문제다. 둘 다 필요하다.


필터는 정책이다

한 가지 더 중요한 점이 있다.

필터의 기준은 고정되어 있지 않다. 맥락에 따라 달라진다.

의료 상담 에이전트의 필터: 신뢰도 임계값이 높다. 확신도 0.9 미만은 제외한다. 최신성 기준이 엄격하다. 3년 이상 된 의학 정보는 제외한다. 출처가 peer-reviewed journal이 아니면 제외한다.

캐주얼 대화 에이전트의 필터: 신뢰도 임계값이 낮다. 대략적인 정보도 허용한다. 최신성 기준이 유연하다. 오래된 정보도 맥락에 따라 포함한다. 출처 제약이 느슨하다.

같은 정보가 한 에이전트에서는 통과하고 다른 에이전트에서는 거부된다. 정보가 변한 것이 아니다. 정책이 다른 것이다.

이것은 필터가 단순한 기술적 문제가 아니라 설계의 문제임을 의미한다. “무엇을 컨텍스트에 넣을 것인가"는 “이 에이전트가 어떤 기준으로 작동하기를 원하는가"와 같은 질문이다.

구조화된 표현에서 이 정책은 선언적으로 표현된다. “확신도 >= 0.9, 시점 >= 2022년, 출처 유형 = peer-reviewed.” 쿼리 한 줄이다.

자연어에서 이 정책은 프롬프트에 자연어로 쓰인다. “신뢰할 수 있는 최근 정보만 참고해주세요.” LLM이 이것을 일관되게 따를지는 확률의 문제다.


요약

검증을 통과한 정보가 전부 필요한 정보는 아니다. 유한한 컨텍스트 윈도우에는 지금 이 추론에 필요한 것만 들어가야 한다.

필터는 세 가지를 판단한다. 관련성 — 지금 이 질문에 필요한 정보인가. 신뢰도 — 이 정보를 믿을 수 있는가. 최신성 — 이 정보가 충분히 최신인가.

검증과 필터는 다른 질문을 한다. 검증은 “유효한가”, 필터는 “필요한가”. 검증은 맥락 없이 가능하고, 필터는 맥락이 있어야 가능하다. 검증이 먼저 오고, 필터가 뒤에 온다.

구조화된 표현에서 필터의 세 기준 중 두 가지 — 신뢰도와 최신성 — 는 필드 연산으로 전환된다. 남는 것은 관련성 하나이며, 이마저도 구조적 필드 매칭으로 판단이 명확해진다.

필터는 정책이다. 같은 정보가 맥락에 따라 포함되거나 제외된다. 구조화된 표현에서 이 정책은 쿼리로 선언된다. 자연어에서 이 정책은 프롬프트에 희망으로 적힌다.