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
LLMを用いたPloneベクター検索 アドオンの開発の説明
Search
Manabu TERADA
March 02, 2024
Technology
0
100
LLMを用いたPloneベクター検索 アドオンの開発の説明
「オープンソースカンファレンス2024 Online/Spring 」 2024年3月2日
Plone Users Group Japan 寺田 学
Manabu TERADA
March 02, 2024
Tweet
Share
More Decks by Manabu TERADA
See All by Manabu TERADA
近年の PyCon 情勢から見た PyCon APAC のまとめ
terapyon
0
290
Desktop Apps Made Easy: Python Web UI Frameworks with Streamlit and Stlite
terapyon
1
47
Python実践試験、 Pythonデータ分析実践試験に 合格できるひとのレベル紹介と学習法
terapyon
0
420
各種大学向けにSSO対応サイト(SP)構築の事例紹介
terapyon
0
21
コンテンツタイプとUMLで考えるPlone開発(1)
terapyon
0
79
Python Web UIフレームワークのススメ
terapyon
0
1.1k
PyCon APACの軌跡
terapyon
0
2.1k
Pythonエンジニアになるためのテクニカルハイライトと学習方法
terapyon
0
120
Multi lingual Vector search using LLM
terapyon
1
100
Other Decks in Technology
See All in Technology
JPOUG Tech Talk #12 UNDO Tablespace Reintroduction
nori_shinoda
1
140
プロダクト開発におけるAI時代の開発生産性
shnjtk
2
230
AWSLambdaMCPServerを使ってツールとMCPサーバを分離する
tkikuchi
1
3k
YOLOv10~v12
tenten0727
4
940
PicoRabbit: a Tiny Presentation Device Powered by Ruby
harukasan
PRO
2
200
いつも初心者向けの記事に助けられているので得意分野では初心者向けの記事を書きます
toru_kubota
2
310
SnowflakeとDatabricks両方でRAGを構築してみた
kameitomohiro
1
230
フロントエンドも盛り上げたい!フロントエンドCBとAmplifyの軌跡
mkdev10
2
270
LLM とプロンプトエンジニアリング/チューターをビルドする / LLM, Prompt Engineering and Building Tutors
ks91
PRO
1
250
開発視点でAWS Signerを考えてみよう!! ~コード署名のその先へ~
masakiokuda
3
160
バクラクの認証基盤の成長と現在地 / bakuraku-authn-platform
convto
1
290
日経電子版 for Android の技術的課題と取り組み(令和最新版)/android-20250423
nikkei_engineer_recruiting
0
110
Featured
See All Featured
Site-Speed That Sticks
csswizardry
5
490
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
3.8k
KATA
mclloyd
29
14k
Java REST API Framework Comparison - PWX 2021
mraible
30
8.5k
Building a Scalable Design System with Sketch
lauravandoore
462
33k
The Cost Of JavaScript in 2023
addyosmani
49
7.7k
Making Projects Easy
brettharned
116
6.1k
Speed Design
sergeychernyshev
29
900
BBQ
matthewcrist
88
9.6k
Code Reviewing Like a Champion
maltzj
522
40k
Faster Mobile Websites
deanohume
306
31k
Building an army of robots
kneath
304
45k
Transcript
CC BY 4.0 LLMを用いたPloneベクター検索 アドオンの開発の説明 ─イントラネット最適化─ Plone Users Group Japan
寺田 学 「オープンソースカンファレンス2024 Online/Spring 」 2024年3月2日
CC BY 4.0 セッション中の諸注意 • スライドは公開済み • 写真撮影可能、録音・録画可能 • 質問
◦ Zoomコメントで • SNSでのつぶやき 歓迎
CC BY 4.0 自己紹介 寺田 学 (Manabu TERADA) • Pythonエンジニア
• Podcast 「terapyon channel」(https://podcast.terapyon.net) • 主な関連書籍(共著・監修・監訳) ◦ Pythonデータ分析 実践ハンドブック (インプレス: 2023年9月) ◦ Pythonによるあたらしいデータ分析の教科書第 2版(翔泳社:2022年10月) ◦ Python実践レシピ (技術評論社: 2022年1月) ◦ スラスラわかるPython第2版(翔泳社:2021年11月) ◦ 機械学習図鑑(翔泳社 : 2019年4月)
CC BY 4.0 本日のトークと関連組織 Plone Users Group Japan として、トークします。 •
一般社団法人PyCon JP Association理事 • 株式会社 CMSコミュニケーションズ 代表取締役 • 一般社団法人Pythonエンジニア育成推進協会顧問理事 • Plone Foundation Ambassador • PSF Fellow member
CC BY 4.0 Plone Foundation Plone Foundationは、グローバルに導入されているCMSフレームワーク「Plone」の普及・ 開発を支援することを目的に2004年に設立された非営利組織です。主な活動内容は、 Ploneソフトウェアの知財管理と、カンファレンスや開発スプリントの開催を通じたコミュニ ティへの支援です。
• Plone ・・CMSツール • Guillotina ・・次世代ヘッドレス非同期サーバフレームワーク • Pyramid ・・汎用Webフレームワーク • Zope ・・Webアプリケーション基盤 • Volto ・・SPAツールキット
CC BY 4.0 本日のトーク内容 老舗CMS Ploneの検索を強化するために、 LLMを使ったベクター検索のアドオンプロダクトの開発 がスタート。 Ploneの概要、LLMを使ったベクター検索の基礎から、 Ploneに実装したベクター検索について紹介します。
CC BY 4.0 モチベーション
CC BY 4.0 モチベーション • 高機能な検索を提供したい • 単語検索ではなく、自然文でコンテンツを探したい • 外部のAPIを使わずに、内部で処理したい
• イントラで、使えるものを目指す • Ploneにはセキュリティ機能があるので融合したい • Ploneにはコンテンツ管理の仕組みがあるので融合したい
CC BY 4.0 目指す姿 Plone • コンテンツ管理 • 公開状態管理 •
ベクター検索機能 LLM • 大規模言語モデル • 多言語Embedding • ベクター永続化 • 近似ベクトル探索 ✖
CC BY 4.0 Plone Conferenceでコンセプト LT • 年1回のPlone Foundation公式イベント •
コア開発者なども集まる年1回のイベント • このトークで紹介するシステムコンセプトをLTで説明 • 多くの人に興味・関心を持ってもらった
CC BY 4.0 Ploneとは
CC BY 4.0 Plone(プローン)は、約20年の歴史 オープンソースCMS エンタープライズ対応の高度な機能を備えており、多くの人と組織が 関わるウェブサイトの管理に力を発揮します。 規模に関わらず、社内情報の共有・蓄積も得意分野です。 Ploneとは
CC BY 4.0 Ploneのスナップショット
CC BY 4.0 Ploneが提供する主な機能 • エンタープライズ環境との統合 • 柔軟なワークフロー・強固なセキュリティ • すぐれた拡張性
• 高いスケーラビリティ • 多言語対応 • アクセシビリティ対応 • 認証とシングルサインオン
CC BY 4.0 Ploneが提供する主な機能詳細 詳細 を知りたい方は OSC2019 東京秋 老舗CMS PloneとReactの融合
https://speakerdeck.com/terapyon/lao-pu-cms-plonetoreactfalserong-he?slide=17
CC BY 4.0 Ploneの最新バージョン Plone 6.0.10.1 2024年2月リリース https://plone.org/download/releases/6.0.10.1
CC BY 4.0 Plone 6.0 の過去資料 詳細 を知りたい方は OSC2021 東京春
Plone is SPA https://speakerdeck.com/terapyon/plone-is-spa
CC BY 4.0 Plone 6 を一言で Plone 6は SPA CMS
Volto (Reactベース) と Ploneを完全融合
CC BY 4.0 Ploneの検索
CC BY 4.0 Ploneの検索 • Ploneは、インデックスを用いた検索あり • コンテンツ投入時にインデックスが作られる • タグフィルタリング、日時範囲フィルタリングあり
CC BY 4.0 Ploneの検索の技術的側面 • バックエンドで、ZOPEのZCatalogが使われる • 転置インデックスが作られる • 日本語は、n-gram(2-gram)で文字分割(splitter)
• splitterはWeb UIやコードで置き換え可能 • 検索結果の順位のランキングを内部の実装で入替可能
CC BY 4.0 Ploneの検索の構成図
CC BY 4.0 Ploneの検索の良いところ • Ploneの検索は、ユーザレベルで公開範囲が結果に反映 • パス(path)で検索範囲を限定できる • PDFのドキュメント内を検索対象にできる
• MS-Office系のファイルの検索をアドオンで対応できる
CC BY 4.0 ベクター検索の概要
CC BY 4.0 ベクター検索の概要 今回のアプローチ • LLM(後述)を使ってベクトル化 • 文章を分割していくつかのベクトルにする •
検索文とデータ内のベクトル群の近似計算 • 似たベクトルの文章をピックアップ
CC BY 4.0 LLM (Large Language Model)とは 大規模言語モデル • ChatGPTに代表される
• 無料で使えるもの日本語に特化したものもある • 開発にはPythonが使われていることが多い • Pythonインターフェースが提供される
CC BY 4.0 LLM (Large Language Model)でできること • テキスト生成: LLMは与えられたプロンプトに基づいてテキストを生成することができます。
• 質問応答: ユーザーからの質問に対して情報を提供することができます。 • 文章の要約: 長い文章やドキュメントを短く要約することができます。 • 翻訳: 一定の精度で言語を翻訳することが可能です。 • 文章校正: 文法や綴りのミスを指摘・修正する能力があります。 • コードの生成・助言: 簡単なプログラミングの質問に答えたり、コードのスニペットを生成。 • 知識の検索: トレーニングデータに基づく情報や事実を提供することができます。 • クリエイティブライティング: 物語、詩、台本などのクリエイティブなテキストを生成 • 学習・教育のサポート: 学習者の質問に答える、学習コンテンツを補完する情報を提供 • ゲームや趣味のアドバイス: ボードゲームの戦略や趣味に関する質問に答える • 一般的な会話: ユーザーと一般的な会話を楽しむことができます。 Chat GPT4によると (文言の末尾を一部修正 )
CC BY 4.0 文書をベクター検索 ─ 全体像
CC BY 4.0 文書をベクター検索 ─ インデックス化
CC BY 4.0 文書をベクター検索 ─ インデックス化 • 元データ • ベクトル化
• ベクトルDB
CC BY 4.0 文書をベクター検索 ─ 質問・回答
CC BY 4.0 文書をベクター検索 ─ 質問・回答 • ベクトル化 • 文章生成
• Web UI
CC BY 4.0 ベクター検索の資料 詳細 を知りたい方は オープンセミナー香川2023 Pythonの現状から データ分析やLLM活用への発展 https://speakerdeck.com/terapyon/opunseminaxiang-chuan-pythonnoxian-zhuang-detafen-xi-llm
CC BY 4.0 ベクター検索 With Plone
CC BY 4.0 ベクター検索 with Plone 概要
CC BY 4.0 ベクター検索 with Plone 機能説明 • Ploneにコンテンツを登録 •
自動的に文章のベクトルデータを生成しDBに登録 • 検索文章をベクトルデータ化し、登録済みデータと比較 • ベクトルの近似計算をし、似たベクトルを抽出 • 似たベクトルを持つコンテンツを一覧表示
CC BY 4.0 ベクター検索 with Plone データ登録
CC BY 4.0 ベクター検索 with Plone データ登録 • コンテンツ登録 ->
ベクトル化 • ベクトルデータをDB登録
CC BY 4.0 ベクター検索 with Plone 検索
CC BY 4.0 ベクター検索 with Plone 検索 (1) • 検索文章を入力
• portal_catalgで問い合わせ
CC BY 4.0 ベクター検索 with Plone 検索 (2) • 検索文章ベクトル化
• DB内ベクトルと近似計算
CC BY 4.0 Ploneの検索との違い
CC BY 4.0 ベクター検索 with Plone 技術背景 • ZOPE ◦
コンテンツの監視 ◦ キューが自動で出る → Indexの自動化 • Plone ◦ カタログ機能 (portal_catalog) ◦ 他の条件が組み合わせで検索 ◦ 既存の内部APIに融合 ◦ 閲覧権限で結果が変わる
CC BY 4.0 ベクター検索 with Plone セットアップ • パッケージをbuildoutでインストール •
Ploneのアドオンセットアップ方法に準拠 ◦ アドオン追加ボタンで自動セットアップ
CC BY 4.0 ベクター検索 with Plone の開発 • Ploneのアドオンを管理する collective
レポジトリで開発 ◦ https://github.com/collective/collective.vectorsearch • 完成していない • 今後の構想 ◦ ストアの変更 ◦ モデルの変更 ◦ インデックスを活用した自動タグ付けの実装
CC BY 4.0 今後の構想 実装(1)
CC BY 4.0 今後の構想 実装(2)
CC BY 4.0 ベクター検索 with Plone の現状 使える?: もう少し時間が必要 協力者:
実装・テスト・アイデア 開発加速: 案件にする? 開発費をもらう?
CC BY 4.0 課題・今後の展開
CC BY 4.0 現在の課題 • そもそも検索精度はどうなのか? • 狙いのものが見つかっているのか? • 検証が必要
CC BY 4.0 課題・今後の展開 スケーラビリティ • メモリの消費を抑えたい >> Plone外にモデルを出すか? •
GPUありマシンでPloneを動作 >> Plone外にするか? • データベースが肥大化する可能性がある >> 専用ベクトルDB? • ベクトル近似計算の効率化 >> 専用アルゴリズム or DB?
CC BY 4.0 今後の展開 新機能 • 検索結果から文章を生成 (RAG) • ベクトルデータを使ったクラスタリング
• 自動的に関連コンテンツをリスト化 • ほか
CC BY 4.0 ご清聴 ありがとうございました。
CC BY 4.0 PyCon JP 2024 9月後半に東京で開催予定 • 私自身も共同座長として、イベント運営する •
主催メンバー(旧コアスタッフ)を募集中 • これから募集 ◦ スピーカー ◦ スポンサー ◦ 参加者
CC BY 4.0 Q&A