Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
生成AIを活用したZennの取り組み事例
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
igarashi
September 29, 2025
Technology
760
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
生成AIを活用したZennの取り組み事例
DevelopersIO 2025 Sapporo で発表したセッションのスライドです。
https://classmethod.connpass.com/event/366068/
igarashi
September 29, 2025
More Decks by igarashi
See All by igarashi
Zennのパフォーマンスモニタリングでやっていること
ryosukeigarashi
0
1.3k
Webエディタライブラリ 「CodeMirror」から学ぶ Webアプリ開発のテクニック
ryosukeigarashi
0
2.1k
Other Decks in Technology
See All in Technology
時期が悪い!それでもRaspberry Piを買って遊んで活用するには / 20260627-osc26do-rpi-jikigawarui
akkiesoft
1
910
Why is RC4 still being used?
tamaiyutaro
0
190
元・セキュリティ学習経験0大学生による業務紹介 / An Introduction to the Job by a Former College Student with Zero Security Training Experience
nttcom
0
1k
Agentic AI 時代のテスト手法: Kiro とはじめるプロパティベーステスト (AWS Summit Japan 2026 | DEV212)
ymhiroki
0
100
技術・能力を向上する原理原則 #きのこセッションa #きのこ2026
bash0c7
0
180
「勝手に広まる」人気 AI エージェントを爆速で作ろう!(AWS Summit Japan 2026講演資料)
minorun365
PRO
10
2.7k
フルAIで個人開発して学んだあれこれ / yuruai vol.1
isaoshimizu
0
160
水を運ぶ人としてのリーダーシップ
izumii19
4
1.1k
クラウドファンディング版StackChan 3体(4体)をインタラクティブな体験型作品にして展示もした話 / スタックチャンお誕生日会2026
you
PRO
0
250
Microsoft のサポートとフィードバック総まとめ
murachiakira
PRO
0
120
秘密度ラベル初心者が第1歩でつまづかないための「設計・運用」ポイント
seafay
PRO
1
520
週末にループ・エンジニアリングの理解を深めるためのスライド
nagatsu
0
640
Featured
See All Featured
Fashionably flexible responsive web design (full day workshop)
malarkey
408
66k
A better future with KSS
kneath
240
18k
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
210
Chasing Engaging Ingredients in Design
codingconduct
0
230
How GitHub (no longer) Works
holman
316
150k
The untapped power of vector embeddings
frankvandijk
2
1.8k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
3.5k
Thoughts on Productivity
jonyablonski
76
5.2k
Java REST API Framework Comparison - PWX 2021
mraible
34
9.4k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.5k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.2k
The Limits of Empathy - UXLibs8
cassininazir
1
370
Transcript
⽣成AIを活⽤した Zennの取り組み事例 Igarashi Ryosuke 新規事業統括部 Zennチーム
⾃⼰紹介 2 Igarashi Ryosuke • 2015年 ⼊社 ◦ バックエンドエンジニア •
2021年 から Zennチーム ◦ Next.js / Ruby on Rails / Google Cloud
Zennで⽣成AIを活⽤した主な取り組み 3 • 記事のAIレビュー機能 • 記事のレコメンド機能 ← 今⽇はこれのお話 • コンテンツのスパムチェック •
⾃然⾔語でのDB問い合わせ
Zennで⽣成AIを活⽤した主な取り組み 4 その他は、現在開催中の "Zennfes 2025" の動画で紹介しています。 https://zenn.dev/events/zennfes-2025
⽣成AIを活⽤した 記事のレコメンド機能
レコメンド機能に取り組む背景 6 • トップページのトレンド(Trending)が偏りがち ◦ Web開発系の記事に⼈気が集まる傾向 ◦ 少し前までは⽣成AI/AI駆動開発など⼀⾊に ◦ 良くも悪くもトレンドを反映
• 読者に読みたいコンテンツを届けるのはコンテンツ投 稿サイトの使命 → 機械学習を使わず、⽣成AIを使ってパーソナライズされ たレコメンドを!
やったこと 7 • phase 1. 6次元ベクトルによる類似検索(βリリース) • phase 2. Embeddingsによる類似検索(検証のみ) • phase
3. トピックベースの類似検索(現在)
phase 1 6次元ベクトルによる類似検索(βリリース)
作戦 9 • トレンドと同じ期間(おおよそ公開から1週間)の記事を推薦する ◦ 記事の総数が少ないためピンポイントな推薦は難しい ◦ ざっくりとした6つのカテゴリー分類での推薦を⽬指す • 記事の内容を⽣成AIに読み込ませて特徴を数値化
◦ 6つのカテゴリーそれぞれに対する関連度を、6次元ベクトルで表現 • ユーザーが興味を⽰した記事のベクトルからユーザーの興味ベクトル計算 • 記事とユーザーのベクトル類似検索でレコメンド記事を提供
詳細 10 ①生成AIにより記事の特徴を 数値化(ベクトル化) ②ユーザーが興味を示した記事のベクトル を集計して、ユーザーの興味を数値化(ベク トル化) ③ベクトルが近い記 事を抽出 【記事の特徴ベクトル】
【ユーザーの興味ベクトル】
プロンプト 11 ←ここに記事の本⽂が⼊る
出⼒例 12
技術トピック 13 • ⽣成AIは Vertex AI - Gemini 2.5 Flash
を使⽤ ◦ レスポンスのフォーマットをJSON Schemaで定義できる ◦ 思考(thinking)を有効にすると、深い洞察を⾏う • ベクトル計算はpgvector(PostgreSQL拡張)を使⽤ ◦ vector型フィールド ◦ ユークリッド距離、コサイン類似度、内積などの演算 ◦ 近似近傍検索⽤のインデックス
より詳しくは 14 https://zenn.dev/team_zenn/articles/zenn-recommend-system
結果 15 • ⽣成AIによる特徴抽出は⾼い精度で実現できた。 • 多くのユーザーが求める"レコメンド"と期待値のズレ ◦ ユーザーフィードバックの結果 ▪ レコメンデーションの精度向上/関連性の問題(計8件)
▪ フィルタリング/パーソナライズ機能の要望(計11件) ▪ 表⽰コンテンツの多様性/量(計5件) ▪ UI/UXの改善要望(計8件) ▪ その他(計2件) ◦ ⾒せ⽅の問題もあった
phase 2 Embeddingsによる類似検索(検証のみ)
作戦 17 • phase 1の結果、レコメンドの精度に関する期待値ギャップに課題があった。 • 精度を上げるには6次元のベクトルでは⾜りない。 ◦ ベクトルを増やす? ▪
いくつあれば⼗分? ▪ ベクトル定義の更新のたびに全件更新が必要... • Embeddingsを使ってより精度の⾼い類似検索を! • ユーザーの興味ベクトルは作れないので、直近で閲覧した記事に類似する記事 を提案する
Embeddingsとは 18 • 単語、⽂章、画像、⾳声などのデータを数値ベクトルに変換すること。 • 元のデータの意味や⽂脈を数値空間で表現し、意味的に似ているデータはベ クトル空間上で近くに配置される。 • セマンティック検索(あいまい検索)、RAGなどに活⽤される。
• Embeddingsには Gemini API - gemini-embedding-001 を使⽤ ◦ 次元数は最⼤(デフォルト)3072 から
128まで圧縮可能 ▪ 今回は768次元で検証 ◦ タスクに応じたEmbeddings ▪ SEMANTIC_SIMILARITY(テキスト類似度に最適) ▪ CLASSIFICATION(ラベルに従ってテキスト分類に最適化) ▪ CLUSTERING(テキストをクラスタ化するように最適化) ▪ RETRIEVAL_DOCUMENT / RETRIEVAL_QUERY(テキスト検索向けに最適化) ▪ など 技術トピック 19
出⼒例 20 • AWS ECS オートスケーリング Cooldownを知った【2025夏】 ↓に類似する記事 • [類似度:
0.896] AWS ECS オートスケーリングの種類を学びました • [類似度: 0.838] ECSにAWS Gravitionを導⼊すると何が良いのか調べてみた • [類似度: 0.817] ECS Fargateのソフトウェア‧アップデート運⽤を考える • [類似度: 0.803] Amazon ECSのアベイラビリティゾーンリバランシングをCDK で設定する⽅法
検証結果 21 • SEMANTIC_SIMILARITY を使⽤して記事本⽂を10,000件程度ベクトル化 • 類似検索の傾向 ◦ ある程度の⽂量の記事は類似性が⾼い記事が検出しやすい ◦
短い記事やidea記事は微妙 • 結果のコントロールの難しさを感じた
(参考)ハイブリッド検索 ※時間が余ってたら 22 • Embeddingsは意味や⽂脈の類似性を捉えるが、単語レベルの類似性は弱い • より精度を⾼めるには、キーワードの類似性も掛け合わせたハイブリッド検 索を使う • 2種類のベクトル
◦ 密なベクトル(意味的、Embeddingsはこっち) ◦ 疎なベクトル(キーワード的) • 2つのベクトルの類似度を合成してランキングを作る
(参考)ハイブリッド検索 23 出典: https://cloud.google.com/vertex-ai/docs/vector-search/about-hybrid-search?hl=ja 密なベクトル 疎なベクトル
(参考)ハイブリッド検索 24 • 疎なベクトルの⽣成には、TF-IDF や BM25 のような統計⼿法や、学習済のモ デル(SPLADEなど)を⽤いる。 • ハイブリッド検索は最近のベクトルDBサービスにはだいたい備わっていそ
う。pgvectorでもサポートあり。 • それぞれのベクトルで類似検索を⾏い、リランキングをする。
phase 3 トピックベースの類似検索(現在)
作戦 26 • phase 2 検証時点のチーム内の声 ◦ もっと直近の閲覧状況を反映した記事が⾒たい ◦ もっと質の⾼い記事が推薦されてほしい
• 閲覧履歴を記録し、直近10件の記事に頻出するトピックを抽出 • 直近3ヶ⽉以内に公開された記事のうち⼈気度が⾼い記事の中から、トピック の類似度が⾼い記事を抽出 • ルールベースの推薦
お試しください 27
課題 28 • 記事に適切なトピックが設定されているか • ユーザーの記事に対する興味の測り⽅‧重み付け • ユーザーの興味がないトピックへのフィードバック
まとめ
まとめ 30 • ⽣成AIによって記事のスコアリングは⾼い精度で実現した • Embeddingsは明確で⼗分な⽂章量があれば⾼い精度でベクトルが類似する • レコメンドはとても奥が深い ◦ やり⽅が無限にある
▪ ルールベース、コンテンツベース、協調フィルタリング、など ◦ 変数が多すぎる ▪ ユーザーの⾏動(ポジティブ‧ネガティブ)、コンテンツ属性、など ◦ UI/UXも⼤事 ▪ 期待値コントロール、推薦の納得感、など
None