Upgrade to Pro — share decks privately, control downloads, hide ads and more …

BacklogのRAG 今ならこう作る - S3 Vectorsと自前パイプラインの勘所

BacklogのRAG 今ならこう作る - S3 Vectorsと自前パイプラインの勘所

【福岡開催】AWS Community Builders Meetup Kyushu 2026 の登壇資料
https://kyushu-cbs.connpass.com/event/404203/

Avatar for Tsuyoshi Yamasaki

Tsuyoshi Yamasaki

October 22, 2026

More Decks by Tsuyoshi Yamasaki

Other Decks in Technology

Transcript

  1. Backlog の RAG 今ならこう作る S3 Vectors と⾃前パイプラインの勘所 2026/10/23 - AWS

    Community Builders Meetup Kyushu 2026 株式会社ヌーラボ ⼭崎 毅 (@revsystem)
  2. Tsuyoshi Yamasaki Software Engineer , ex-SRE @Nulab Inc. • 2025.03~

    AWS Community Builder (AI Engineering) • 2025.07~ JAWS-UG AI/ML⽀部運営メンバー @revsystem
  3. 今⽇お話しすること • 以前作った RAG と「今ならどうするか」 • Bedrock KB から、⾃前のパイプラインと S3

    Vectors へ • ① 件名が本⽂に埋もれる • ② ノイズ除去 • ③ 課題の属性で区別する • 結果とまとめ 3
  4. 以前、Bedrock KB で Backlog の RAG を作った • 2024〜2025年に、Backlog の課題と

    Wiki を Bedrock Knowledge Bases に⼊れ、Slack か ら質問できる RAG を PoC で作った • 動くものはできたが、回答の良し悪しを感覚でしか 判断できなかった • 振り返りをヌーラボブログに書いた • 記事の最後に「今ならどうするか」を書いた ヌーラボブログ「BacklogのRAG Slackチャットボット、作って分かった『その先』の壁」(2026-08-17)より 5
  5. どう測ったか 約2万件 マーケ系プロジェクトの課題 17問 正解の決め⽅ 正解の課題が わかっている質問 件名のキーワードで 全件から洗い出した 17問の中⾝:

    1件を探す質問と、条件に合う課題をまとめて探す質問。うち3問は社内で集めた実際の質問 ⾒るのは「上位10件に正解が⼊ったか」と「正解が何位に出たか」 9
  6. ① 件名が本⽂に埋もれる Backlog の課題 件名(短い) 件名と本⽂を 混ぜたインデックス 件名3割・本⽂7割で混ぜる 本⽂・コメント (⻑い)

    2つから候補を集めて Rerank で並べ直す 件名だけの インデックス 本⽂に埋もれた課題を拾う 本⽂が⻑いと、ベクトルの中で件名の意味が薄まる 10
  7. ① いちばん⾒つけにくかった課題は何位に出たか ⾃前のパイプライン 件名と本⽂を 混ぜたインデックス Bedrock KB 442位 3,193位 2つから集めて並べ直す

    15位 件名だけのインデックス 142位 順位でまとめて Rerank 1つのインデックスでは拾えない課題を、別の⾒⽅のインデックスで拾う 11
  8. ② ノイズ除去: 何を消したか • 全件を数えると、引⽤と裸の URL で本⽂の約2割 • 「お疲れ様です」などの定型の挨拶の⾏も多い •

    ⼈が読むには⾃然でも、ベクトルにとっては意味のない繰り返し • Bedrock KB でも Lambda で前処理を挟めるが、今回は⾃前で⾏った 12
  9. ② ノイズ除去: 何を消さないか 最初の版 直した版 引⽤を全部消した 重複する引⽤だけ消す ある質問の正解3件が 検索で⾒つからなくなった 正解が戻った

    他の質問は1つも悪くならなかった ⼈名、コメントの書き⼿と⽇時、コメント本⽂は消さない(⼈名で探す質問があるため) 何を消すかより、何を消さないか 13
  10. ③ 課題の属性は置き場を3つに分ける 課題の Markdown + 属性 JSON S3 Vectors DynamoDB

    本⽂ 絞り込みに使う属性 それ以外の属性と本⽂ 親課題の件名 実質 2KB まで Rerank に渡す抜粋もここから ベクトルに混ぜる ⽇付は⽂字列と数値の両⽅で持つ(範囲の絞り込みは数値だけ) 14
  11. ③ 意味では区別できない課題を、属性で区別する 属性で区別する 意味では区別できない ⽉だけが違う、よく似た課題 上位10件に別の⽉の課題 S3 Vectors の絞り込み 条件を渡せば、別の⽉の課題は外れる

    4件 → 0件(条件は⼈が指定) 4件 質問との近さ 正解 0.563 / 別の⽉ 0.564 AI アシスタントの課題検索ツール 状態や担当者などの条件は、こちらに任せる 意味での検索だけで解こうとしない 15
  12. 参考: ⼦課題に親課題の1⾏を⼊れる 親課題 ⼦課題 新サービスのページを公開する 公開までの作業を ⼦課題に分けて管理する - 検証⽤のデータでは、質問の語が本⽂に無い⼦課 題が1位に

    - 効果の切り分けはまだ ⽂⾔を確認する 親課題: PRJ-100 新サービスのページを公開する 修正点を3つまとめました。ご確認ください。 - 取り込みのとき、親課題のキーと件名を⼦課題の本⽂の先頭近 くに1⾏⼊れる - 元の本⽂だけでは、何の⽂⾔かわからない ⼦課題に、親課題の⽂脈を1⾏で⾜す 16
  13. まとめ: Backlog の RAG、今ならこう作る • ① 件名と本⽂を混ぜたインデックスと件名だけのインデックスを持ち、2つ から集めて並べ直す • ②

    ノイズは「何を消さないか」を決めてから落とす • ③ 意味で区別できないものは属性で区別する。置き場を分け、絞り込める形 で持つ Bedrock KB で始めて⾏き詰まったら、 取り込みを⾃前にして S3 Vectors を直接使う 18