Sweep thousands of leases for compliance using Amazon Quick and the Adjudicated Query pattern
Quick Summary
Adjudicated Query는 Amazon Quick의 자연어 인터페이스와 결정론적 규칙 엔진을 결합해, AI가 준수 여부를 판정하지 않으면서도 대규모 임대차 계약 점검의 완전성과 판정 근거를 입증하도록 설계한 패턴이다.
🖼️ 인포그래픽

🖼️ 4컷 인포그래픽

💡 한 줄 요약
Adjudicated Query는 Amazon Quick의 자연어 인터페이스와 결정론적 규칙 엔진을 결합해, AI가 준수 여부를 판정하지 않으면서도 대규모 임대차 계약 점검의 완전성과 판정 근거를 입증하도록 설계한 패턴이다.
📌 핵심 요약
- 원문은 여러 주에 걸친 50,000건의 임대차 계약을 관리하는 사례로, 법률 변경에 따른 전수 점검과 사후 판정 근거의 필요성을 설명한다. RAG는 순위가 매겨진 표본만 반환하므로 완전성을 보장할 수 없고, text-to-SQL은 잘못 생성된 조건이 점검 대상을 조용히 축소할 위험이 있다.
- Adjudicated Query에서 모델은 자연어 질문을 고정된 형식의 연산 호출로 바꾸고 반환 결과를 설명하는 역할만 맡는다. 결정론적 규칙 엔진은 버전이 있는 규칙 데이터를 적용하며, 준수·위반·모호·판독 불가 건수의 합이 스캔 건수와 같다는 완전성 확인서를 저장 전에 검증한다.
- 참조 아키텍처는 Amazon Quick, Amazon Cognito, Amazon API Gateway, AWS Lambda, Amazon Aurora Serverless v2, Amazon Quick Sight를 연결한다. 채팅과 대시보드는 같은 저장소를 사용하며, 채팅은 건수·완전성 확인서·표본을 전달하고 대시보드는 전체 결과와 개별 판정 근거를 보여준다.
- MCP 서버는 sweep_compliance, simulate_rule_change, explore_clauses, get_finding, list_rules, check_connection의 여섯 도구만 제공한다. 공식 준수 판정에는 모델을 사용하지 않으며, 탐색 결과와 표본을 공식 결과로 오인하지 않도록 모드 표시·주의 문구를 반복하고 전체 모집단의 실제 집계값을 모델에 제공한다.
- Amazon Bedrock은 탐색 경로에서만 Amazon Titan Text Embeddings V2와 Anthropic Claude Sonnet 5를 사용하며, 모델 가용성은 AWS Region에 따라 다르다. 샘플은 합성 데이터와 배포된 스택 대상 수용 테스트를 제공하고, 배포 전제 조건으로 us-east-1의 해당 모델 접근 권한, 인증 정보가 설정된 AWS CLI v2, Python 3.12, AWS CDK CLI용 Node.js 24를 제시한다.
🧩 주요 포인트
- 고정된 MCP 연산과 버전별 규칙 데이터 → 모델이 점검 대상 조건이나 판정을 생성하지 못하도록 경계를 두고, 법률 변경을 규칙 데이터 수정으로 처리한다.
- 완전성 확인서와 동일 저장소를 사용하는 채팅·대시보드 → 누락 여부를 수치로 검증하고 대규모 결과의 개별 판정 근거까지 추적할 수 있게 한다.
- 공식 판정과 탐색 경로의 분리, 반복되는 주의 문구와 실제 집계값 → 결정론적 결과가 채팅 모델의 재서술 과정에서 왜곡될 위험에 대응한다.
🧠 상세 정리
1. 대규모 임대차 준수 점검의 두 가지 요구
원문은 여러 주에 걸쳐 50,000건의 임대차 계약을 보유한 운영자를 예로 들어, 연체료 상한·통지 기간·보증금 한도에 관한 법률이 바뀔 때 어떤 계약이 새 기준을 벗어나는지 확인해야 한다고 설명한다. 계약이 적을 때는 법률 보조 인력이 직접 읽고 결과를 책임질 수 있지만, 규모가 커져 소프트웨어로 넘어가면 화면에 표시된 숫자를 독립적으로 검증하기 어려워진다. 따라서 첫 번째 요구는 완전성의 입증으로, ‘텍사스 계약 22,910건을 모두 확인했다’는 주장을 증명하고 평가하지 않은 기록을 누락시키지 않아야 한다. 두 번째 요구는 판정의 방어 가능성으로, 수개월 뒤 소송·감사·규제 검사에서도 어떤 버전의 규칙을 어떤 조항에, 어떤 방법으로, 언제, 누가 적용했는지 설명할 수 있어야 한다.
2. RAG와 text-to-SQL의 한계
원문은 이 문제를 일반적인 기업 내 검색과 구분하며, 자료에 접근하기 쉽게 만드는 것만으로는 전수 점검과 판정 근거의 요구를 충족하지 못한다고 주장한다. RAG의 유사도 검색은 순위가 매겨진 표본을 반환하므로, 어떤 임계값도 ‘모든 계약을 포함했다’는 뜻이 되지 않으며 제외한 기록까지 설명할 수 없다. text-to-SQL은 모집단 조회에 더 가까이 다가가지만, 모델이 잘못 생성한 조건이 대상을 조용히 줄일 수 있고 그 결과는 범위가 틀려도 정확한 숫자처럼 보인다. 원문의 비교표는 규칙 엔진과 BI만 사용하는 접근도 정확한 모집단·완전성·판정 근거를 제공할 수 있다고 제시한다. Adjudicated Query의 추가 가치는 이러한 보장을 유지하면서 자연어 접근을 제공하는 데 있으며, 기록 하나의 누락도 책임 문제로 이어지는 상황에 적합하다는 설명이다.
3. Adjudicated Query의 결정론적 경계
Adjudicated Query는 결정론적 규칙 엔진 위에 제한된 대화 계층을 두며, 모델의 역할을 자연어 질문의 형식화된 연산 호출과 반환 결과의 설명으로 한정한다. 모델은 쿼리를 작성하거나 점검 모집단을 정하거나 준수 여부를 판정하지 않고, 엔진은 gte·lte·equals·exists 같은 일반 비교 연산자를 사용한다. 규칙은 버전이 있는 데이터로 관리되며 엔진에 특정 관할이나 주제를 이름으로 구분하는 분기를 넣지 않으므로, 법률 변경은 코드 배포가 아니라 규칙집 행 수정으로 처리한다. 각 점검에서는 준수·위반·모호·판독 불가 건수의 합이 스캔 건수와 같다는 불변식을 계산하고, 무엇이든 저장하기 전에 이를 검증한다. 모집단 전체를 설명할 수 없는 실행은 완료되지 않으며, 채팅에는 건수·완전성 확인서·표시된 표본을 전달하고 전체 결과는 같은 저장소를 읽는 대시보드에서 확인하도록 분리한다.
4. 동일 저장소를 공유하는 참조 아키텍처
준수 담당자는 Amazon Quick의 채팅 에이전트로 질문하고 Amazon Quick Sight 대시보드로 전체 결과를 탐색하며, 두 화면은 같은 Amazon Aurora Serverless v2 저장소를 사용한다. 채팅 에이전트는 Amazon Cognito에서 OAuth 토큰을 받아 Amazon API Gateway HTTP API로 MCP 요청을 보내고, API Gateway는 토큰을 검증한 뒤 AWS Lambda로 전달한다. Lambda는 MCP 서버와 규칙 엔진을 호스팅하고 RDS Data API로 Aurora를 읽고 쓰며, Amazon Bedrock은 탐색용 조항 검색 경로에서만 호출한다. Aurora는 Postgres와 pgvector를 사용해 규칙집·계약 기록·추출 상태·판정·실행 기록을 함께 보관하므로, 완전성 확인서를 SQL 건수 집계로 검증할 수 있다. Amazon Quick Sight는 VPC 연결로 Aurora에 접근해 점검 실행과 심각도 구간별 전체 판정 표를 제공하고, 채팅에는 확인서와 대시보드 링크를 전달해 10,800개 행 같은 대량 결과를 채팅 메시지에 담는 한계를 해결한다.
5. 여섯 MCP 도구의 서로 다른 결과 의미
MCP 서버는 정확히 여섯 도구를 노출하고 각각의 결과가 공식 판정인지, 탐색인지, 참고 조회인지 구분한다. sweep_compliance는 지정 날짜에 유효한 규칙으로 모집단 전체를 점검하고 모든 계약을 설명하는 확인서와 함께 판정을 저장하며, simulate_rule_change는 승인된 기준을 바탕으로 한 규칙의 제안값을 시험해 방향성 있는 건수만 반환하고 기록을 남기지 않는다. explore_clauses는 필터링된 모집단에서 의미적 유사도가 높은 상위 K개를 반환하는 해석용 표본이므로 전체 건수를 답하는 데 사용할 수 없고, get_finding은 단일 판정의 완전한 증거 연결을 제공한다. list_rules는 특정 날짜의 규칙집과 버전·인용·승인자를 조회하고, check_connection은 데이터를 건드리지 않는 연결 상태 확인이다. 모델은 사람이 작성·검토·시험한 모집단 로직을 가진 도구 중에서만 선택할 수 있으므로, 생성 쿼리처럼 임의의 조건을 조합해 점검 대상을 잘못 구성하는 경로를 차단한다.
6. SQL·인증·기록·모델 사용의 설계 원칙
원문은 자연어가 SQL 계층에 도달하지 않도록 고정된 SQL 템플릿을 선택하고 규칙값을 매개변수로 바인딩하며, 준수 점검은 모델 없이 수치 비교로 수행해야 한다고 명시한다. 완전성을 위한 모집단 포함 여부는 정확한 필터로 결정하고 벡터는 순위에만 사용하며, 모든 계약은 정확히 하나의 상태 범주에 들어가고 판독 불가 문서도 명시적으로 남긴다. 판정 기록은 추가만 허용되며 코드에 판정 대상 UPDATE나 DELETE가 없고, 완전성 불변식은 점검 커밋 전에 계산·검증한다. 통신에서는 Amazon Quick이 Amazon Cognito의 OAuth 2LO를 사용하고 API Gateway가 JWT를 검증하며, Lambda의 MCP 서버는 JSON-RPC 2.0과 Streamable HTTP 및 클라이언트가 요구하는 Server-Sent Events 응답 형식을 사용한다. Amazon Bedrock은 탐색에만 쓰이며, Amazon Titan Text Embeddings V2의 amazon.titan-embed-text-v2:0으로 유사도를 계산하고 교차 리전 추론 프로필로 호출한 Anthropic Claude Sonnet 5가 정성적 조항 평가를 맡는다.
7. 재서술 과정에서도 살아남아야 하는 보호 장치
원문은 모델을 판정 경로에서 제외해도 결과 전달에 다시 사용하면 위험이 생기므로, 요약 모델을 신뢰할 수 없는 표현 계층으로 취급해야 한다고 설명한다. 실제 관찰 사례에서는 모델이 주의 문구의 접두부와 ILLUSTRATIVE 인용 표시를 제거해 만들어진 인용을 법률처럼 제시했고, 20개 미리보기 행에서 전체 모집단에 존재하지 않는 범위를 추론했다. 첫 번째 대응은 쉽게 제거되는 앞쪽 표시 대신 대괄호로 묶은 주의 문구를 뒤에 붙이고 여러 페이로드 수준에서 반복하는 것이다. 두 번째는 모든 기록에 대한 실제 집계값을 계산해 제공함으로써 표본에서 전체를 추측할 필요를 줄이는 것이고, 세 번째는 필드·문자열·요약에 모드 표시를 반복해 재서술 뒤에도 적어도 하나가 남도록 하는 것이다. 이 설계의 핵심은 결과에 보호 문구를 넣었다는 사실만으로 충분하지 않으며, 그 문구가 모델의 재서술을 통과해 사용자에게 전달되는지까지 고려해야 한다는 데 있다.
8. 샘플 제공 범위와 배포 전제 조건
원문은 전체 참조 구현을 GitHub에서 제공하며, 실제 고객의 임대차 계약 대신 합성 데이터와 결정론적 데이터 생성 기능, 배포된 스택에 대한 수용 테스트를 포함한다고 설명한다. 배포 전에는 미국 동부 버지니아 북부 리전인 us-east-1에서 Amazon Titan Text Embeddings V2와 Anthropic Claude Sonnet 5에 대한 Amazon Bedrock 모델 접근 권한이 활성화된 AWS 계정이 필요하다. 또한 인증 정보가 설정된 AWS CLI v2에서 aws sts get-caller-identity가 성공해야 하며, Python 3.12와 AWS CDK CLI용 Node.js 24가 요구된다. mise는 Node.js 24 설치를 위한 선택 사항이고 다른 설치 방법도 가능하며, 원문은 Node.js 18이 CDK 지원 수명을 종료했다고 덧붙인다. 모델 가용성은 AWS Region에 따라 달라 배포 전에 확인해야 하고, 제공된 본문은 첫 단계인 저장소 복제와 Python 환경 설정을 소개하는 지점에서 끝나므로 이후 배포 명령이나 실행 결과는 확인할 수 없다.
🧾 핵심 주장 / 시사점
- 원문이 제시하는 신뢰성의 중심은 모델의 답변 정확도보다 모집단을 빠짐없이 설명하는 불변식과 판정 근거의 추적 가능성에 있다.
- 채팅과 대시보드가 같은 저장소를 사용하면 자연어 접근성과 대량 결과 조회를 함께 제공하면서 완전성 확인서의 근거를 일관되게 유지할 수 있다.
- 공식 판정을 결정론적으로 수행해도 결과를 전달하는 모델이 주의 문구를 제거하거나 표본을 일반화할 수 있으므로, 전달 단계에도 별도의 보호 장치가 필요하다.
✅ 액션 아이템
- 완전성 확인서에서 준수·위반·모호·판독 불가 건수의 합과 스캔 건수의 일치 여부 확인.
- sweep_compliance의 공식 결과와 simulate_rule_change·explore_clauses의 탐색 결과를 구분하고, 채팅의 모드 표시·주의 문구 및 실제 집계값 전달 여부 검토.
- 배포 대상 AWS Region의 Amazon Titan Text Embeddings V2·Anthropic Claude Sonnet 5 가용성과 AWS CLI v2·Python 3.12·Node.js 24 전제 조건 확인.
❓ 열린 질문
- 완전성 확인서는 준수·위반·모호·판독 불가 건수의 합이 스캔 건수와 일치한다는 사실을 어떻게 검증하고 제시하는가?
- Amazon Quick의 재서술 이후에도 sweep_compliance의 공식 결과와 explore_clauses의 표본이라는 구분 및 주의 문구가 유지되는가?
- 배포 대상 AWS Region에서 Amazon Titan Text Embeddings V2와 Anthropic Claude Sonnet 5를 사용할 수 있으며, us-east-1의 모델 접근 권한 전제 조건을 충족하는가?