このページでは、WordPress用プラグイン・WP Retriverを紹介しています。

何をするプラグイン?

WP Retriever(以下「本プラグイン」)は、投稿記事の検索機能を強化する WordPress プラグインです。

技術的背景

例えば、当ブログでは養蜂についての記事が一定数ありますが、「ハチミツ」という言葉を漢字で表記したことがありません。このため、漢字表記で検索すると結果はゼロ件になります。同様の表記揺らぎは多岐にわたるため、RAG (Retrieval-Argumented Generation、「検索拡張生成」) を利用して、意味論的に検索結果を拡張することが広く行われています。

WordPressの標準検索機能はデータベースの全文検索をしているだけなので、完全に一致する単語しか拾えません。WordPressでRAG検索を実現するプラグインは他にもありますが、当プラグインはデータベースやWordPress以外のサービスを追加せずにRAG検索を実現できる、お手軽な実装を目指しました。

動作環境

  • WordPress: 6.0 以降
  • PHP: 8.0 以降
  • MariaDB: 11.7 以降

※MySQLでは動作しません。

事前準備

OpenAI等が提供するLLM、あるいはローカルで動作するLLMで、埋め込み(Embedding)をサポートするものが必要です。もし分からなければ、下記手順でOpenAIのAPIトークンを取得してください。

1. OpenAIのアカウントを開設します。

2. OpenAIのトップページから、[ログイン]→[APIプラットフォーム]を選びます。

3. 左のメニューから[API Keys]を選びます。

4. [+ Create new secret key]を選びます。

5. [Name]に入力し(オプション)、[Create secret key]ボタンをクリックします。

6. 生成されたキーをコピーし、安全な場所に保存します。このキーを、当プラグインの設定画面で後ほど入力します。

利用にあたっての注意事項

本プラグインの利用にあたっては、以下の事項に同意したものとみなします。

1. 自己責任での利用

本プラグインは、利用者自身の責任において使用してください。

本プラグインの導入、設定、利用、または利用不能によって発生したいかなる損害についても、作者および配布者は一切の責任を負いません。

2. 外部サービスの仕様変更について

本プラグインは、外部のAPIに依存します。

これらの外部APIの仕様変更、提供終了、制限、障害、認証情報の失効等により、本プラグインの一部または全部が正常に動作しなくなる場合があります。

作者は、外部サービスの変更に起因する不具合、損失等について責任を負いません。

3. データのバックアップ

本プラグインの導入、更新、削除、設定変更を行う前に、WordPress 本体、テーマ、他プラグイン、データベース等のバックアップを取得することを推奨します。

本プラグインの利用に関連して発生したデータ消失、表示崩れ、設定不備、他プラグインとの競合等について、作者は責任を負いません。

4. サポート・更新について

本プラグインは、予告なく仕様変更、機能追加、修正、配布停止される場合があります。

作者は、本プラグインの継続的な更新、サポート、不具合修正、特定環境での動作を保証しません。

インストール方法

以下のリンクからZIPファイルをダウンロードし、WordPressの[ダッシュボード]→[プラグイン]からインストールしてください。

最新バージョン

(sha256: 8040955e6891bf62ccbb5ff7c768e6f1f316c457e1d664ec170575c057896e7e)

旧バージョン

インストールが成功すると、WP Retrieverは以下の設定を自動で行います。

  • 設定オプションの作成・更新
  • ベクトル保存用テーブルの作成
  • 初期化キュー用テーブルの作成

設定方法

WordPressの[ダッシュボード]→[設定]→[WP Retriever]で設定します。

設定画面で上から順に設定します。

1. データベースのチェック

チェックに成功すると、画面の最上部にメッセージが表示されます。

2. RAG検索設定

RAG検索モード: まずは[管理者のみ]で試すことをオススメします。WordPressにログインしている管理者が検索するとRAG検索が有効になりますが、一般ユーザーはWordPressの標準検索機能のみが有効な状態になります。RAG検索機能が有効であることが確認できたら、モードを[フル]に切り替えてください。

検索元バッジを表示: オンにすると検索結果の投稿のタイトルに[RAG]、[標準検索]というタグを表示します。

埋め込みプロバイダー: 用意した埋め込み(Embedding)APIを選択します。ここではOpenAIを使う前提で説明します。

埋め込みAPIキー: 事前準備で作成したAPIキーを入力します。

埋め込みモデル: OpenAIの場合、text-embedding-3-small (1536)とtext-embedding-3-large (3072)が選択できます。smallとlargeの金額差はあまり無いので、largeをオススメします。

入力が完了したら、[保存]ボタンをクリックしてください。

3. 埋め込みプロバイダーのチェック

[埋め込みプロバイダーをチェック]ボタンをクリックすると、2. RAG検索設定で入力した設定値でAPIを呼び出すチェックを実行します。

4. 日本語クエリー正規化設定

半角カタカナや全角英数字を多用している場合に、正規化を行うことで検索精度を向上します。通常はオフのままでも問題ありません。

5. 初期化

[初期化]ボタンをクリックすると、ブログの投稿記事の埋め込みの生成を開始します。WordPress、及びMariaDBの実行環境によって処理時間は変わります。初期化が完了したら、WP Retrieverの設定画面をリロードしてください。

以降、新規にブログ記事を登録すると自動的に埋め込みが生成され、検索結果に反映されるようになります。

6. インデックス診断

埋め込みに失敗した場合は、[再実行]ボタンが表示されます。問題が無ければ、下記画面のように表示されます。

7. ライブベクトルクエリーテスト

インデックスが正しく生成されているかをテストします。RAG検索設定の検索モードに関わらず、RAGでの検索精度を確認できます。

8. RAG取得範囲の調整

ライブベクトルクエリーテスト、あるいは[検索]機能で「結果が少なすぎる」または「結果が多すぎる」場合に、最大候補数と最小スコアを調整します。当ブログの場合は、最大候補数20、最小スコア0.6近辺が適切でした。

動作確認

ブログの検索フィールドに単語あるいは文章を入力して検索します。

「ミツバチ」の漢字表記は当ブログ内で全く使われていませんが、[RAG]検索によって検索結果が得られています。

一方で、"RHEL"で検索すると、結果は異なります。

検索結果の1位・2位は、RAGと標準検索の双方でヒットしましたが、3位は標準検索のみでヒットしています。

開発支援のお願い

WP Retrieverを使ってみて、「良かった!」「便利だった!」と思ってくださった方から開発の支援をしていただけると、作者は大変喜びます。

支援方法

Amazonギフトカードrio@rio.st宛に送ってくださると、大変ありがたいです。150円からお送りいただけるので、是非!