「なぜ関連するのか」まで分かる提案 — AI業務管理秘書たすきばの「なぜ?」機能
提案結果に、「なぜ?」が添えられる
このシリーズの最後のユニーク機能の話です。
- 提案機能(リリース済み) — 構造化フォームから過去資産が並ぶ
- チャット意味検索(リリース済み) — 自然言語で過去資産を引き出す
- 「なぜ?」機能(リリース済み・今日の主役) — 提案結果に「なぜ関連するか」の説明が付く
今日は 3 つ目、 「なぜ?」機能 の話です。たすきばの Pro プラン差別化 として位置づけているこの機能を、 LLM Re-ranking という技術判断と一緒に書きます。
「関連度 0.82」だけだと、足りない
B-2 の提案機能 では、3 軸合算スコアで関連資産が並ぶ、と書きました。画面上ではこんなふうに見えます。
関連ナレッジ
- 「Stripe Webhook の Idempotency 設計」(関連度 0.82)
- 「EC サイトの個人情報マスキング設計」(関連度 0.79)
- ...
これでも十分役に立ちます。けれど、しばらく使ってみて、私の中に小さな引っかかりが残りました。
「0.82」って、結局どういう意味なんだろう?
数値はあります。ベクトルの Cosine 類似度が 0.82 だ、と言われたところで、それを 業務の判断に翻訳する作業 はユーザに残されています。「あ、こっちは目を通しておこう」「こっちは今回は関係ないかな」——その判断が、結局は人間の頭の中で行われる。
提案がちゃんと 「使われる」 ためには、もう一段、 「なぜ関連すると判断したのか」 が人間の言葉で読める必要があるんじゃないか——そう考えるようになりました。
「なぜ?」機能のイメージ
実際の画面イメージは、こうです(Pro プランで利用できます)。
関連ナレッジ(Pro プランで「なぜ?」付き)
- 「Stripe Webhook の Idempotency 設計」(関連度 0.82)
💡 なぜ: 今回のプロジェクト「EC サイト リニューアル」で言及されている
決済処理と、このナレッジで扱う Webhook の冪等性は、
「同じ操作を複数回受け取っても結果が一意」という同じ課題を
異なる文脈で扱っています。
- 「EC サイトの個人情報マスキング設計」(関連度 0.79)
💡 なぜ: 対象範囲(scope)に含まれる「会員機能」が、
本ナレッジが扱う PII(個人識別情報)の対象と一致するため。
数値だけだったところに、 人間が読んで納得できる理由 が一行添えられます。これで、 「読むかどうかの判断が、3 秒以内に下せる」 ようになります。
技術構造 — LLM Re-ranking とは何か
ここから少し技術寄りの話です(深いところは Qiita 側に分けますが、骨格だけは書きます)。
「なぜ?」機能は、提案結果に対して 2 段階のランキング を行います。
[Step 1] 3 軸合算スコアで上位 N 件(例: 上位 20 件)を選ぶ
↓
[Step 2] その N 件を Anthropic Claude Sonnet に渡す
↓
LLM が「なぜ関連するか」の説明文を生成
↓
LLM の判断で順序を再ランキング
↓
[Step 3] 上位 K 件(例: 5 件)を「なぜ?」付きで表示
これが LLM Re-ranking と呼ばれるパターンです。3 軸合算スコアで「広く・速く・安く」絞り込み、その後に LLM で「深く・遅く・高く」判定する ——という 2 段構えになっています。
なぜ 2 段構えなのか
1 段目(3 軸合算スコア)の意味:
- 広く: 50 件規模の母集団から候補を絞る
- 速く: pgvector が DB 内で計算(数百ミリ秒)
- 安く: 外部 API を呼ばない(B-2 で書いた「検索時 ¥0」)
2 段目(LLM Re-ranking)の意味:
- 深く: 数値類似度を超えた、文脈レベルの判定
- 遅く: LLM 呼び出しは 1〜数秒かかる
- 高く: Sonnet の従量課金が発生
1 段目を全候補に通すと安くて速く、けれど “なぜ” が出せない。 2 段目を全候補に通すと “なぜ” が出るが、コストと時間が爆発する。
そこで、 「1 段目で絞ってから、2 段目で意味付けする」 という分業にしているわけです。これは B-3 の課金哲学 で書いた 「使った分だけ、必要な操作にだけ請求する」 設計判断と直結しています。
なぜ Pro プランの差別化に据えたか
「なぜ?」機能は、 B-3 の課金哲学 で書いた 3 プランのうち、 Pro プランの差別化 に据えています。
| プラン | 月額 | 提案結果 |
|---|---|---|
| Beginner | ¥0 | 3 軸合算スコア(数値のみ) |
| Expert | ¥0 + Haiku 従量 | 3 軸合算スコア(数値のみ) |
| Pro | ¥0 + Sonnet 従量 | 3 軸合算スコア + 「なぜ?」説明文付き |
Pro プランだけ Sonnet モデルを使えるのは、 コスト的な必然 です。 Haiku でも「なぜ?」は生成できますが、 業務利用に耐える品質 を出すには Sonnet のほうが圧倒的に安定する、というのが現時点の判断です。
「コストを払ってでも、もう一段深い体験が欲しい」 というユーザに、 Pro プランで 数値の隣に言葉を添える ——これが Pro プランで確立した差別化です。
ハルシネーション対策 — LLM に何を「させない」か
ここが一番神経を使うところです。
LLM は時に嘘をつきます(ハルシネーション)。 「なぜ?」機能が嘘の理由を返してしまうと、 ユーザの業務判断を 誤った方向に押してしまう 可能性があります。 これは業務 SaaS としての信頼を直接損ねます。
たすきばの「なぜ?」機能は、 LLM に 「させない」リスト を最初から決めています。
| LLM にやらせること | LLM にやらせないこと |
|---|---|
| 提案候補とクエリの「関連性の言語化」 | 候補に含まれない情報の生成 |
| 候補の中身の「要約」 | 一般知識・推測情報の混入 |
| 「なぜ関連するか」の根拠提示 | 数値スコアの “創作” |
プロンプトレベルで、 「候補に書かれていない情報を理由として持ち出すな」 を強く制約します。さらに、 LLM への入力と出力を XML タグで厳密に分離し、出力も検証・整形してから返す——こうした 安全弁を実装に組み込んでいます 。
「LLM が便利だから何でも任せる」ではなく、 「LLM の仕事は明確に絞る」 ——これがたすきばの設計方針です。 A-4 の差別化軸 で書いた 「機能の多さは妥協しない、UI の複雑さは絶対に許容しない」 と、根は同じ態度です。
「なぜ?」機能が、たすきばの体験を完成させる
3 つのユニーク機能を並べて、最後に整理します。
| 機能 | 体験 | embedding 基盤 | 追加で使う技術 |
|---|---|---|---|
| 提案機能 | 数値で並ぶ過去資産 | Voyage + pgvector | — |
| チャット意味検索 | 会話で引き出す過去資産 | Voyage + pgvector | Voyage(クエリ embedding) |
| 「なぜ?」機能 | 数値の隣に理由が並ぶ | Voyage + pgvector | Claude Sonnet(LLM Re-ranking) |
3 つはバラバラの機能ではなく、 同じ embedding 基盤の上に乗った、3 つの異なる接点 です。 B-2 で書いた 「掘り起こし」という核を、Phase 1 → 2 → 3 と段階的に深めていく構造になっています。
まとめ
「なぜ?」機能を一言で表すなら、
数値の隣に、人間の言葉を添える機能。
提案機能が “気づかなかった過去” を画面に並べ、 チャット意味検索が “話しかけられる相棒” として隣に居る。 そしてこの「なぜ?」機能は、画面に並んだ候補の隣に 「なぜそれが、いまここに居るのか」 を、一行ずつ書き添える役割です。
この 3 つで、たすきばのユニーク機能は完成形に到達します。 3 機能ともリリース時点で稼働していますが、 「なぜ?」付きの体験こそが、 連載第 1 回 で書いた 「人間がクリエイティブな仕事に時間を使えていない構造」 を、 本気で解きにいく機能 だと考えています。
技術深堀の補章はここまでです。明日以降は、 Dogfooding から見えてきたものや、 リリース後の運用所感を、 折を見て書いていきます。
関連記事
- たすきばに自然言語で話しかける — チャット意味検索の中身 — 連載補章 1 つ目
- 提案機能でできること — “気づかなかった過去” を画面に並べる — 3 機能を貫く embedding 基盤
- 3 プラン × 従量課金の考え方 — 続けるための課金 — Pro プラン差別化の根拠
たすきば について
「なぜ?」機能は、 たすきば Knowledge Relay の Pro プランの中核機能で、リリース(2026-06-01)時点で稼働しています。各機能の体験は プロダクトページ でご確認いただけます。