VERIFIER CORE · 주장 대 출처 검증
텍스트가 주장하는 바를 그 출처가 말하는 바와 비교하여, 여섯 가지 상태 중 하나와 근거를 함께 반환합니다.
Verifier Core는 챗봇이 아니라 커널입니다. 주장, 당신의 도메인이 출처를 어떻게 명명하는지 아는 리졸버, 그리고 대조할 정본 텍스트를 주면, 그 주장이 성립하는지 알려주고 어느 경우든 근거를 보여줍니다.
결정론적입니다: 어떤 언어 모델도 판정 경로에 관여하지 않습니다. 같은 텍스트, 같은 출처, 같은 판정 — 1년 뒤에도 재현 가능하며, 이것이 이를 의견이 아니라 증거로 쓸 수 있게 만드는 이유입니다.
이것이 아닌 것
시장에는 이것처럼 들리지만 그렇지 않은 것들이 여럿 있습니다.
환각 탐지기가 아닙니다
어떤 모델도 개연성을 판단하지 않습니다. 특정 주장을 특정 출처와 대조할 뿐, 그 이전 단계는 다루지 않습니다.
신뢰도 점수를 주지 않습니다
0과 1 사이의 숫자가 아니라 상태와 그 근거를 반환합니다. 점수는 임계값을 어디에 둘지라는 어려운 결정을 그저 읽는 사람에게 떠넘길 뿐입니다.
검색 엔진이 아닙니다
문서를 대신 찾아주지 않습니다. 코퍼스는 당신이 제공하고, 엔진은 제공된 것과 주장을 대조합니다.
추론을 검사하지 않습니다
개별 주장을 그 출처와 대조해 검증할 뿐, 거기서 도출된 추론은 검사하지 않습니다. 올바르게 인용된 두 전제가 잘못된 결론으로 이어져도 통과합니다 — 추론 단계는 여기서 검사하는 대상이 아니며, 이름이 암시할 수 있는 바와 달리 이 페이지는 그것을 명확히 밝힙니다.
그 위에 짓도록 설계됨
애플리케이션이 아니라 커널입니다. 서너 개의 작은 조각만 가져오면 나머지는 이 엔진이 처리합니다.
각 산업 분야는 정확히 한 지점에서만 다릅니다: 그 도메인에서 출처를 어떻게 명명하는가. 정본 텍스트를 가져오고, 해당 날짜에 여전히 유효했는지 확인하고, 의미를 비교하고, 결과를 구성하는 일 — 이는 법률사무소든 약국이든 정비소든 공통되므로, 통합할 때마다가 아니라 커널 안에 단 한 번 존재합니다.
ReferenceResolver
12줄
당신의 도메인에서 출처를 명명하는 방식.
CorpusPort
약 20줄
정본 텍스트가 어디서 오는가.
DomainPack (선택)
약 40줄
당신의 산업 분야에서 쓰이는 수량 어휘.
LanguagePack (선택)
네 개 전부, 또는 전무
당신 언어의 부정, 생략, 날짜, 표기 변형 계층.
SemanticAdvisor (선택)
—
판정을 완화할 수 있는 두 번째 의견 — verified로 승격시키는 일은 결코 없습니다.
12줄짜리 리졸버가 논거의 대부분입니다. 이는 약속이 아니라 실제 코드입니다 — CI에서 실행되는 테스트 스위트에서, 그 테스트를 위해 고안된 가상의 도메인(첨부문서 조항 참조)에 대해 그대로 가져온 것입니다:
const fichaTecnica = {
id: "demo:ficha-tecnica@1",
resolve(text) {
const out = [];
const re = /secci[oó]n\s+(\d+\.\d+)/gi;
let m;
while ((m = re.exec(text)) !== null) {
out.push({
id: `smpc:${m[1]}`,
raw: m[0],
span: [m.index, m.index + m[0].length],
});
}
return out;
},
};법률사무소와 실험실과 정비소 사이에서 달라지는 것은 오직 이 첫 단계뿐입니다: 그들의 문서에서 출처 참조가 어떤 모습인지 인식하는 일. 나머지 — 정본 텍스트를 가져오고, 유효성을 확인하고, 의미를 비교하고, 판정을 구성하는 일 — 은 커널이 단 한 번 처리하는 몫입니다.
계산만으로는 풀리지 않는 세 가지
논지를 쉬워 보이게 만들려고 지어낸 예시가 아니라, 실측된 사례입니다.
페이지에 데모를 싣는다면 이 셋이 보여줄 가치가 있습니다: 단순한 수치 비교나 텍스트 유사도 검사만으로는 셋 중 어느 것도 잡아내지 못합니다.
바뀌지 않는 숫자 — 에어캐나다 143편
출처: "Uplift 22300 kg of fuel before departure today."
텍스트: "Uplift 22300 lb of fuel before departure today."1983년, 보잉 767기는 지상 계산이 킬로그램을 가정한 상황에서 파운드 단위로 연료를 보급받았고, 매니토바 상공 41,000피트에서 연료가 바닥났습니다. 두 텍스트의 숫자는 동일하므로, 크기만 비교하는 수치 검사는 이를 잡아낼 수 없습니다 — 단위가 다르다는 것을 알아야 합니다. 이는 실패 유형을 보여주는 역사적 예시이며, 오직 그 이유만으로 여기에 쓰였습니다: 고객도 아니고, 이 엔진이 막아낸 사건도 아닙니다.
두 가지를 뜻하는 단어 — 갤런
갤런은 영국에서 4.546L, 미국에서 3.785L로 20% 차이가 나며, 두 문서 모두 영어일 수 있습니다. 지역이 선언되지 않으면 엔진은 판단을 보류하고 그렇게 말합니다, 추측하지 않고. GB로 선언하면 한 방향으로 풀리고, US로 선언하면 같은 쌍이 실제 불일치가 됩니다. 같은 텍스트, 서로 다른 두 답 — 모순이 아니라, 불완전했던 질문을 선언된 지역이 완성한 것입니다. 언어와 측정 관행은 여기서 별개의 축입니다, 휴대전화의 지역이 언어와 별개이듯이.
반쪽짜리 진실 — 빠진 부분
출처: "간부전, 중증 신부전, 그리고 임신 중에는 금기"
텍스트: "간부전, 중증 신부전에는 금기"임신 항목이 빠졌습니다. 둘 사이의 텍스트 유사도: 1.000 — 단어 하나 바뀐 것 없이, 조항 하나가 그저 빠졌을 뿐입니다. 유사도 점수만으로는 이를 verified로 판정했을 것입니다.
불리언이 아닌 여섯 상태
시장 대부분은 참 또는 거짓을 반환합니다. 그 구분 자체가 제품입니다.
무언가를 모르는 이진 엔진은 어느 한쪽으로 반올림할 수밖에 없고, 두 방향 모두 위험합니다. 여섯 상태는 "이 출처는 존재하지 않는다" — 텍스트에 대한 실제 지적 — 를 "확인할 수 없었다" — 우리 쪽의 공백 — 와 분리하고, 이를 다시 "우리가 다루는 범위 밖" — 실패가 아니라 범위 결정 — 과 분리합니다.
verified
주장이 출처에 대해 성립함
mismatch
출처가 다른 내용을 말함
not_found
코퍼스는 정상 작동하며 그 출처가 존재하지 않음 — 텍스트에 대한 지적
derogated
존재했지만 해당 사실 발생일에는 효력이 없었음
pending
확인할 수 없었음 — 텍스트가 아니라 우리 쪽의 공백
not_verifiable
이 배포가 다루는 범위 밖
모른다는 것은 비난하는 것과 다릅니다. 정직한 답이 pending이어야 할 때 not_found를 반환하면, 지적으로 위장된 거짓 비난이 됩니다 — 검증기가 저지를 수 있는 가장 값비싼 실수인데, 읽는 사람에게는 정확히 진짜 적발처럼 보이기 때문입니다. 그래서 코퍼스는 엔진이 실패의 모양만으로 추론하게 두지 않고, 둘 중 어느 쪽인지 직접 선언합니다.
슬로건이 아니라 구조로 무관합니다
도메인, 언어, 코퍼스, 모델 모두 포트이며, 어느 것도 내부에 고정 배선되어 있지 않습니다.
업종 지식은 리졸버와 선택적 도메인팩을 통해 들어올 뿐 커널에 고정 배선되지 않으므로, 제약 첨부문서를 검사하는 것과 같은 엔진이 핵심부를 건드리지 않고도 정비 기록이나 신용 계약서를 검사합니다. 오늘날 여섯 개 언어가 완전하고 인증된 지원을 받습니다 — 영어, 스페인어, 프랑스어, 독일어, 이탈리아어, 포르투갈어 — 각각 부정, 생략, 날짜, 표기 변형에 대한 자체 완전한 계층을 갖추고 있습니다. 언어는 네 계층을 한꺼번에 등록하거나 전혀 등록하지 않습니다: 언어별 예외를 둔 공유 정책이야말로 언어 간 오염이 스며드는 방식이므로, 그런 것은 존재하지 않습니다.
언어와 측정 관행은 별도로 선언됩니다, 휴대전화의 지역이 언어와 무관하듯이: 영국 문서와 미국 문서가 둘 다 영어이면서도 숫자가 의미하는 바에는 합의하지 않을 수 있습니다. 측정 체계를 선언하지 않은 채로 두는 것은 미터법을 가정하는 것과 다릅니다 — 그것은 진짜 세 번째 답이며, 엔진은 추측하는 대신 그 답을 내놓습니다.
그럼에도 우리가 보여주는 것
코퍼스는 스스로 알려진 공백을 공개합니다.
스트레스 테스트 리더보드는 기준 엔진을 여러 베이스라인과 겨루게 하고, 적중뿐 아니라 실패도 함께 공개합니다 — 단일 항목에서 기준 엔진을 앞서는 베이스라인까지 포함해서요, 모든 것을 거부하는 검증기는 서류상 누출이 0으로 보이지만 그것은 숨을 만한 미덕이 아니기 때문입니다. 별도로: 런타임 의존성 0개, 그리고 네트워크 접속 없이 실행되는 에어갭 설치·검증 점검이 있어, 위의 결정론 주장을 그냥 믿는 대신 직접 테스트할 수 있습니다.
공백을 선언하지 않은 인증서는 완벽하거나 거짓말이거나 둘 중 하나이며, 어느 쪽도 믿을 수 없습니다.
VERIFIER CORE와 GRUNDNORM
경쟁이 아니라 상호보완 — 같은 문제의 반대편 끝.
Grundnorm은 누가 언제 기록을 검증했는지를 봉인합니다: 사후에 기록이 손대어져도 살아남는 암호학적 출처 증명입니다. Verifier Core는 특정 주장이 그 출처에 대해 성립하는지 확인합니다: 비교 그 자체입니다. 하나는 기록이 봉인된 후 변조되지 않았음을 증명하고, 다른 하나는 봉인 당시 그 기록이 말한 내용이 실제로 사실이었음을 증명합니다.
Grundnorm의 작동 방식 보기이 계층이 필요한 산업 분야를 구축하고 계신가요?
@veredicto/core는 설치 가능한 패키지로 배포되지 않습니다 — 애플리케이션에 내장되는 것이지, 그 안으로 다운로드되는 것이 아닙니다. 무엇을 기준으로 주장을 검증해야 하는지 알려주시면, 포트를 함께 살펴보겠습니다.