<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1">
  <url>
    <loc>https://blog.ruahverce.com/posts/01-what-is-harness-engineering/</loc>
    <lastmod>2026-04-23T00:00:00.000Z</lastmod>
    <image:image>
      <image:loc>https://blog.ruahverce.com/_astro/01-cover.Ce9R3Avp.png</image:loc>
      <image:title>하네스 엔지니어링이란? AI 에이전트 환경 설계 7축 로드맵 (1/8)</image:title>
      <image:caption>하네스 엔지니어링 시리즈 1편 오픈 그래프 카드</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://blog.ruahverce.com/posts/first-post/</loc>
    <lastmod>2026-04-23T00:00:00.000Z</lastmod>
    <image:image>
      <image:loc>https://blog.ruahverce.com/_astro/first-post-cover.BNp0s7u5.png</image:loc>
      <image:title>개인 도메인 블로그 개설 노트 — Astro 5 + Railway + Cloudflare 첫 셋업</image:title>
      <image:caption>blog.ruahverce.com Astro Railway Cloudflare 오픈 그래프 카드</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://blog.ruahverce.com/posts/01-tistory-automation-failed/</loc>
    <lastmod>2026-04-27T00:00:00.000Z</lastmod>
    <image:image>
      <image:loc>https://blog.ruahverce.com/_astro/01-cover.DYDmCkIN.png</image:loc>
      <image:title>티스토리·네이버 블로그 자동화 실패 후 git push 배포로 전환한 이유 (1/3)</image:title>
      <image:caption>블로그 운영기 시리즈 1편 — Tistory·네이버 자동화 실패에서 git 블로그까지</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://blog.ruahverce.com/posts/05-permissions-allow-ask-deny/</loc>
    <lastmod>2026-04-23T00:00:00.000Z</lastmod>
    <image:image>
      <image:loc>https://blog.ruahverce.com/_astro/05-cover.DDHP2-ET.png</image:loc>
      <image:title>Claude Code 권한 설정 가이드 — allow / ask / deny와 permission mode 매트릭스 (5/8)</image:title>
      <image:caption>하네스 엔지니어링 시리즈 5편 오픈 그래프 카드</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://blog.ruahverce.com/posts/04-tool-design-mcp-skill/</loc>
    <lastmod>2026-04-23T00:00:00.000Z</lastmod>
    <image:image>
      <image:loc>https://blog.ruahverce.com/_astro/04-cover.DN5lBHei.png</image:loc>
      <image:title>AI 에이전트 도구 설계 가이드 — Tool · Skill · Plugin · MCP 차이와 SKILL.md 작성법 (4/8)</image:title>
      <image:caption>하네스 엔지니어링 시리즈 4편 오픈 그래프 카드</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://blog.ruahverce.com/posts/02-task-decomposition/</loc>
    <lastmod>2026-04-23T00:00:00.000Z</lastmod>
    <image:image>
      <image:loc>https://blog.ruahverce.com/_astro/02-cover.Bu7p_eac.png</image:loc>
      <image:title>AI 에이전트 과업 분해 가이드 — 큰 작업을 4단계로 쪼개는 Plan 에이전트 패턴 (2/8)</image:title>
      <image:caption>하네스 엔지니어링 시리즈 2편 오픈 그래프 카드</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://blog.ruahverce.com/posts/06-memory-patterns-progress-md/</loc>
    <lastmod>2026-04-23T00:00:00.000Z</lastmod>
    <image:image>
      <image:loc>https://blog.ruahverce.com/_astro/06-cover.DoLoJZba.png</image:loc>
      <image:title>AI 에이전트 메모리 패턴 — PROGRESS.md로 세션 핸드오프 만들기 (6/8)</image:title>
      <image:caption>하네스 엔지니어링 시리즈 6편 오픈 그래프 카드</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://blog.ruahverce.com/posts/03-knowledge-structure-claude-md/</loc>
    <lastmod>2026-04-23T00:00:00.000Z</lastmod>
    <image:image>
      <image:loc>https://blog.ruahverce.com/_astro/03-cover.BRm-Jg05.png</image:loc>
      <image:title>CLAUDE.md 작성 가이드 — AI 에이전트가 읽을 지식 3계층 (전역·프로젝트·로컬) (3/8)</image:title>
      <image:caption>하네스 엔지니어링 시리즈 3편 오픈 그래프 카드</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://blog.ruahverce.com/posts/07-role-separation-subagents/</loc>
    <lastmod>2026-04-23T00:00:00.000Z</lastmod>
    <image:image>
      <image:loc>https://blog.ruahverce.com/_astro/07-cover.BXleuwFB.png</image:loc>
      <image:title>Claude Code Subagent 만들기 — code-reviewer · researcher 역할 분리 패턴 (7/8)</image:title>
      <image:caption>하네스 엔지니어링 시리즈 7편 오픈 그래프 카드</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://blog.ruahverce.com/posts/08-validation-loop-hooks/</loc>
    <lastmod>2026-04-23T00:00:00.000Z</lastmod>
    <image:image>
      <image:loc>https://blog.ruahverce.com/_astro/08-cover.DDEn3sJQ.png</image:loc>
      <image:title>AI 에이전트 검증 루프 설계 — 실패 로그 패턴과 Hooks 자동화 (8/8)</image:title>
      <image:caption>하네스 엔지니어링 시리즈 8편 오픈 그래프 카드</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://blog.ruahverce.com/posts/escaping-build-trap-02-good-pm/</loc>
    <lastmod>2026-05-21T00:00:00.000Z</lastmod>
    <image:image>
      <image:loc>https://blog.ruahverce.com/_astro/cover-placeholder.xBDN117U.svg</image:loc>
      <image:title>[책 리뷰] 개발 함정을 탈출하라 — 좋은 PM은 기능이 아니라 문제를 본다</image:title>
      <image:caption>표지 이미지는 곧 추가됩니다 — 임시 placeholder</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://blog.ruahverce.com/posts/llm-serving-vllm-triton-tts/</loc>
    <lastmod>2026-07-06T00:00:00.000Z</lastmod>
    <image:image>
      <image:loc>https://blog.ruahverce.com/_astro/cover.CahP0Y1L.svg</image:loc>
      <image:title>LLM Serving은 vLLM만 뜻할까: Qwen3-TTS-Triton으로 보는 서빙의 층위</image:title>
      <image:caption>API 서버부터 GPU 커널까지 내려가는 LLM serving 계층도</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://blog.ruahverce.com/posts/escaping-build-trap-01-bad-pm-types/</loc>
    <lastmod>2026-05-18T00:00:00.000Z</lastmod>
    <image:image>
      <image:loc>https://blog.ruahverce.com/_astro/cover-placeholder.xBDN117U.svg</image:loc>
      <image:title>[책 리뷰] 개발 함정을 탈출하라 — 나는 웨이터형 PM이었다</image:title>
      <image:caption>표지 이미지는 곧 추가됩니다 — 임시 placeholder</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://blog.ruahverce.com/posts/01-rag-agent-learning-map/</loc>
    <lastmod>2026-07-16T00:00:00.000Z</lastmod>
    <image:image>
      <image:loc>https://blog.ruahverce.com/_astro/01-cover.DftWUWpt.svg</image:loc>
      <image:title>RAG Agent 공부 순서: 토큰부터 Harness까지 한 장으로 보기 (1/10)</image:title>
      <image:caption>텍스트 입력에서 검색과 LLM 생성, 검증과 Agent Harness까지 이어지는 RAG 학습 지도</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://blog.ruahverce.com/posts/colbert-late-interaction-explainer/</loc>
    <lastmod>2026-07-07T00:00:00.000Z</lastmod>
    <image:image>
      <image:loc>https://blog.ruahverce.com/_astro/cover.Cfd3td4L.svg</image:loc>
      <image:title>ColBERT Late Interaction은 일반 dense retrieval과 뭐가 다를까?</image:title>
      <image:caption>ColBERT Late Interaction과 dense retrieval, cross-encoder 비교 도식</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://blog.ruahverce.com/posts/03-vectors-and-embeddings/</loc>
    <lastmod>2026-07-16T00:00:00.000Z</lastmod>
    <image:image>
      <image:loc>https://blog.ruahverce.com/_astro/03-cover.D3NZjMhF.svg</image:loc>
      <image:title>벡터와 임베딩 입문: Cosine Similarity가 RAG 검색이 되는 원리 (3/10)</image:title>
      <image:caption>질문과 세 문서 임베딩의 방향을 비교해 가장 가까운 문서를 찾는 벡터 공간</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://blog.ruahverce.com/posts/02-tokenization-context-window/</loc>
    <lastmod>2026-07-16T00:00:00.000Z</lastmod>
    <image:image>
      <image:loc>https://blog.ruahverce.com/_astro/02-cover.DI-8yEjA.svg</image:loc>
      <image:title>LLM 토큰화 입문: BPE부터 Context Window 계산까지 (2/10)</image:title>
      <image:caption>한국어 질문이 subword 토큰과 토큰 ID를 거쳐 context window에 들어가는 과정</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://blog.ruahverce.com/posts/04-neural-network-training/</loc>
    <lastmod>2026-07-16T00:00:00.000Z</lastmod>
    <image:image>
      <image:loc>https://blog.ruahverce.com/_astro/04-cover.Cqqi-Lkj.svg</image:loc>
      <image:title>신경망 학습 입문: Logit·Softmax·Loss·Gradient 한 번에 연결하기 (4/10)</image:title>
      <image:caption>입력에서 logit과 확률, loss, gradient를 거쳐 가중치를 갱신하는 신경망 학습 루프</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://blog.ruahverce.com/posts/03-search-console-registration/</loc>
    <lastmod>2026-04-28T00:00:00.000Z</lastmod>
    <image:image>
      <image:loc>https://blog.ruahverce.com/_astro/03-cover.DhWmWwmf.png</image:loc>
      <image:title>개인 도메인 블로그 구글·네이버 검색 등록 가이드 — Search Console + 서치어드바이저 체크리스트 (3/3)</image:title>
      <image:caption>블로그 운영기 시리즈 3편 — 신규 도메인이 구글에 안 잡히던 시기, GSC와 네이버 검색 등록 회고</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://blog.ruahverce.com/posts/05-next-token-language-model/</loc>
    <lastmod>2026-07-16T00:00:00.000Z</lastmod>
    <image:image>
      <image:loc>https://blog.ruahverce.com/_astro/05-cover.CfblELPr.svg</image:loc>
      <image:title>언어모델 입문: 다음 토큰 예측이 문장 생성이 되는 이유 (5/10)</image:title>
      <image:caption>이전 토큰의 조건부확률로 다음 토큰을 하나씩 선택해 문장을 생성하는 autoregressive 언어모델</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://blog.ruahverce.com/posts/06-attention-qkv/</loc>
    <lastmod>2026-07-16T00:00:00.000Z</lastmod>
    <image:image>
      <image:loc>https://blog.ruahverce.com/_astro/06-cover.CIPM_XQG.svg</image:loc>
      <image:title>Self-Attention 입문: Q·K·V와 Scaled Dot-Product 손으로 계산하기 (6/10)</image:title>
      <image:caption>질문 토큰의 query가 모든 token key와 점수를 계산하고 value를 가중합하는 self-attention</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://blog.ruahverce.com/posts/07-transformer-architecture/</loc>
    <lastmod>2026-07-16T00:00:00.000Z</lastmod>
    <image:image>
      <image:loc>https://blog.ruahverce.com/_astro/07-cover.CGTCBG6k.svg</image:loc>
      <image:title>Transformer 구조 입문: Attention·Residual·LayerNorm·FFN 조립하기 (7/10)</image:title>
      <image:caption>입력 embedding이 attention과 feed-forward network, residual과 layer normalization을 통과하는 Transformer 블록</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://blog.ruahverce.com/posts/09-llm-inference/</loc>
    <lastmod>2026-07-16T00:00:00.000Z</lastmod>
    <image:image>
      <image:loc>https://blog.ruahverce.com/_astro/09-cover.B5w9Bl0i.svg</image:loc>
      <image:title>LLM 추론 입문: Prefill·Decode·KV Cache·Temperature 이해하기 (9/10)</image:title>
      <image:caption>긴 프롬프트를 병렬 처리하는 prefill과 KV cache를 재사용해 한 token씩 생성하는 decode 단계</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://blog.ruahverce.com/posts/10-build-first-rag/</loc>
    <lastmod>2026-07-16T00:00:00.000Z</lastmod>
    <image:image>
      <image:loc>https://blog.ruahverce.com/_astro/10-cover.Cq7ojV5c.svg</image:loc>
      <image:title>첫 RAG 만들기: Chunking·Embedding·검색·생성·평가 전체 연결 (10/10)</image:title>
      <image:caption>문서 수집과 chunking에서 embedding index, retrieval, context, LLM 답변, 평가로 이어지는 첫 RAG pipeline</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://blog.ruahverce.com/posts/openai-sdk-vs-temporal-vs-langgraph/</loc>
    <lastmod>2026-05-18T00:00:00.000Z</lastmod>
    <image:image>
      <image:loc>https://blog.ruahverce.com/_astro/cover.DlzYzNa_.svg</image:loc>
      <image:title>OpenAI SDK vs Temporal vs LangGraph — LLM 에이전트 백엔드 비교 2026</image:title>
      <image:caption>OpenAI SDK·LangGraph·Temporal 세 박스가 위에서 아래로 쌓인 계층도 — 만드는 도구·판단 흐름·운영 엔진</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://blog.ruahverce.com/posts/openclaw-illusion-and-skill-pivot/</loc>
    <lastmod>2026-05-14T00:00:00.000Z</lastmod>
    <image:image>
      <image:loc>https://blog.ruahverce.com/_astro/cover-placeholder.xBDN117U.svg</image:loc>
      <image:title>OpenClaw는 정말 &apos;딸깍&apos;을 해주는가 — 20봇 실험을 1프로젝트로 좁힌 기록</image:title>
      <image:caption>표지 이미지는 곧 추가됩니다 — 임시 placeholder</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://blog.ruahverce.com/posts/11-document-ingestion-and-parsing/</loc>
    <lastmod>2026-07-16T00:00:00.000Z</lastmod>
    <image:image>
      <image:loc>https://blog.ruahverce.com/_astro/11-cover.NQZy9dkR.svg</image:loc>
      <image:title>RAG 문서 수집: PDF·HTML을 검색 가능한 데이터로 바꾸기 (1/10)</image:title>
      <image:caption>원문 snapshot이 layout parsing과 OCR, 정규화, 품질 gate, versioned document store로 변환되는 RAG ingestion 흐름</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://blog.ruahverce.com/posts/13-bm25-sparse-retrieval/</loc>
    <lastmod>2026-07-16T00:00:00.000Z</lastmod>
    <image:image>
      <image:loc>https://blog.ruahverce.com/_astro/13-cover.B0R86PEx.svg</image:loc>
      <image:title>Sparse Retrieval 기초: 역색인·TF-IDF·BM25 직접 계산하기 (3/10)</image:title>
      <image:caption>질문 token이 역색인의 posting list를 찾아 TF, IDF, 문서 길이 정규화를 거쳐 BM25 순위를 만드는 과정</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://blog.ruahverce.com/posts/12-rag-chunking-strategies/</loc>
    <lastmod>2026-07-16T00:00:00.000Z</lastmod>
    <image:image>
      <image:loc>https://blog.ruahverce.com/_astro/12-cover.CC2ZY-ag.svg</image:loc>
      <image:title>RAG Chunking: 크기·Overlap·Semantic·Late Chunking 선택법 (2/10)</image:title>
      <image:caption>하나의 문서를 fixed token, structure-aware, semantic, late chunking으로 나누고 검색용 child와 답변용 parent를 연결하는 비교</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://blog.ruahverce.com/posts/14-dense-retrieval-bi-encoder/</loc>
    <lastmod>2026-07-16T00:00:00.000Z</lastmod>
    <image:image>
      <image:loc>https://blog.ruahverce.com/_astro/14-cover.LncKOiJf.svg</image:loc>
      <image:title>Dense Retrieval 기초: Bi-Encoder·Contrastive Learning·DPR (4/10)</image:title>
      <image:caption>Query encoder와 passage encoder가 vector를 만들고 positive는 가깝게 negative는 멀게 학습한 뒤 dot product로 검색하는 dense retrieval</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://blog.ruahverce.com/posts/15-ann-vector-index/</loc>
    <lastmod>2026-07-16T00:00:00.000Z</lastmod>
    <image:image>
      <image:loc>https://blog.ruahverce.com/_astro/15-cover.D1BfZ-iF.svg</image:loc>
      <image:title>ANN Vector Index: Flat·HNSW·IVF·PQ 선택법 (5/10)</image:title>
      <image:caption>동일한 vector 공간을 Flat 전수 비교, HNSW graph 탐색, IVF cluster 탐색, PQ 압축 code로 검색하는 ANN index 비교</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://blog.ruahverce.com/posts/08-bert-vs-gpt/</loc>
    <lastmod>2026-07-16T00:00:00.000Z</lastmod>
    <image:image>
      <image:loc>https://blog.ruahverce.com/_astro/08-cover.ZCKxRxCe.svg</image:loc>
      <image:title>BERT와 GPT 차이: Encoder·Decoder를 RAG 부품으로 이해하기 (8/10)</image:title>
      <image:caption>BERT encoder의 양방향 attention과 GPT decoder의 causal attention을 RAG 검색 재정렬 생성 역할로 비교</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://blog.ruahverce.com/posts/01-raptor-recursive-tree-retrieval/</loc>
    <lastmod>2026-06-29T00:00:00.000Z</lastmod>
    <image:image>
      <image:loc>https://blog.ruahverce.com/_astro/01-cover.CMPypJwY.png</image:loc>
      <image:title>RAPTOR — 재귀 요약 트리로 긴 문맥을 검색하는 RAG 기법</image:title>
      <image:caption>rag-techniques 시리즈 1편 — RAPTOR 재귀 요약 트리 기반 Retrieval</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://blog.ruahverce.com/posts/16-hybrid-search-rrf/</loc>
    <lastmod>2026-07-16T00:00:00.000Z</lastmod>
    <image:image>
      <image:loc>https://blog.ruahverce.com/_astro/16-cover.DRN9NuKr.svg</image:loc>
      <image:title>Hybrid Search: BM25와 Vector 검색을 RRF로 합치기 (6/10)</image:title>
      <image:caption>BM25 sparse 순위와 dense vector 순위가 서로 다른 후보를 만든 뒤 stable ID로 합쳐 RRF 점수로 최종 순위를 만드는 hybrid search</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://blog.ruahverce.com/posts/01-stage-trace-before-splade/</loc>
    <lastmod>2026-07-02T00:00:00.000Z</lastmod>
    <image:image>
      <image:loc>https://blog.ruahverce.com/_astro/01-cover.DjFgsi1g.svg</image:loc>
      <image:title>Retrieval 성능의 한계에 부딪쳤을 때 1: SPLADE보다 먼저 봐야 할 것</image:title>
      <image:caption>도메인 retrieval stage trace 표와 dense sparse fusion rerank 진단 흐름을 보여주는 오픈 그래프 카드</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://blog.ruahverce.com/posts/02-astro-railway-cloudflare-setup/</loc>
    <lastmod>2026-04-28T00:00:00.000Z</lastmod>
    <image:image>
      <image:loc>https://blog.ruahverce.com/_astro/02-cover.C24MuxFF.png</image:loc>
      <image:title>Astro · Railway · Cloudflare 개인 도메인 블로그 배포 가이드 — 30초 git push 파이프라인 (2/3)</image:title>
      <image:caption>블로그 운영기 시리즈 2편 — Astro·Railway·Cloudflare 스택으로 개인 도메인 블로그 만들기</image:caption>
    </image:image>
  </url>
</urlset>