新規事業 toitta におけるAI 機能評価の話 / AI Feature Evaluation in toitta
by
https://speakerdeck.com/pokutuna
×
Copy
Open
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
新規事業 toitta における AI 機能評価の話 id:pokutuna Hatena Engineer Seminar #36 プロダクトを支えるAI編
Slide 2
Slide 2 text
id:pokutuna ● よみ: ぽくつな ● 現在: toitta の AI 周辺担当 ● 2013 新卒入社 ➡ Miiverse ➡ カクヨム ➡ 広告配信・データ基盤 ➡ 新規事業
Slide 3
Slide 3 text
AI 機能の評価 どうしていますか?
Slide 4
Slide 4 text
まえおき ● 品質を高めるには評価が不可欠 ● でも定番のやり方がない (みんな悩みながらやっている) これまでの取り組みを紹介します
Slide 5
Slide 5 text
今日話す内容 ● toitta の紹介 ● なぜ評価が必要か ● AI 機能での評価とふりかえり ● 評価のプラクティス
Slide 6
Slide 6 text
今日話す "評価" モデル学習時の loss ベンチマーク 汎用的な指標 👉 AI を利用した機能の評価 の話
Slide 7
Slide 7 text
toitta とは
Slide 8
Slide 8 text
No content
Slide 9
Slide 9 text
AI を活用した発話分析ソリューション ● ユーザーリサーチの支援 ● 書き起こし & 話者分離 ● 切片の抽出・分類 ● 調査に沿ったレポート生成 そのほか様々な リサーチを支援する機能
Slide 10
Slide 10 text
今日話す 3 つの AI 機能 ● 切片分類: 切片をクラスタ化 ● クロスレポート: 情報抽出・構造化 ● ask toitta: 質問への回答・RAG
Slide 11
Slide 11 text
なぜ評価が必要か
Slide 12
Slide 12 text
AI 機能の開発サイクル
Slide 13
Slide 13 text
AI 機能の開発サイクル 「すごい!! いけそうだ!!」
Slide 14
Slide 14 text
AI 機能の開発サイクル 「良くなってるの?」 「どう改善したら...」
Slide 15
Slide 15 text
評価がないと... ● 判断できない ○ 🤔「たぶん良くなった気がする」 ● 改善できない ○ 😕「何が課題か分からない」 ● 維持できない ○ 😨「モデル更新のたびに不安...」
Slide 16
Slide 16 text
toitta の AI機能と評価の歴史
Slide 17
Slide 17 text
1. 切片分類
Slide 18
Slide 18 text
切片
Slide 19
Slide 19 text
切片分類 切片をグループ化・説明を付与
Slide 20
Slide 20 text
切片分類: 定性評価のみ ● 良し悪しはあるが正解がない ● 良い定量指標を定義できなかった ○ Spreadsheet に出力して評価 ○ 修正前後で比較 ○ バージョンを隠して評価することも
Slide 21
Slide 21 text
切片分類: 定性評価のみ
Slide 22
Slide 22 text
切片分類: ふりかえり ⭕ 目視の評価で改善を回せた ○ 明らかな問題は潰せたが... ❌ 人手がかかりスケールしない ○ 評価者の主観に依存・悪化に気づきにくい ❌ 期間が空くと忘れる ○ 特にモデル更新時、前回が半年前なことも
Slide 23
Slide 23 text
2. クロスレポート
Slide 24
Slide 24 text
クロスレポート 縦 に 質 問 横にインタビュー
Slide 25
Slide 25 text
クロスレポート ● インタビューから情報を抽出・構造化 ○ 質問リストを設定 → レポート生成 ● LLM-as-a-Judge を導入 ○ DeepEval をランナーとして利用 ○ 組み込み指標ではなくカスタム指標を定義して評価 ○ 結果の JSON を保存・可視化
Slide 26
Slide 26 text
LLM-as-a-Judge
Slide 27
Slide 27 text
LLM-as-a-Judge
Slide 28
Slide 28 text
カスタム指標の例 ● Contains("内容") ○ 期待する内容が含まれているか ● Guideline("状態") ○ 指示の状態を満たしているか ● Groundedness(["文脈", ...]) ○ 文脈(発話データ)に基づいた回答か ● Length(min, max) ○ 文字数が想定範囲内か (決定的)
Slide 29
Slide 29 text
可視化ツール
Slide 30
Slide 30 text
可視化ツール
Slide 31
Slide 31 text
クロスレポート: 振り返り ⭕ 半自動的な評価ループを構築 ❌ 評価データを作るのが大変 ○ データ・評価どちらともに ❌ 優先度の扱いが難しい ○ Must でも実際には許容できたり ○ 実行ごとに多少結果が変わる
Slide 32
Slide 32 text
3. ask toitta
Slide 33
Slide 33 text
ask toitta 質問を入力
Slide 34
Slide 34 text
インタビューを分析し根拠付きで回答
Slide 35
Slide 35 text
ask toitta ● 蓄積したインタビューへの Q&A RAG ● 品質を高めていくところに課題 ● 多様な入力がありうる ○ 「ユーザーが困っていることは?」 ○ 「A と B でどちらが好まれている?」 ○ 「解約を防ぐアイデアを提案して」
Slide 36
Slide 36 text
評価のアプローチ ● ユーザの入力をカテゴリ分類 ● 評価用インタビューデータを生成 ● Promptfoo を用いて評価
Slide 37
Slide 37 text
アプローチ1: 入力をカテゴリ分類 ユーザーの入力を分類 👉 カテゴリごとに評価 ● 評価を作りやすい ● 範囲を絞って改善 ● 要求・優先度の調整にも ├─ 情報抽出 │ ├─ 話題の抽出 │ ├─ 発言有無 │ └─ 発話者特定 ├─ 整理 │ ├─ 要約 │ ├─ リスト化 │ └─ 時系列 ├─ 分析 │ ├─ 比較 │ ├─ 課題特定 │ ├─ 理由づけ │ └─ ユーザ属性分類 ├─ 提案 └─ メタ ├─ 一般知識 └─ toitta の使い方
Slide 38
Slide 38 text
アプローチ2: インタビューデータを生成 実データは足りない・扱いづらい 👉 AI で合成データを生成
Slide 39
Slide 39 text
アプローチ3: Promptfoo ● 欲しい評価・機能があった ○ 主に以下で評価 ■ model-graded-closedqa: Y/N で答える ■ llm-rubric: 基準に基づいてスコアを付ける ○ セルフホストで安く運用しつつ共有 ● AI で作業しやすい ○ 評価のたたき台を作らせ調整 ○ 合成データを探索する MCP で正解データを生成
Slide 40
Slide 40 text
ask toitta: ふりかえり ⭕ 入力の分類で改善の道筋ができた ⭕ promptfoo で評価が回しやすく ❌ 想定外の入力に対応していく必要 🏃 正式リリースに向け改善中...
Slide 41
Slide 41 text
評価のプラクティス
Slide 42
Slide 42 text
テストのような評価を書く 🤔 有用性スコアが 70 点以上? 🤔 コサイン類似度が 0.6 以上? ⭕ 「価格が高い」という内容を含む? ⭕ ユーザ A, B, C の発言を引用して回答して る? → 具体的で判断がしやすい評価をする
Slide 43
Slide 43 text
スコアを刻まない 🤔 100点満点で評価 ⭕ Pass or Fail ⭕ 段階分けるなら 3~5 段階 😊「よし、80点でリリースしよう」 🙄「78点の時は何をどうすればいいの?」
Slide 44
Slide 44 text
E2E な評価を優先する
Slide 45
Slide 45 text
評価の評価をする ● 評価がうまく評価できているか ● 人間の評価とのすり合わせ ○ 人間と LLM が同じスコアを付けるか ○ Cohen's kappa で比較 ● 評価プロンプト自体もテストする ○ 簡単: 意図したスコアになるかテスト
Slide 46
Slide 46 text
評価の評価をする 実際に各スコアが出る 入力を用意 & チェック
Slide 47
Slide 47 text
簡単すぎる評価は少なめに ● 評価には時間もコストもかかる ● どうせ解ける評価を作りすぎない ○ 動作確認的なものは必要 ● 難しいところに優先して追加する
Slide 48
Slide 48 text
プラクティスまとめ ● テストのような評価を書く ● スコアを刻まない ● E2E な評価を優先する ● 評価の評価をする ● 簡単すぎる評価は少なめに
Slide 49
Slide 49 text
まとめ
Slide 50
Slide 50 text
まとめ ● toitta の紹介 ○ AI を活用したインタビュー分析サービス ● なぜ評価が必要か ○ 改善の道しるべにするため ● AI 機能での評価とふりかえり ○ 定性評価から LLM-as-a-Judge、評価データの生成へ ● 評価のプラクティス ○ 課題の発見 & 改善に繋がる評価をしよう