검색/AI 에이전트에 기억을 주는 검색 시스템을 공정하게 테스트하고 비교한다

AI 에이전트에 기억을 주는 검색 시스템을 공정하게 테스트하고 비교한다

AI 에이전트에 어떤 검색·기억 시스템이 가장 잘 맞는지 확인할 때 쓴다. 테스트 전에 무엇을 보여 줘야 하는지 적어 두고, 설정 전체를 공정하게 비교하며, 적게 쓸 때부터 많이 쓸 때까지의 비용을 어림하고, 저장된 결과가 섞이지 않게 하며, 실행마다 기록을 빠짐없이 남긴다.

이 AI 규칙을 사용하려면
## 테스트 결과가 실제로 보여 주는 것만 주장한다 전체 시스템에 대한 주장과 개별 기능에 대한 주장을 구분한다. 검색 시스템 전체가 최고라고 주장하려면 검색 품질, 긴 문맥 메모리, 보정, 신뢰성, 비용, 운영 동작을 아우르는 증거가 필요하다. 단일 기능이나 벤치마크만으로는 이를 입증할 수 없다. 기능을 평가할 때는 그 기능이 시스템 사용자에게 의미 있는 가치를 제공하는지 묻는다. 제품 결정이 사용자 성과에 달려 있다면 하나의 독점 알고리즘이 다른 알고리즘보다 우수하다는 증명에 평가를 소모하지 않는다. 실험을 실행하기 전에 주장, 분석 단위, 예상 효과, 판단 임곗값, 결과를 일반화할 수 없는 조건을 작성한다. 결론의 범위가 테스트한 모집단, 작업 부하, 엔진 또는 설정보다 넓다면 해당 결론을 받아들이지 않는다. ## 데이터베이스와 그 안의 출처를 따로 고른다 지식 라우팅을 서로 독립된 두 축으로 모델링한다. - 저장소와 접근 정책을 소유하는 코퍼스 또는 데이터베이스 - 해당 코퍼스 내부의 출처 또는 컬렉션 호출별 입력, 인증된 허용 범위, 세션 문맥, 저장소 마커, 사용자 설정, 기본값과 같은 명시적인 우선순위 체인을 통해 두 축을 모두 결정한다. 눈에 띄지 않는 잘못된 라우팅을 진단할 수 있도록 각 쿼리와 함께 결정된 값을 기록한다. 신뢰가 명시적으로 확립되지 않았다면 원격 호출자나 에이전트용 호출자를 신뢰하지 않는다. 하나의 공유 헬퍼를 통해 모든 읽기 경로에 출처 범위를 적용하며, 개별 쿼리에서 필터를 직접 만들지 않는다. 조인이나 키 구성에 식별자를 사용하기 전에 검증하고, 전체 출처 범위가 포함된 키를 기준으로 고유성을 정의한다. ## 검색 모드를 설정 전체를 묶어서 비교한다 이름이 있는 모드는 캐시 정책, 토큰 예산, 쿼리 확장, 관계형 검색, 의도 가중치, 결과 수 제한을 포함하는 일관된 묶음으로 정의한다. 호출별 재정의가 배포 설정보다 우선하고 문서화된 대체값이 뒤따르는 하나의 결정적 체인을 통해 설정을 해석한다. 유리한 조정 항목 하나만 골라내지 말고 사용자에게 제시되는 완전한 선택지로 모드를 비교한다. 모든 조정 항목에 대해 활성 값과 그 출처를 보고한다. 가장 낮은 공유 검색 경로에서 모드를 해석해 프로덕션 쿼리와 평가 재실행이 동일한 동작을 거치게 한다. 새 검색 분기가 인식된 쿼리 유형에만 적용된다면 결정적으로 동작하게 하고 다른 경우에는 아무 작업도 하지 않게 한다. 시스템 전체의 기본값을 바꾸지 않고 통제 실험을 수행할 수 있도록 쿼리별 재정의를 제공한다. ## 실제 사용량 수준으로 비용을 어림한다 쿼리 양, 전달된 문맥 토큰 수, 모델 입력 가격, 확장 호출, 캐시 적중률을 바탕으로 후속 비용을 계산한다. 독자가 단일 쿼리에서 추정하지 않고 결과를 규모에 맞게 환산할 수 있도록 최소한 경량, 일반, 고부하 사용 수준을 보여 준다. 분리된 쿼리별 비용과 실제 에이전트 루프 지출을 구분한다. 프롬프트 캐시, 검색 캐시 적중, 접두부 변화, 반복되는 도구 호출은 실현되는 총액을 크게 바꿀 수 있다. 절감액이 측정값인지, 가정값인지, 제외 항목인지 밝힌다. 검색 모드와 후속 모델을 하나의 짝으로 평가한다. 지나치게 큰 문맥은 용량이 낮은 모델을 압도할 수 있고, 지나치게 제한적인 예산은 비싼 모델에 필요한 정보를 주지 못할 수 있다. 자연스러운 조합을 우선하고 잘못된 조합은 비용 순위에 섞지 말고 별도의 실패 유형으로 설명한다. ## 테스트 전에 무엇을 재고 어떻게 판단할지 정한다 보고하는 모든 지표에 대해 기계 판독 결과와 함께 쉬운 말로 된 정의를 제공한다. 절단점 정밀도, 할인 이득, 역순위, 중복도, 보정, 지연 시간, 비용과 같은 용어에는 하나의 공식 용어집을 사용한다. 결과를 수집하기 전에 데이터 세트, 표본 선택, 예상 방향, 주요 지표, 타당성 위협, 제외 규칙을 지정한다. 쌍을 이룬 비교에는 쌍을 유지하는 재표집 방법을 사용하고, 여러 지표나 변형을 테스트할 때는 다중 비교를 보정한다. 사람이 읽을 수 있는 요약과 구조화된 메타데이터를 모두 보존한다. 개별 값 옆에 임시 용어집 필드를 추가하지 말고 응답마다 일관된 메타데이터 블록 하나를 붙여 후속 도구가 안정적으로 파싱할 수 있게 한다. ## 질문 배정 테스트를 누구나 다시 할 수 있게 만든다 훈련용 픽스처와 홀드아웃 픽스처를 분리한다. 형식 차이가 의미상 올바른 라우팅을 가릴 수 있다면 엄격한 기준과 명시적으로 문서화한 관대한 기준을 모두 사용해 채점하되, 홀드아웃 결과를 본 뒤 기준을 바꾸지 않는다. 모델 간 실행마다 모델 식별자, 프롬프트 템플릿 해시, 픽스처 해시, 평가 도구 개정판, 타임스탬프, 채점 버전을 연결하는 실행 기록을 저장한다. 모델을 다시 실행하는 비용을 지불하지 않고도 채점 논리를 개선하거나 감사할 수 있도록 원시 예측을 보존한다. 핵심 역할을 하는 신호를 찾기 위해 제거 실험을 사용한다. 라우팅 절, 계층 단계, 문맥 필드를 한 번에 하나씩 제외한 뒤 같은 홀드아웃 세트와 비교한다. 성능 하락은 인과적 설계 주장을 뒷받침하지만, 짝을 이루지 않은 변경 전후의 일화는 그렇지 않다. ## 저장된 검색 결과(캐시)가 설정끼리 섞이지 않게 한다 동작을 바꾸는 모든 입력을 캐시 키에 포함한다. 여기에는 출처 범위, 모드 조정 항목, 결과 수 제한, 확장 상태, 검색 분기와 깊이, 임베딩 제공자, 임베딩 열 또는 모델, 순위를 바꾸는 모든 기능 플래그가 포함된다. 캐시 키 계약을 버전으로 관리한다. 의미가 바뀌면 버전을 올려 기존 행을 새 설정으로 해석하지 않고 일반적인 캐시 미스로 접근할 수 없게 한다. 모드 간, 출처 간, 제공자 간, 관계형 검색 활성화와 비활성화 사이의 격리를 테스트한다. 내장 엔진에서는 드러나지 않던 인코딩이나 타입 동작이 프로덕션 데이터베이스에서만 나타날 수 있으므로 지원하는 모든 저장 엔진에서 동등성 테스트를 실행한다. ## 개인 데이터를 지키고, 보안 수정은 약점을 드러내지 않게 설명한다 평가 기록은 프로젝트의 감사 영역에 저장하고 사용자가 실제로 쓰는 비공개 코퍼스에는 절대 넣지 않는다. 픽스처, 예시, 보고서, 릴리스 노트, 공개 토론에서는 가상의 이름과 조직을 사용한다. 관계가 드러나는 쿼리는 일반적인 자리표시자로 바꾼다. 공개 자료에서는 보안 수정 사항을 기능 중심으로 설명한다. 민감한 기록을 정리한 목록, 노출 기간, 패치되지 않은 시스템을 가장 쉽게 탐색할 수 있는 경로를 제시하지 말고 보호 방식과 운영자가 취해야 할 조치를 설명한다. 상세한 노출 분석은 접근이 제한된 검토 증거에 보관한다. 공개하기 전에 사전 문맥이 없는 독자가 비공개 관계를 추론하거나 이전 배포를 직접 겨냥할 수 있는지 확인하고, 가능하다면 표현을 일반화한다. ## 자동 점검으로 조사 문서를 최신이면서 짧게 유지한다 계층화된 문서 구조를 사용한다. - 연구 목표, 라우팅 모델, 아키텍처, 공통 불변 조건을 포함하며 항상 불러오는 안내 문서 - 관련 하위 시스템에서만 불러오는 현재 상태 참조 문서 - 과거 동작을 기록하는 변경 기록과 버전 이력 현재 상태 참조 문서에 릴리스별 설명을 계속 덧붙이지 않는다. 기존 항목을 새로운 사실에 맞게 갱신하고 과거 세부 사항은 버전 관리와 변경 기록에 보존한다. 크기 제한, 금지된 과거 마커, 생성된 용어집의 최신성, 문서 묶음의 최신성을 지속적 통합에서 강제한다. 자동 보호 장치가 없는 문장 규칙은 지속적인 제약이 아니다. ## 실행할 때마다 출력과 설정을 모두 남긴다 진행 상황은 데이터 결과와 분리된 채널에 기록한다. 단계 이름을 안정적으로 유지하고 구조화된 진행 상황을 명시적인 선택지로 제공하며, 오래 실행되는 작업이 기계 판독 결과를 손상하지 않고 상태 신호를 보내게 한다. 테스트와 평가에서는 끝부분이나 필터링된 요약을 표시하기 전에 전체 결과를 파일에 기록한다. 뷰어를 실행하기 전에 원래 명령의 종료 코드를 기록한다. 품질 게이트를 내용을 잘라내는 명령으로 직접 파이프하지 않는다. 실제 실패 세부 정보를 버리면서 뷰어의 성공을 전체 처리의 성공으로 보고할 수 있기 때문이다. 각 실행에서는 설정, 결정된 모드, 데이터 세트 식별 정보, 해시, 지표, 비용, 경고, 종료 상태, 타임스탬프를 보존한다. 다른 검토자가 실행 내용을 재구성하고 측정된 사실과 가정을 구분할 수 있을 때만 결과를 의사결정에 사용할 수 있는 수준으로 본다.