모든 언어 모델의 지식에는 경계선이 있으며, 흥미로운 문제는 그 경계선이 존재한다는 사실이 아니라 모델이 그것을 스스로 느끼지 못한다는 점이다. 지난주에 바뀐 무언가에 대해 물어보면, 10년 전에 확정된 사실에 대한 답변과 동일한 자신감 있는 어조로 답이 돌아온다. 채팅 인터페이스라면 이는 감내할 만한 불편함이다. 하지만 누군가를 대신해 행동을 취하는 에이전트에게는, 이것이야말로 전체 아키텍처가 막아야 할 실패 유형이다.
검색 접근은 표준적인 해답이며, 그것이 실제로 무엇을 해결하고 무엇을 해결하지 못하는지 정확히 짚어볼 가치가 있다.
검색 접근이 에이전트에게 주는 것
세 가지가 있으며, 이들은 서로 다른 수준의 엔지니어링을 정당화하기 때문에 구분해볼 가치가 있다.
최신성. 학습 이후 변경된 사실들: 가격, 재고 여부, 누가 어떤 직위에 있는지, 회사가 무엇을 발표했는지, 서비스가 정상 작동 중인지. 가장 명백한 부분이다.
범위. 날짜와 무관하게 학습 데이터에 애초에 잘 반영되지 않았던 롱테일 세부사항들. 검색은 그 어떤 모델의 파라미터보다 잘 알려지지 않은 것들에 대해 훨씬 나은 색인 역할을 한다.
검증 가능성. 에이전트가 인용할 수 있고 사용자가 확인할 수 있는 출처. 중요한 사안이라면 이는 최신성보다 더 중요한데, 가치는 단순히 정답을 내놓는 것이 아니라 추적 가능한 답을 내놓는 것에 있기 때문이며, 이것이 에이전트의 출력을 맹목적으로 받아들이는 대신 검토 가능하게 만드는 요소다.
세 번째 항목이야말로 모델이 정답을 알고 있는 경우에도 “모델이 그냥 답하면 된다”는 접근이 부족한 이유다. 인용하는 에이전트는 감사 가능하지만, 단정하는 에이전트는 그렇지 않다.
브라우징하는 에이전트가 아니라 SERP API를 써야 하는 이유
에이전트에게 브라우저를 주고 검색하라고 지시할 수 있다. 합리적인 발상처럼 보이지만, 실제 운영 환경에서는 부수적이 아니라 구조적인 이유로 심하게 나빠진다.
취약성. 검색 결과 페이지는 레이아웃이 바뀌며, HTML을 파싱하는 에이전트는 그때마다 조용히 망가진다. 이 실패는 에러가 아니라 에이전트가 아무것도 찾지 못하는 형태로 나타나는데, 이는 자율적으로 작동해야 하는 시스템의 버그로서는 최악의 형태다.
지연 시간. 페이지를 렌더링하고, 스크립트를 기다리고, 텍스트를 추출하는 데는 사용자 요청당 여러 번 실행될 수 있는 루프 안에서 몇 초가 소요된다. 구조화된 결과는 한 번의 호출로 도착하며, 이는 다단계 에이전트에게는 사용 가능함과 불가능함의 차이이고, 지연 시간의 메커니즘은 지연 시간 줄이기에서 다룬다.
토큰 비용. 원본 HTML을 컨텍스트 윈도우에 넣는 것은 비용이 많이 들고 대부분 노이즈다. 파싱된 제목, 스니펫, URL은 더 많은 신호를 훨씬 적은 토큰으로 전달한다.
차단. 자동화된 브라우징은 도전 과제(challenge)에 부딪히며, 캡차를 만난 에이전트에게는 마땅한 대응책이 없다. 이는 웹을 탐색하는 AI 에이전트를 위한 최적의 프록시에서 설명한 것과 동일한 접근 문제이며, SERP API는 수집 작업을 다른 누군가의 문제로 넘기고 구조화된 데이터를 반환함으로써 이를 해결한다.
에이전트 개발자들이 결국 도달하는 일반 원칙은 이렇다: 도구는 구조화되고 예측 가능한 출력을 반환해야 하는데, 형태가 계속 바뀌는 도구는 모델이 안정적으로 추론할 수 없는 도구이기 때문이다.
도구를 그냥 호출하는 것이 아니라 설계하기
에이전트의 검색 행동 품질은 기반 데이터 소스보다는 도구 설계에 더 많이 좌우된다.
적은 결과를, 잘 반환하라. 스니펫이 포함된 결과 10개는 종종 동일한 정보를 담은 5개보다 못한데, 컨텍스트는 유한하고 추론에서는 재현율(recall)보다 정밀도(precision)가 중요하기 때문이다. 필요하다면 에이전트가 명시적으로 더 요청하도록 하라.
위치와 언어를 매개변수로 노출하라. 검색 결과는 시장마다 다르므로, 독일에 있는 사용자를 위해 답하는 에이전트는 자신이 독일에 있는 것처럼 검색해야 하며, 그렇지 않으면 다른 나라에서만 사실인 내용을 자신 있게 보고하게 된다. 이는 이 분야 전반을 관통하는 동일한 지리적 요구사항이며, 미묘하게 잘못된 에이전트 답변의 흔한 원인이다.
모델이 추론할 수 있는 메타데이터를 반환하라. URL과, 가능하다면 게시 날짜는 모델이 출처의 무게를 가늠하게 해주며, 목록형 기사를 1차 자료와 동등하게 취급하지 않도록 돕는다.
인터페이스를 안정적으로 유지하라. 결과의 형태가 바뀌면, 그것에 맞춰 조정된 프롬프트 동작도 함께 바뀐다.
정직한 한계
검색 접근은 진실을 알려주는 오라클이 아니며, 그렇지 않은 척하는 것은 또 다른 종류의 자신감 넘치는 오류를 만들어낸다.
순위는 관련성이지 정확성이 아니다. 순위가 높은 페이지는 인기 있고, 잘 최적화되어 있으며, 주제적으로 일치한다. 그중 어느 것도 정확성을 보장하지 않으며, 순위를 권위로 취급하는 에이전트는 SEO를 사실로 세탁하게 된다.
스니펫은 맥락을 잃는다. 단편은 원본 페이지의 의미를 뒤집을 수 있다. 어떤 주장이 중요하다면, 에이전트는 스니펫에서 추론하는 대신 페이지를 직접 가져와야 하며, 이때 레지덴셜 프록시와 같은 범용 수집 레이어가 검색 도구와 나란히 자리한다.
검색 결과 자체도 스냅샷이다. 개인화되어 있고, 지역화되어 있으며, 시간마다 바뀌기 때문에, 동일한 에이전트를 두 번 실행해도 정당하게 서로 다른 결과가 나올 수 있다. 쿼리와 결과를 답변과 함께 로그로 남겨두지 않으면, 에이전트가 왜 그렇게 답했는지 재구성할 수 없다.
실시간성에는 예산이 있다. 모든 검색은 루프 안에서 지연 시간과 비용을 소모하므로, 반사적으로 검색하는 에이전트는 느리고 비용이 많이 든다. 설계상의 질문은 언제 검색할 것인가이며, 합리적인 기본값은 답이 현재 사실에 좌우되거나, 모델이 모호할 가능성이 큰 세부사항에 관한 것이거나, 인용이 요구되는 경우에만 검색하고 그 외에는 하지 않는 것이다.
앞으로의 방향
짚어둘 만한 더 큰 흐름은 웹이 사람보다 에이전트에 의해 점점 더 많이 읽히고 있다는 점이며, 이는 인프라가 무엇을 서비스해야 하는지를 바꾼다. 이것이 웹 위의 AI 에이전트의 주제이며, 이는 양방향으로 작용한다: 에이전트는 공개 정보에 대한 신뢰할 수 있는 구조화된 접근이 필요하고, 게시자는 그 접근이 무분별하지 않고 잘 행동하기를 요구한다.
개발자 입장에서 실질적인 함의는, 검색 접근이 통합 프로젝트가 아니라 표준 구성 요소가 되어가고 있다는 것이며, 차별화는 에이전트가 언제 검색할지 얼마나 잘 판단하는지, 찾아낸 것을 어떻게 가중치를 두는지, 그리고 자신의 작업 과정을 얼마나 잘 보여주는지로 옮겨간다.
결론
검색 접근이 없는 에이전트는 지식 경계를 벗어난 질문에도 경계 안의 질문과 동일한 자신감으로 답하는데, 이는 자율성이 위험해지는 바로 그 행동 유형이다. 검색 접근은 최신성, 범위, 그리고 무엇보다 검증 가능성을 제공하는데, 인용하는 에이전트는 감사 가능하지만 단정하는 에이전트는 그렇지 않기 때문이다. HTML을 파싱하는 것은 취약하고, 느리고, 토큰 비용이 많이 들며, 차단당하기 쉽고, 예측 불가능한 형태를 반환하는 도구는 모델이 제대로 추론하기 어려운 도구이므로, 브라우징하는 에이전트보다 구조화된 API를 선호하라. 도구를 신중하게 설계하라: 메타데이터를 포함한 소수의 결과, 매개변수로서의 위치와 언어, 안정적인 인터페이스. 그리고 한계를 항상 염두에 두어라. 순위는 진실이 아니라 관련성이고, 스니펫은 맥락을 잃으며, 결과는 로그로 남길 가치가 있는 스냅샷이고, 모든 검색은 루프 안에서 지연 시간과 비용을 소모한다.
이 레이어를 구축하고 있다면, SERP API는 위치 처리가 포함된 파싱된 결과를 반환하며, 그 뒤에 있는 페이지를 실제로 가져오는 작업을 위해서는 GB당 가격 책정이 적용되는 레지덴셜 프록시가 검색 이후 에이전트가 수행하는 가져오기 작업을 처리한다.