Slide 1

Slide 1 text

言語モデルの活用に 関する研究 id:SlashNephy 2026/6/30 Hatena Engineer Seminar #37 サービスを支える技術基盤編 1

Slide 2

Slide 2 text

id:SlashNephy ● 読み: ねふぃー ● Web アプリケーションエンジニア ● 2022年4月入社 インフラからスマートフォンアプリなど はばひろ〜くやってます 2 GitHub @SlashNephy

Slide 3

Slide 3 text

3 🤖 言語モデルを 活用できていますか?

Slide 4

Slide 4 text

今日お話しすること チームで実験している 言語モデル の活用例 1. 検索基盤 🔍 ○ AI エージェントが使いやすい検索基盤の整備 2. コンテンツ分類 🏷 ○ テキストコンテンツの属性を判定・分類 4

Slide 5

Slide 5 text

5 “投資” 💰 基盤の改善は派手なお披露目にしにくい… 基盤チームだからこその ”投資” で全社に貢献 ⭐ 失敗も “投資” のうち ✨

Slide 6

Slide 6 text

6 「実験場」としての はてラボ 🧪

Slide 7

Slide 7 text

7 はてラボ 🧪 https://hatelabo.jp ● はてなが運営する実験的サービスの置き場所 ● サービス開発を身近に・活発にすることを目的 としたプラットフォーム

Slide 8

Slide 8 text

はてな匿名ダイアリー https://anond.hatelabo.jp ● 2006年に誕生した歴史のあるラボサービス 🧪 ● 歴史がある ➡ 膨大なデータが蓄積 📚 8

Slide 9

Slide 9 text

9 検索基盤 🔍

Slide 10

Slide 10 text

10 なぜ検索基盤を整備するのか Agentic RAG をしたい AI エージェントが情報収集しやすくしたい 👉 良質なデータが回答品質に直結

Slide 11

Slide 11 text

検索の手法 ● キーワード検索 🔤 ○ 語の一致で引く ● セマンティック検索 🧭 ○ 埋め込みベクトルを利用し、意味の近さで引く 👉 言い回しが違っても、似た文章を探せる 11

Slide 12

Slide 12 text

Amazon OpenSearch Service ● OpenSearch による全文検索は構築済み ● インフラを変更せずに検索を拡張 ※ はてな匿名ダイアリーでは、以前に導入済み (https://labo.hatenastaff.com/entry/2024/04/01/000000) 12

Slide 13

Slide 13 text

OpenSearch の ML プラグイン 🧩 ● 外部のモデルを呼び出せる ○ インデックスに埋め込みベクトルを保存 ○ 入力と似た埋め込みを持つドキュメントを検索 (k-NN) 👉 セマンティック検索を OpenSearch で完結 13

Slide 14

Slide 14 text

埋め込みモデルの選定 単に高性能なモデルを使えばよい... というわけでもない 👉 コスト (金銭的・時間的) vs モデル性能のトレードオフ ⚖ 14

Slide 15

Slide 15 text

埋め込みモデルの候補 ① 1. 日本語性能の高い “cl-nagoya/ruri-v3” ○ SageMaker AI エンドポイントは時間課金 ● GPU (ml.g4dn.xlarge) で推論したいとなると、$700/月以上 💸 ○ ※ JMTEB ベンチマーク 15

Slide 16

Slide 16 text

埋め込みモデルの候補 ② 2. Bedrock 基盤モデル “Cohere Embed v4” ○ 課金体系が入力トークン量ベース。しかも安い ● ✅ $0.12/100万トークン ● あらかじめコストを予測しやすい 👍 ○ 採用 🎯 16

Slide 17

Slide 17 text

チャンキング ✂ チャンク 1 チャンク 2 チャンク 3 オーバーラップ (前後チャンクの重なり) 17 ⚠ 意味の希薄化 長いテキストを1つのベクトルに 変換すると、コンテキストや ニュアンスが希薄化 ✅ 分割 & オーバーラップ 分割しつつ前後を重ねることで 情報の欠落を防止 (LangChain RecursiveCharacterTextSplitter を利用) 元の長いテキスト

Slide 18

Slide 18 text

埋め込みの推論 🪄 バッチ推論 🗂 ● 一括推論 ● Step Functions から推論 Lambda を呼び出し ● (Ingest Pipeline + Reindex は不採用: Bedrock リトライが難しい) リアルタイム推論 ⏳ ● ドキュメントの追加等、不定期な推論 ● SQS (Lambda Trigger) から推論 Lambda を呼び出し 18

Slide 19

Slide 19 text

プロダクトへの導入 「あいまい検索」 「関連エントリ」 ※ 2026/4/1 リリース: https://labo.hatenastaff.com/entry/2026/04/01/000000 19

Slide 20

Slide 20 text

20 コンテンツ分類 🏷

Slide 21

Slide 21 text

21 分類タスク 【元本保証】デイトレで絶対 儲かります【高収入】 モメンタム相場を予測する → https://example.com 株始めて3ヶ月。 example.comで見かけた銘柄が 地味に上場来高値。 今月のNISAなんだが、... これはスパム? 🧐 👉 文脈を理解しないと判別は難しい

Slide 22

Slide 22 text

22 なぜ言語モデルで分類したいのか ● 従来手法 (ルールベース・古典的 ML) ○ 言い回しの変化に弱い ○ スパマーとのイタチごっこになりがち ● 言語モデル 🧠 ○ 意味・文脈を理解できる ○ 👉 スパムっぽいものを判別できる?

Slide 23

Slide 23 text

許容ラインはどこ? スパムを判定するシステムがあるとして ● 偽陽性 (冤罪の発生) 😵 ○ ユーザー体験に悪影響 ○ なるべく偽陽性率を低くしたい・適合率を重視 ● 偽陰性 (スパムの見逃し) 😒 ○ ある程度は許容できる 23

Slide 24

Slide 24 text

24 混同行列・適合率 真陽性 (TP) ✅ スパムを正しく判定 偽陽性 (FP) 😵 非スパムをスパム判 定 偽陰性 (FN) 😒 スパムの見逃し 真陰性 (TN) ✅ 非スパムを正しく判 定 予測 スパム 実際 非スパム スパム 非スパム 適合率 👉 推論結果と比べて許容ラインを決定

Slide 25

Slide 25 text

25 モデルのトレーニング 最低限の言語理解がある小型モデルで十分? ● Gemma 3 270M (it) ● Unsloth 🦥 で LoRA トレーニング

Slide 26

Slide 26 text

ファインチューニング 生成タスクとして学習 💡 ● 指示と判定したいテキスト 🔜 2値ラベル (1: スパム, 0: 非スパム)   ※ 2025年当時。今は適した分類ヘッドがありそう (unsloth #372)。 26 // 指示 {"role": "system", "content": "スパムなら 1、そうでなければ 0 と出力すること。 "} // 判定対象テキスト {"role": "user", "content": "【安全】スパムじゃないよ :(´◦ω◦`):プルプル https://evil"} // 生成させる正解ラベル (0 or 1) {"role": "assistant", "content": "1"}

Slide 27

Slide 27 text

モデルの更新 ● 学習当時と言葉のニュアンスが変化 ● 新語の流行 定期的なモデルの重みの更新が必要 👉 MLOps で体系化 27

Slide 28

Slide 28 text

MLOps パイプライン 🏭 Agent Platform Pipelines (Google Cloud, ※ 旧 Vertex AI Pipelines) “継続的に” モデルの改善ループを回せる状態にする 28    🔮 トレーニング (ハイパーパラメータチュー ニング・LoRA トレーニング) Agent Platform 上で実行。 パラメータを記録することで、 再現性を確保。 ⚖ モデルの評価 完成したモデルの適合率 などを検証。 基準に満たない場合は、 デプロイを中止。 🎊 デプロイ 評価をクリアしたモデル を本番環境へ反映。 データ準備 Label Studio による正確 な教師データの整備。 Cleanlab を用いたノイズ の排除。 d 📚 a s e

Slide 29

Slide 29 text

パイプラインの実装 Kubeflow Pipelines を使い Python で記述 🐍 トレーニング 〜 デプロイまで 一連のパイプラインとして 実 装 29 Agent Platform Pipelines

Slide 30

Slide 30 text

データ品質の確保 ● リバランス ○ データ属性の均衡 ● Label Studio 🏷 ○ 人手でラベリング ● Cleanlab 🧹 ○ 人間も AI も間違うので... 怪しいラベルを除去 30

Slide 31

Slide 31 text

継続的にモデルの品質を維持 ● 定期的にパイプラインを回す 🔁 ● トレーニング後、指標 (適合率) 未達なら破棄 ● 品質チェック・デプロイまでが MLOps 31

Slide 32

Slide 32 text

MLOps の全社展開 当初、スパム判定でスタートしたが...? ● はてなは UGC サービスが多い ● コンテンツ モデレーションなどにも応用? 👉 MLOps への “投資” が活きる 32

Slide 33

Slide 33 text

33 まとめ

Slide 34

Slide 34 text

34 ご紹介した言語モデル活用例 ● 検索基盤 🔍 ○ 「あいまい検索」 ○ 「関連エントリ」機能 ● コンテンツ分類 🏷 ○ スパム判定 ○ コンテンツモデレーション ○ etc…

Slide 35

Slide 35 text

おわりに ● サービスプラットフォームは基盤チーム ○ 実験の成功も失敗も、社内の “資産” になる ● 派手ではないけれど、効く技術 ✨ ○ かつての “投資” が巡り巡って役立つ時がくる 35

Slide 36

Slide 36 text

36 ご清聴ありがとうございました 🙏