바로가기: 핵심 제약 · 스택 구분 · 설치·게이트웨이 · 재현 절차 · 트러블슈팅 · 인용 체크 · 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에서 인덱싱·온라인 분리.