RAG에서 먼저 터지는 지점은 도구 입력 오염, Retriever 지연 전파, 단계명 없는 장애입니다. Haystack 2.x로 생성·검색·도구를 나누고 OpenClaw는 인증·게이트웨이만 맡기면 요약 회신이 안정됩니다.

바로가기: 핵심 제약 · 스택 구분 · 설치·게이트웨이 · 재현 절차 · 트러블슈팅 · 인용 체크 · FAQ

원격 Mac에서 Haystack 2.x Pipeline로 RAG를 고정합니다. LiteLLM 프록시·RPM 중심 라우팅과 달리 파이프라인 컴포넌트에 스키마·검색 차단을 둡니다. LangGraph 그래프 대신 쓸 때는 Schema·재시도·청크 쿼터·관측만 맞추면 됩니다. 게이트웨이 바깥에는 요약 스키마만 나가고 프롬프트 본문은 남기지 않는 것이 기본입니다. 구매·요금로그인 없이 열람.

핵심 제약 세 가지

도구·검색·가시성. 스키마 없는 인자는 운영 API를 오염시키고, Retriever와 LLM이 같은 타임아웃을 쓰면 느린 벡터가 전체 실패로 번지며, 단계명 없는 밤새 배치는 stderr만으로 원인 분리가 어렵습니다.

기술 스택 구분 (LiteLLM / LangGraph 대비)

주제 본문 (Haystack 2.x) 다른 글 초점
오케스트레이션 Pipeline·Component로 생성기·Retriever·도구를 선으로 연결 LiteLLM: 다공급 프록시·별칭; LangGraph: 그래프·checkpoint
차단 위치 Retriever deadline·도구 단락·파이프라인 재시도 템플릿 LiteLLM: RPM·TPM; LangGraph: retry_policy·헬스 프로브
공통 OpenClaw 인증·최소 스코프·실패 요약

설치·게이트웨이 한눈 표

항목 권장 비고
Python·Haystack uv/venv 고정, pip install haystack-ai torch 스택과 정렬
벡터 저장 인덱스 디스크 분리 야간 인덱싱·온라인 IO 분리
OpenClaw launchd·루프백·Bearer 도구 HTTP 127.0.0.1·X-Request-ID

재현 절차 (여섯 단계)

1) 전용 계정·쓰기 루트·벡터 권한을 조이고 키는 환경·키체인만 쓰며 저장소에 커밋하지 않습니다.

2) OpenClaw 최소 스코프 검증 후 Haystack 도구 HTTP는 루프백 뒤에 두고 외부는 게이트웨이만 노출합니다.

3) Tool마다 draft-07 JSON Schema, 실패 시 TOOL_SCHEMA_INVALID로 단락.

4) Retriever 별도 deadline, 연속 타임아웃 시 반개방·소량 프로브.

5) 재시도는 지수 백오프+full jitter, 상한은 설정 해시에 기록.

6) 출구에 단계·컴포넌트·HTTP·서브코드·스니펫만 내보내 원문 미저장.

# validate(tool_inputs); retriever_timeout_ms < llm_timeout_ms # on_failure: {stage, component, code, trace_id, snippet}

트러블슈팅

  • 401: 동일 Bearer 루프백 curl, X-Request-ID로 로그 조인.
  • 스키마 급증: 프롬프트·스키마 동시 고정 배포.
  • 검색 오판: 테넌트 deadline·미스 블록으로 환각 차단.
  • 웹훅 폭주: 큐 속도 제한으로 프로브 트래픽과 분리.

운영 인용 체크

  • 스키마·설정 해시를 동일 릴리스 태그로 묶어 사고 시 한 번에 추적.
  • Retriever·LLM 타임아웃을 분리 집계해 SLA 버킷이 희석되지 않게.
  • 실패 요약 필드를 OpenTelemetry GenAI 의미와 맞춰 비용·신뢰성을 같은 테넌트 키로 자릅니다.

FAQ

OpenClaw 필수? 운영 권장, 아니면 도구·키 노출면 확대.

LiteLLM 병행? 생성기 뒤 공급자로만 두고 RPM 차단은 한 겹.

야간 배치? 전용 원격 Mac에서 인덱싱·온라인 분리.

공개 페이지: 요금·구매·고객센터·블로그 목록 — 별도 로그인 없이 확인할 수 있습니다.