Slide 1

Slide 1 text

CC BY 4.0 LLMを用いたPloneベクター検索 アドオンの開発状況の紹介 ─イントラネット最適化─ Plone Users Group Japan 寺田 学 「オープンソースカンファレンス2023 Online/Fall 」 2023年9月29日

Slide 2

Slide 2 text

CC BY 4.0 セッション中の諸注意 ● スライドは公開済み ● 写真撮影可能、録音・録画可能 ● 質問 ○ Zoomコメントで ● SNSでのつぶやき 歓迎

Slide 3

Slide 3 text

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月)

Slide 4

Slide 4 text

CC BY 4.0 本日のトークと関連組織 Plone Users Group Japan として、トークします。 ● 一般社団法人PyCon JP Association理事 ● 株式会社 CMSコミュニケーションズ 代表取締役 ● 一般社団法人Pythonエンジニア育成推進協会顧問理事 ● Plone Foundation Ambassador ● PSF Fellow member

Slide 5

Slide 5 text

CC BY 4.0 Plone Foundation Plone Foundationは、グローバルに導入されているCMSフレームワーク「Plone」の普及・ 開発を支援することを目的に2004年に設立された非営利組織です。主な活動内容は、 Ploneソフトウェアの知財管理と、カンファレンスや開発スプリントの開催を通じたコミュニ ティへの支援です。 ● Plone ・・CMSツール ● Guillotina ・・次世代ヘッドレス非同期サーバフレームワーク ● Pyramid ・・汎用Webフレームワーク ● Zope ・・Webアプリケーション基盤 ● Volto ・・SPAツールキット

Slide 6

Slide 6 text

CC BY 4.0 本日のトーク内容 老舗CMS Ploneの検索を強化するために、 LLMを使ったベクター検索のアドオンプロダクトの開発 がスタート。 Ploneの概要、LLMを使ったベクター検索の基礎から、 Ploneに実装したベクター検索について紹介します。

Slide 7

Slide 7 text

CC BY 4.0 モチベーション

Slide 8

Slide 8 text

CC BY 4.0 モチベーション ● 高機能な検索を提供したい ● 単語検索ではなく、自然文でコンテンツを探したい ● 外部のAPIを使わずに、内部で処理したい ● イントラで、使えるものを目指す ● Ploneにはセキュリティ機能があるので融合したい ● Ploneにはコンテンツ管理の仕組みがあるので融合したい

Slide 9

Slide 9 text

CC BY 4.0 目指す姿 Plone ● コンテンツ管理 ● 公開状態管理 ● ベクター検索機能 LLM ● 大規模言語モデル ● 多言語Embedding ● ベクター永続化 ● 近似ベクトル探索 ✖

Slide 10

Slide 10 text

CC BY 4.0 Ploneとは

Slide 11

Slide 11 text

CC BY 4.0 Plone(プローン)は、約20年の歴史 オープンソースCMS エンタープライズ対応の高度な機能を備えており、多くの人と組織が 関わるウェブサイトの管理に力を発揮します。 規模に関わらず、社内情報の共有・蓄積も得意分野です。 Ploneとは

Slide 12

Slide 12 text

CC BY 4.0 Ploneのスナップショット

Slide 13

Slide 13 text

CC BY 4.0 Ploneが提供する主な機能 ● エンタープライズ環境との統合 ● 柔軟なワークフロー・強固なセキュリティ ● すぐれた拡張性 ● 高いスケーラビリティ ● 多言語対応 ● アクセシビリティ対応 ● 認証とシングルサインオン

Slide 14

Slide 14 text

CC BY 4.0 Ploneが提供する主な機能詳細 詳細 を知りたい方は OSC2019 東京秋 老舗CMS PloneとReactの融合 https://speakerdeck.com/terapyon/lao-pu-cms-plonetoreactfalserong-he?slide=17

Slide 15

Slide 15 text

CC BY 4.0 Ploneの最新バージョン Plone 6.0.7 2023年9月リリース https://plone.org/download/releases/6.0.7

Slide 16

Slide 16 text

CC BY 4.0 Plone 6.0 の過去資料 詳細 を知りたい方は OSC2021 東京春 Plone is SPA https://speakerdeck.com/terapyon/plone-is-spa

Slide 17

Slide 17 text

CC BY 4.0 Plone 6 を一言で Plone 6は SPA CMS Volto (Reactベース) と Ploneを完全融合

Slide 18

Slide 18 text

CC BY 4.0 Ploneの検索

Slide 19

Slide 19 text

CC BY 4.0 Ploneの検索 ● Ploneは、インデックスを用いた検索あり ● コンテンツ投入時にインデックスが作られる ● タグフィルタリング、日時範囲フィルタリングあり

Slide 20

Slide 20 text

CC BY 4.0 Ploneの検索の技術的側面 ● バックエンドで、ZOPEのZCatalogが使われる ● 転置インデックスが作られる ● 日本語は、n-gram(2-gram)で文字分割(splitter) ● splitterはWeb UIやコードで置き換え可能 ● 検索結果の順位のランキングを内部の実装で入替可能

Slide 21

Slide 21 text

CC BY 4.0 Ploneの検索の構成図

Slide 22

Slide 22 text

CC BY 4.0 Ploneの検索の良いところ ● Ploneの検索は、ユーザレベルで公開範囲が結果に反映 ● パス(path)で検索範囲を限定できる ● PDFのドキュメント内を検索対象にできる ● MS-Office系のファイルの検索をアドオンで対応できる

Slide 23

Slide 23 text

CC BY 4.0 ベクター検索の概要

Slide 24

Slide 24 text

CC BY 4.0 ベクター検索の概要 今回のアプローチ ● LLM(後述)を使ってベクトル化 ● 文章を分割していくつかのベクトルにする ● 検索文とデータ内のベクトル群の近似計算 ● 似たベクトルの文章をピックアップ

Slide 25

Slide 25 text

CC BY 4.0 LLM (Large Language Model)とは 大規模言語モデル ● ChatGPTに代表される ● 無料で使えるもの日本語に特化したものもある ● 開発にはPythonが使われていることが多い ● Pythonインターフェースが提供される

Slide 26

Slide 26 text

CC BY 4.0 LLM (Large Language Model)でできること ● テキスト生成: LLMは与えられたプロンプトに基づいてテキストを生成することができます。 ● 質問応答: ユーザーからの質問に対して情報を提供することができます。 ● 文章の要約: 長い文章やドキュメントを短く要約することができます。 ● 翻訳: 一定の精度で言語を翻訳することが可能です。 ● 文章校正: 文法や綴りのミスを指摘・修正する能力があります。 ● コードの生成・助言: 簡単なプログラミングの質問に答えたり、コードのスニペットを生成。 ● 知識の検索: トレーニングデータに基づく情報や事実を提供することができます。 ● クリエイティブライティング: 物語、詩、台本などのクリエイティブなテキストを生成 ● 学習・教育のサポート: 学習者の質問に答える、学習コンテンツを補完する情報を提供 ● ゲームや趣味のアドバイス: ボードゲームの戦略や趣味に関する質問に答える ● 一般的な会話: ユーザーと一般的な会話を楽しむことができます。 Chat GPT4によると (文言の末尾を一部修正 )

Slide 27

Slide 27 text

CC BY 4.0 文書をベクター検索 ─ 全体像

Slide 28

Slide 28 text

CC BY 4.0 文書をベクター検索 ─ インデックス化

Slide 29

Slide 29 text

CC BY 4.0 文書をベクター検索 ─ インデックス化 ● 元データ ● ベクトル化 ● ベクトルDB

Slide 30

Slide 30 text

CC BY 4.0 文書をベクター検索 ─ 質問・回答

Slide 31

Slide 31 text

CC BY 4.0 文書をベクター検索 ─ 質問・回答 ● ベクトル化 ● 文章生成 ● Web UI

Slide 32

Slide 32 text

CC BY 4.0 ベクター検索の資料 詳細 を知りたい方は オープンセミナー香川2023 Pythonの現状から データ分析やLLM活用への発展 https://speakerdeck.com/terapyon/opunseminaxiang-chuan-pythonnoxian-zhuang-detafen-xi-llm

Slide 33

Slide 33 text

CC BY 4.0 ベクター検索 With Plone

Slide 34

Slide 34 text

CC BY 4.0 ベクター検索 with Plone 概要

Slide 35

Slide 35 text

CC BY 4.0 ベクター検索 with Plone 機能説明 ● Ploneにコンテンツを登録 ● 自動的に文章のベクトルデータを生成しDBに登録 ● 検索文章をベクトルデータ化し、登録済みデータと比較 ● ベクトルの近似計算をし、似たベクトルを抽出 ● 似たベクトルを持つコンテンツを一覧表示

Slide 36

Slide 36 text

CC BY 4.0 ベクター検索 with Plone データ登録

Slide 37

Slide 37 text

CC BY 4.0 ベクター検索 with Plone データ登録 ● コンテンツ登録 -> ベクトル化 ● ベクトルデータをDB登録

Slide 38

Slide 38 text

CC BY 4.0 ベクター検索 with Plone 検索

Slide 39

Slide 39 text

CC BY 4.0 ベクター検索 with Plone 検索 (1) ● 検索文章を入力 ● portal_catalgで問い合わせ

Slide 40

Slide 40 text

CC BY 4.0 ベクター検索 with Plone 検索 (2) ● 検索文章ベクトル化 ● DB内ベクトルと近似計算

Slide 41

Slide 41 text

CC BY 4.0 Ploneの検索との違い

Slide 42

Slide 42 text

CC BY 4.0 ベクター検索 with Plone 技術背景 ● ZOPE ○ コンテンツの監視 ○ キューが自動で出る → Indexの自動化 ● Plone ○ カタログ機能 (portal_catalog) ○ 他の条件が組み合わせで検索 ○ 既存の内部APIに融合 ○ 閲覧権限で結果が変わる

Slide 43

Slide 43 text

CC BY 4.0 ベクター検索 with Plone セットアップ ● パッケージをbuildoutでインストール ● Ploneのアドオンセットアップ方法に準拠 ○ アドン追加ボタンで自動セットアップ

Slide 44

Slide 44 text

CC BY 4.0 ベクター検索 with Plone の開発 ● GitHubで公開。ただし、今後パッケージングの方法を変更 ○ https://github.com/cmscom/c2.search.llm ● あくまでも、サンプル実装中 (PoC) ● テスト方法を模索中

Slide 45

Slide 45 text

CC BY 4.0 ベクター検索 with Plone の現状 使える?: もう少し時間が必要 協力者: 実装・テスト・アイデア 開発加速: 案件にする? 開発費をもらう?

Slide 46

Slide 46 text

CC BY 4.0 デモ

Slide 47

Slide 47 text

CC BY 4.0 課題・今後の展開

Slide 48

Slide 48 text

CC BY 4.0 現在の課題 ● そもそも検索精度はどうなのか? ● 狙いのものが見つかっているのか? ● 検証が必要

Slide 49

Slide 49 text

CC BY 4.0 課題・今後の展開 スケーラビリティ ● メモリの消費を抑えたい >> Plone外にモデルを出すか? ● GPUありマシンでPloneを動作 >> Plone外にするか? ● データベースが肥大化する可能性がある >> 専用ベクトルDB? ● ベクトル近似計算の効率化 >> 専用アルゴリズム or DB?

Slide 50

Slide 50 text

CC BY 4.0 課題・今後の展開 実装 ● パッケージの整理 >> 現状一つのパッケージを分割? ● LLMをパッケージ内で決めている >> 入れ替え可能に ● ライセンス・パッケージオーナーを見直す >> Plone系へ

Slide 51

Slide 51 text

CC BY 4.0 今後の展開 実装(1)

Slide 52

Slide 52 text

CC BY 4.0 今後の展開 実装(2)

Slide 53

Slide 53 text

CC BY 4.0 今後の展開 新機能 ● 検索結果から文章を生成 (RAG) ● ベクトルデータを使ったクラスタリング ● 自動的に関連コンテンツをリスト化 ● ほか

Slide 54

Slide 54 text

CC BY 4.0 ご清聴 ありがとうございました。

Slide 55

Slide 55 text

CC BY 4.0 PyCon APAC 2023 チケット発売中 ● https://2023-apac.pycon.jp/ ● 日程: 10/27(金)〜29(日) の3日間 ● チケット: 12,000円(ランチ付き) ○ https://pretix.eu/pyconjp/2023-apac/

Slide 56

Slide 56 text

CC BY 4.0 Q&A