Upgrade to Pro — share decks privately, control downloads, hide ads and more …

LLMを用いたPloneベクター検索 アドオンの開発状況の紹介

Manabu TERADA
September 29, 2023

LLMを用いたPloneベクター検索 アドオンの開発状況の紹介

「オープンソースカンファレンス2023 Online/Fall 」 2023年9月29日

─イントラネット最適化─
LLMを用いたPloneベクター検索 アドオンの開発状況の紹介

Plone Users Group Japan 寺田 学

Manabu TERADA

September 29, 2023
Tweet

More Decks by Manabu TERADA

Other Decks in Technology

Transcript

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  7. CC BY 4.0
    モチベーション

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  10. CC BY 4.0
    Ploneとは

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  18. CC BY 4.0
    Ploneの検索

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  21. CC BY 4.0
    Ploneの検索の構成図

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  33. CC BY 4.0
    ベクター検索
    With Plone

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  41. CC BY 4.0
    Ploneの検索との違い

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  46. CC BY 4.0
    デモ

    View full-size slide

  47. CC BY 4.0
    課題・今後の展開

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  56. CC BY 4.0
    Q&A

    View full-size slide