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
74
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
コンテンツタイプとUMLで考えるPlone開発(1)
terapyon
0
31
Python Web UIフレームワークのススメ
terapyon
0
870
PyCon APACの軌跡
terapyon
0
1.7k
Pythonエンジニアになるためのテクニカルハイライトと学習方法
terapyon
0
95
Multi lingual Vector search using LLM
terapyon
1
81
メモリプロファイラMemrayのススメ
terapyon
3
1.1k
PoC for LLM search on Plone
terapyon
1
96
LLMを用いたPloneベクター検索 アドオンの開発状況の紹介
terapyon
0
120
オープンセミナー香川 Pythonの現状・データ分析・LLM
terapyon
0
590
Other Decks in Technology
See All in Technology
開発生産性を上げながらビジネスも30倍成長させてきたチームの姿
kamina_zzz
2
1.7k
Terraform Stacks入門 #HashiTalks
msato
0
350
エンジニア人生の拡張性を高める 「探索型キャリア設計」の提案
tenshoku_draft
1
120
ドメイン名の終活について - JPAAWG 7th -
mikit
33
20k
ノーコードデータ分析ツールで体験する時系列データ分析超入門
negi111111
0
410
TypeScriptの次なる大進化なるか!? 条件型を返り値とする関数の型推論
uhyo
2
1.6k
スクラムチームを立ち上げる〜チーム開発で得られたもの・得られなかったもの〜
ohnoeight
2
350
AWS Lambdaと歩んだ“サーバーレス”と今後 #lambda_10years
yoshidashingo
1
170
AWS Lambda のトラブルシュートをしていて思うこと
kazzpapa3
2
170
RubyのWebアプリケーションを50倍速くする方法 / How to Make a Ruby Web Application 50 Times Faster
hogelog
3
940
いざ、BSC討伐の旅
nikinusu
2
780
サイバーセキュリティと認知バイアス:対策の隙を埋める心理学的アプローチ
shumei_ito
0
380
Featured
See All Featured
Imperfection Machines: The Place of Print at Facebook
scottboms
265
13k
Art, The Web, and Tiny UX
lynnandtonic
297
20k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
10
720
The MySQL Ecosystem @ GitHub 2015
samlambert
250
12k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.1k
GitHub's CSS Performance
jonrohan
1030
460k
Designing on Purpose - Digital PM Summit 2013
jponch
115
7k
Code Review Best Practice
trishagee
64
17k
Six Lessons from altMBA
skipperchong
27
3.5k
Keith and Marios Guide to Fast Websites
keithpitt
409
22k
Building a Modern Day E-commerce SEO Strategy
aleyda
38
6.9k
The World Runs on Bad Software
bkeepers
PRO
65
11k
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