요약검색 보강 생성(RAG)은 Naly의 기사 파이프라인을 모델 메모리 기반 조합이 아닌 소스 기반 발행 시스템으로 바꾼다. 각 초안 요청은 먼저 웹 및 arXiv 근거를 수집하고, 출처 URL을 정규화·저장한 뒤 모델에 답변 우선 초안과 최종 HTML 기사를 작성하도록 요청한다. 이로써 리스크 포인트가 "모델이 헛소리를 할 수 있는가"에서 "검색 레이어가 완전하고 추적 가능한가"로 이동해, 편집자는 안정적인 산출물, 재실행 가능한 작업, 그리고 방어 가능한 공개 주장 근거를 얻게 된다.
요약
Naly의 RAG는 출처 지속성 및 결정적 계약. 2026년 6월 27일 기준 실무 신뢰성은 더 큰 모델보다, 게시 전 검색 산출물이 질의 가능하고 버전 관리되며 검증되었는지에 더 많이 의존한다. 이 노트는 이중 평면 설계를 제안한다: 검색/저장을 위한 근거 평면과 초안 생성을 위한 생성 평면이다. 그리고 이 아키텍처가 편집 신뢰와 사고 대응을 어떻게 직접 개선하는지를 설명한다.
Naly에서의 위치
Naly는 이를 Next.js 16.0.7 App Router 스택(next + react)에서 운영하며, 기사 발행은 별도의 오프라인 글쓰기 단계가 아니라 런타임 코드 경로의 일부로 처리한다. 기사 작업 경로에서 모든 제약 조건이 강제되어, 출처 레코드가 존재하고 요약 구조가 검증되며 HTML이 실제로 생성되어야만 작업이 "작성됨" 상태가 된다.
스택 정렬은 의도적이다:
next@16.0.7+ React Server Components는 작업 트리거 렌더링을 서버 공간에서 처리해 기사 서버 출력 계약과 일치한다.drizzle-orm@0.44.7+@neondatabase/serverless@1.0.2모든 주장이 추적될 수 있도록 타입이 지정된 영구 작업 및 출처 테이블을 정의한다.ai@6.0.0-beta.105스키마 인식 출력 제어를 통해 생성 과정을 제공한다.marked@17.0.1생성된 Markdown 요약을 렌더링된 HTML로 변환해 발행한다.@vercel/blob@2.0.0생성된 자산을 재사용 가능한 영구 URL로 저장한다.- Anthropic 도구는 동일한 계약 범위 내에서 대체 모델 제공자로 추가할 수 있지만, 구조화 제약을 우회하는 탈출구로는 사용할 수 없다.
이 방식은 "생성 후 교정" 방식의 모델을 근거 중심 작성 루프: 검색, 검증, 생성, 렌더링, 게시가 모두 통과되어야만 기사가 노출되는 흐름으로 대체한다.
기술적 메커니즘
안정적인 Naly 설계는 다섯 개의 한정된 단계로 구성된다:
- 근거 계획 및 쿼리 오케스트레이션
- 주제, 기간 창, 근거 정책이 포함된 작업 사양을 정의한다.
- 기본 출처를 위해 웹 검색과 arXiv 검색을 모두 실행한다.
- 정규화된 URL 기준으로 중복 제거하고 프로토콜·호스트·쿼리 문자열을 정규화한다.
- 출처 영속성 계층
- URL별 메타데이터를 저장한다(
url, 정규화된 URL, 가져오기 상태, 가져오기 타임스탬프, 제목, 발췌문, 출처 유형). - 업스트림 페이지가 변경되더라도 재실행 시 결정성이 유지되도록 모델 입력 스니펫을 원시 페이로드와 별도로 저장한다.
- 출처별 체크섬을 추가해 드리프트를 탐지한다.
- 컨텍스트 구성 및 제약
- 관련성과 최신성 기준으로 정렬된 검색 컨텍스트를 구성한다.
- 프롬프트 계약에 명시적 출처 ID를 반드시 요구한다.
- 답변 우선 출력 형식을 강제한다(
intro claim,evidence bullets,risk caveats,uncertainty), 그리고 순서가 있는 출처 참조를 추가한다.
- 엄격한 스키마를 적용한 구조적 생성
- 구조화된 출력을 사용해 형식이 잘못되었거나 스키마를 위반한 응답은 즉시 실패시키고 더 좁은 컨텍스트로 재시도한다.
- 생성은 서버 컨텍스트에서 처리하며, 매핑된 출처 ID 없이 근거가 없는 사실을 주장하는 초안은 거부한다.
- 렌더링, 게시, 검증
- 검증된 Markdown을 HTML로 변환하고 Markdown + HTML을 모두 저장한다.
- 최종 출력은 검증 성공 후에만 캐시한다.
- 분석 및 감사 필드를 출력한다: 출처 수, 거절된 주장 수, 재시도 횟수, 생성 지연 시간.
가장 중요한 설계 전환은 관심사 분리: 검색 품질과 생성 품질은 서로 다른 실패 도메인과 서로 다른 지표를 갖는다. Next.js Server Components는 렌더링을 결정론적으로 유지한 채 검색과 생성이 통제된 비동기 작업에서 실행되는 이 분리에 적합하다.
문헌의 시사점
최신 RAG 문헌은 이 아키텍처 패턴을 뒷받침한다. 2024년 RAG 아키텍처 종설은 검색 보강 시스템이 외부 근거를 바탕으로 생성이 이루어질 때 사실 드리프트가 줄어든다고 설명하지만, 파이프라인 복잡성 및 모듈 간 조정의 트레이드오프가 존재함을 지적한다 [Gupta et al., 2024]. 2025년 후속 종설은 로버스트성은 더 이상 생성 품질만으로 결정되지 않으며, 적응형 검색, 디코딩 제어, 엔드투엔드 평가에 달려 있다고 추가한다 [Sharma, 2025].
운영 품질 통제를 위해 2025년 평가 중심 종설은 평가를 내부 검색기/생성기 지표와 외부 시스템 지표로 명시적으로 분리한다. 이는 기사 파이프라인에서 특히 유용한데, "나쁜 기사"가 문장 품질은 높더라도 출처 선택이 잘못될 수 있기 때문이다 [Gan et al., 2025]. 근거 정합성 연구 역시 검색 기반 문맥과 NLI형 검사로 주장 지지를 분류하는 탐지 계층으로 발전해, 생성 후 검증의 실무적 가치를 강화하고 있다 [Gerner et al., 2025].
요약하면, 모든 논문은 한 가지 주장으로 수렴한다: RAG는 단순히 컨텍스트를 주입하는 수단이 아니라 엔지니어링 계약 검색과 생성 사이의 것이다. 따라서 Naly는 프롬프트만 개선하는 것이 아니라 계약을 최적화해야 한다.
설계 트레이드오프
- 최신성 대 결정성: TTL을 엄격히 설정하면 노후 데이터가 줄어들지만 재패치 비용이 증가한다. 스냅샷을 영속 저장하면 최신성 창을 재검증하면서도 결정론적 렌더링을 유지할 수 있다.
- 검색에서 재현율 대 정밀도: 검색 범위를 넓히면 커버리지가 증가하지만 잡음이 유입될 수 있다; 2단계 관련성 필터가 주장 품질을 보호한다.
- 스키마 엄격성 대 문장 유창성: 엄격한 출력 스키마는 기계 신뢰성을 높이지만 문체 자유도를 낮출 수 있다. 답변 우선 스키마 패턴은 가독성을 유지하면서도 가드레일을 유지한다.
- 정적 렌더링 속도 대 감사 가능성: 미리 렌더링한 HTML은 전달 성능을 높이고 반복 계산을 줄이지만, 사용하는 소스 산출물이 변경 불가한 참조일 때만 가능하다.
- 복잡도 대 운영 비용: 추가된 검증 단계(출처 검사, 스키마 검사, 산출물 저장)는 모두 지연을 증가시킨다. 캐싱, 라우트 경계, 빌드 타임 검증에 대한 최신 운영 지침이 이 체계를 운영 가능하게 만드는 데 중요하다.
실패 모드
- 출처 드리프트: 작업 생성 후 URL이 404/소프트 변경되는 경우가 발생한다. 대응: 정규화 키 + 스냅샷 해시 + 대체 출처 체인.
- 검색 과잉: 재현율은 높고 정밀도는 낮은 검색은 그럴듯하지만 근거 없는 합성을 유도한다. 대응: 근거 우선 제약을 요구하고 출처 매칭 없는 주장을 차단한다.
- 모델 형식 실패: 스키마 불일치 또는 JSON 절단이 발생한다. 대응: 엄격한 스키마 검증과 축소된 컨텍스트로 재시도.
- 이중 게시 경합: 동시 작업자가 부분 산출물을 게시할 수 있다. 대응: 작업 멱등성 키, 행 단위 상태 전환(
pending -> drafting -> validated -> published). - 렌더링 회귀: 잘못된 마크다운 또는 비안전한 HTML 변환.
marked대응: 결정적 변환 경로와 샘플 매니페스트에 연결된 HTML 출력 테스트. - 캐시 착시: 서버 출력의 동적 데이터가 오래되면 게시된 텍스트와 소스 인덱스가 어긋날 수 있다. 대응: 라우트 렌더링 전략을 명시적 런타임 최신성 정책과 정렬하고, 근거 최신성이 필요한 곳에서는 암시적 캐시를 피한다.
구현 노트
실무적 롤아웃을 위해 이것을 게시 계약으로 간주한다:
- Drizzle에서 출처 테이블을 명시적 제약으로 정의한다: 정규화된 host/path 기준의 URL 고유성, 가져오기 상태 열거형, 체크섬 열.
- Neon 호환 드라이버 경로를 서버리스 실행 동작에 맞춰 일관되게 사용한다. Drizzle 문서에는 런타임별
neon-*드라이버 옵션이 모두 설명되어 있다. - 생성 단계에서는 구조화된 출력 계약을 강제하고 렌더링 전에 유효하지 않은 객체를 실패 처리한다.
- Next.js의 운영 가이드를 따라 서버 경계, 에러 페이지, 캐싱, 기사 라우트의 SEO 메타데이터를 적용해 게시가 추적 가능하고 빠르게 유지되도록 한다.
- 표지 이미지, 첨부파일, 내보내기 등 생성된 블롭은 Vercel Blob을 통해 명시적 접근 정책과 결정론적 네이밍으로 영구 저장해 충돌을 방지한다.
- 게시 전 운영 검사를 실행한다: 최소 출처 수, 최소 출처 다양성, 근거 최신성, 매핑된 주장 완성율 최소치.
핵심적인 전환은 이것이다. 기사는 더 이상 모델의 영리함으로 평가되지 않는다. 재시도와 재배포 과정에서 근거와 생성이 동기화되는지로 평가된다.