ChatGPTを運営するOpenAIがリリースしたRetrieval Pluginというプロジェクトがあります。
そもそもプラグインはChatGPTの機能を拡張するためのもので、自分のための自作プラグインをChatGPTにインストールすることができます。一方で作成したプラグインを公開して、AppStoreでアプリを公開するのと同様に、誰でも使えるようにすることも出来ます。
今回扱うChatGPT Retrieval Pluginは、そのプラグインの中でもRetrieval(=取得・抽出の意味)、つまりデータベースから検索して取得する点にフォーカスしたプラグインです。データベースはベクトルデータベースのみを想定されています。
たとえば、自社のドキュメントをベクトルデータベースにインデックスすればChatGPT上で検索・アクセス・取得をおこない、それを元にChatGPTとチャットができます。ヘルプサイト、PDF、メールのやり取りなどのデータをインデックスすることが想定されます。
ChatGPTはユーザーのリクエストに基づいて、必要だと判断すればRetrieval Pluginを起動してAPIを叩いてくれます。
つまり、Retrieval Pluginとは「ChatGPTに長期的な記憶を持たせられる」プラグインとも言えるでしょう。ChatGPTはユーザーのリクエストに基づいて「記憶」の中から関連する情報を取得し、それを元に会話してくれるのですから。
この記事では、そのRetrieval Pluginについての概要から実際の作成方法(コーディング必須)まで解説します。
※ この記事は公式GitHubを元に構成されており、そのまま翻訳している部分があります。
概要
ChatGPT Retrieval Pluginは、自然言語のクエリを使って個人や組織のドキュメントをセマンティックに検索し取得するための柔軟なソリューションを提供します。
検索・取得だけでなく、新たに格納・インデックスすることもChatGPT上で出来るようになります。(オプションなので、不要ならばインデックス用のエンドポイントを作らなければいい。)
プラグインとは
プラグインは、ChatGPTのような言語モデル専用に設計されたチャットの拡張機能で、ユーザーのリクエストに対して最新の情報を取得したり、計算を実行したり、第三者のサービスと対話したりすることができます。これにより、言語モデルの利用範囲と能力が大幅に向上します。
開発者は、開発したAPIを公開し、APIを説明するマニフェストファイルを公開することでプラグインを作成できます。
ChatGPTはこれらのファイルを利用し、AIモデルが開発者が定義したAPIに対してコールを行います。
プラグインの構成
プラグインは以下のもので構成されます。
- API
- APIスキーマ(OpenAPIのJSONまたはYAML形式)
- プラグインに関連するメタデータを定義するマニフェスト(JSONファイル)
Retrieval Pluginはすでにこれらのコンポーネントをすべて含んでいます。
Retrieval Pluginとは
これは、個人や組織のドキュメントのセマンティック検索と取得を可能にするChatGPTのプラグインです。
ユーザーは自然言語で質問したり、ニーズを表現したりすることで、ファイル、ノート、メールなどのデータソースから最も関連性の高いドキュメントのスニペットを取得することができます。企業はこのプラグインを使って、社内ドキュメントをChatGPTを通じて従業員に提供することができます。
プラグインはOpenAIのtext-embedding-ada-002
エンベディングモデルを用いてドキュメントのチャンクのエンベディングを生成し、バックエンドのベクトルデータベースを用いてこれらを格納しクエリします。
オープンソースで自己ホスト型のソリューションとして、開発者は自分自身のRetrieval Pluginをデプロイし、ChatGPTに登録することができます。Retrieval Pluginはいくつかのベクトルデータベースプロバイダをサポートしており、開発者はリストから好きなものを選ぶことができます。
FastAPIサーバーは、ドキュメントのアップサート、クエリ、削除のためのプラグインのエンドポイントを公開します。
ユーザーはソース、日付、著者などのメタデータフィルターを使って検索結果を絞り込むことができます。
プラグインはFly.io、Heroku、Render、Azure Container AppsなどのDockerコンテナをサポートする任意のクラウドプラットフォームでホストすることができます。
プラグインは、アップサートと削除のエンドポイントに対するWebhookを利用して、様々なデータソースからドキュメントを継続的に処理し保存することで、ベクトルデータベースを最新のドキュメントで更新します。イベントやスケジュールに基づいてWebhookを設定するのに、ZapierやMakeのようなツールが役立ちます。
メモリ機能
Retrieval Pluginの注目すべき機能の一つは、ChatGPTにメモリを提供する能力です。
プラグインのアップサートエンドポイントを利用することで、ChatGPTは会話からスニペットをベクトルデータベースに保存し、後で参照することができます(ただし、ユーザーによってそうするように指示された場合に限ります)。
この機能により、ChatGPTは以前の会話から情報を覚えて取得することが可能となり、よりコンテキストに応じたチャット体験が実現します。
GitHubのリポジトリの説明
それぞれのディレクトリについての説明です。
- datastore: さまざまなベクターデータベースプロバイダを使用してドキュメントのエンベディングを格納しクエリするためのコアロジックを含みます。
- docs: 各ベクターデータベースプロバイダの設定と使用方法、Webhook、不要な依存関係の削除に関するドキュメンテーションが含まれています。
- examples: 例示的な設定、認証方法、プロバイダー固有の例を提供します。
- local_server: localhostのテスト用に設定されたretrieval pluginの実装を含みます。
- models: ドキュメントやメタデータモデルなど、プラグインが使用するデータモデルを含みます。
- scripts: さまざまなデータソースからのドキュメントの処理とアップロード用のスクリプトを提供します。
- server: メインのFastAPIサーバーの実装を収めています。
- services: チャンキング、メタデータ抽出、個人情報識別(PII)の検出などのタスクのためのユーティリティサービスを含みます。
- tests: 各ベクターデータベースプロバイダの統合テストが含まれています。
- .well-known: プラグインの設定ファイルやOpenAPIスキーマ(プラグインの設定とAPI仕様を定義)を保管します。
クイックスタート
以下の手順に従って、ChatGPT Retrieval Pluginをすばやく設定して実行します:
- Python 3.10をインストールします(まだインストールしていない場合)。
- リポジトリをクローンします:
git clone https://github.com/openai/chatgpt-retrieval-plugin.git
- クローンしたリポジトリのディレクトリに移動します:
cd /path/to/chatgpt-retrieval-plugin
- poetryをインストールします:
pip install poetry
- Python 3.10を使用した新しい仮想環境を作成します:
poetry env use python3.10
- 仮想環境をアクティベートします:
poetry shell
- アプリの依存関係をインストールします:
poetry install
- ベアラートークンを作成します
- 必要な環境変数を設定します
- APIをローカルで実行します:
poetry run start
http://0.0.0.0:8000/docs
でAPIドキュメンテーションにアクセスし、APIエンドポイントをテストします(ベアラートークンを追加しておくことを忘れないでください)。
ChatGPTでのテスト
ローカルにホストされたプラグインをChatGPTでテストするには、次の手順を守ってください。
- localhostでAPIを実行します:poetry run dev
- READMEの「Testing a Localhost Plugin in ChatGPT」セクションに記載されている指示に従います。 ChatGPT Retrieval Pluginの設定、開発、デプロイに関するより詳細な情報は、以下の開発セクション全体を参照してください。
セキュリティ
Retrieval Pluginは、ChatGPTがベクトルデータベースの内容を検索し、最適な結果をChatGPTセッションに追加することを可能にします。これは外部効果を持たないため、主なリスク考慮事項はデータの認証とプライバシーです。
開発者は、自身が認証を得ており、ユーザーのChatGPTセッションに表示されても問題ないと考えるコンテンツのみをRetrieval Pluginに追加するべきです。
プラグインを保護するためのさまざまな認証方法から選ぶことができます。認証方法については以下でも解説しています。
APIエンドポイント
Retrieval PluginはFastAPIを使用して構築されています。
FastAPIはPythonでAPIを構築するためのWebフレームワークです。FastAPIを使用すると、APIエンドポイントの開発、バリデーション、ドキュメンテーションが容易になります。FastAPIのドキュメンテーションはこちらで見つけることができます。
FastAPIを使用する利点の一つは、Swagger UIによる対話的なAPIドキュメンテーションの自動生成です。APIがローカルで実行されているとき、Swagger UIは<ローカルホストURL i.e. http://0.0.0.0:8000>/docs
でAPIエンドポイントと対話し、その機能をテストし、要求されるリクエストとレスポンスモデルを表示するために使用することができます。
プラグインは、ベクトルデータベースからドキュメントをアップサート、クエリ、削除するための以下のエンドポイントを公開します。すべてのリクエストとレスポンスはJSON形式で、認証ヘッダーとして有効なベアラートークンが必要です。
/upsert
/upsert
: このエンドポイントでは、1つ以上のドキュメントをアップロードし、そのテキストとメタデータをベクトルデータベースに保存することができます。ドキュメントは約200トークンのチャンクに分割され、それぞれに一意のIDが付与されます。
エンドポイントはリクエストボディにドキュメントのリストを期待しており、それぞれにtext
フィールドとオプションのid
とmetadata
フィールドが含まれています。
metadata
フィールドには、以下のオプションのサブフィールドが含むことができます:source
、source_id
、url
、created_at
、author
。
エンドポイントは、挿入されたドキュメントのIDのリストを返します(初期に提供されていない場合はIDが生成されます)。
/upsert-file
このエンドポイントでは、単一のファイル(PDF、TXT、DOCX、PPTX、またはMD)をアップロードし、そのテキストとメタデータをベクトルデータベースに保存することができます。
ファイルはプレーンテキストに変換され、約200トークンのチャンクに分割され、それぞれに一意のIDが付与されます。エンドポイントは、挿入されたファイルの生成されたidを含むリストを返します。
/query
このエンドポイントでは、一つ以上の自然言語クエリとオプションのメタデータフィルタを使用してベクトルデータベースをクエリすることができます。
エンドポイントはリクエストボディにクエリのリストを期待しており、それぞれにquery
とオプションのfilter
とtop_k
フィールドが含まれています。
filter
フィールドは以下のサブフィールドのサブセットを含むことができます。:source
、source_id
、document_id
、url
、created_at
、author
。
top_k
フィールドは、指定のクエリに対して返す結果の数を指定し、デフォルト値は3です。
エンドポイントは、各クエリに対して最も関連性の高いドキュメントのチャンクのリストとそのテキスト、メタデータ、類似性スコアを含むオブジェクトのリストを返します。
/delete
このエンドポイントでは、ID、メタデータフィルタ、またはdelete_allフラグを使用してベクトルデータベースから一つ以上のドキュメントを削除することができます。
エンドポイントはリクエストボディに以下のパラメータの少なくとも一つを期待しています:ids
、filter
、delete_all
。ids
パラメータは削除するドキュメントIDのリストであるべきであり、これらのIDを持つドキュメントのすべてのドキュメントチャンクが削除されます。
filter
パラメータは以下のサブフィールドのサブセットを含むことができます。:source
、source_id
、document_id
、url
、created_at
、author
。
delete_all
パラメータは、ベクトルデータベースからすべてのドキュメントを削除するかどうかを示すブール値であるべきです。エンドポイントは削除が成功したかどうかを示すブール値を返します。
以上が用意されたエンドポイントです。
リクエストとレスポンスモデルの詳細な仕様と例は、アプリをローカルで実行してhttp://0.0.0.0:8000/openapi.jsonに移動することで見られます。
また、OpenAPIスキーマはこちらで見られます。OpenAPIスキーマには/query
エンドポイントのみが含まれていることに注意してください。なぜなら、それがChatGPTがアクセスする必要がある唯一の機能だからです。
このようにして、ChatGPTは自然言語のクエリやニーズに基づいて関連ドキュメントを取得するためにプラグインを使用することができます。
しかし、開発者がChatGPTに対話からのスニペットをベクトルデータベースに保存することで、後で覚えておく能力を与えたい場合、/upsert
エンドポイントを使用できます。
カスタムメタデータフィールドを含めるには、DocumentMetadataとDocumentMetadataFilterのデータモデルこちらを編集し、OpenAPIスキーマこちらを更新します。これはアプリをローカルで実行し、http://0.0.0.0:8000/sub/openapi.jsonで見つけたJSONをコピーし、それをSwagger EditorでYAML形式に変換することで簡単に更新することができます。
openapi.yaml
ファイルをopenapi.json
ファイルに置き換えることもできます。
開発
セットアップ
このアプリケーションはPython 3.10を使用し、依存関係の管理にはpoetryを使用しています。
すでにインストールされていない場合は、Python 3.10をマシンにインストールしてください。公式のPythonのウェブサイトからダウンロードするか、あなたのシステムに応じてパッケージマネージャー(brew
やapt
など)を使用してインストールできます。
GitHubからリポジトリをクローンします。
git clone https://github.com/openai/chatgpt-retrieval-plugin.git
次に、クローンしたリポジトリのディレクトリに移動します。
cd /path/to/chatgpt-retrieval-plugin
次に、poetryをインストールします。
pip install poetry
次に、Python 3.10を使用する新しい仮想環境を作成します:
poetry env use python3.10
poetry shell
次に、poetryを使用してアプリケーションの依存関係をインストールします。
poetry install
注: pyproject.toml
に依存関係を追加する場合は、poetry lock
とpoetry install
を実行することを忘れないでください。
一般的な環境変数
APIは以下の環境変数が必要です:
名前 | 必須 | 説明 |
---|---|---|
DATASTORE | Yes | これは、埋め込みを格納しクエリを行うためのベクトルデータベースプロバイダを指定します。chroma , pinecone , weaviate , zilliz , milvus , qdrant , redis , azuresearch , supabase , postgres の中から選択できます。 |
BEARER_TOKEN | Yes | これは、APIへのリクエストを認証するために必要な秘密のトークンです。好きなツールや方法、例えばjwt.ioを使って生成できます。 |
OPENAI_API_KEY | Yes | これは、text-embedding-ada-002 モデルを使用して埋め込みを生成するために必要なOpenAIのAPIキーです。OpenAIのアカウントを作成することでAPIキーを取得できます。 |
Azure OpenAIを使用する場合
Azure OpenAIでは、リソースに特有のURLを使用し、モデル名ではなくデプロイメントIDによってモデルを参照します。そのため、この場合には追加の環境変数を設定する必要があります。
OPENAI_API_BASE
(特定のURL)とOPENAI_API_TYPE
(azure)に加えて、OPENAI_EMBEDDINGMODEL_DEPLOYMENTID
も設定する必要があります。これは、挿入(upsert)とクエリで埋め込みを取得するために使用するモデルを指定します。このためには、text-embedding-ada-002
モデルをデプロイし、そのデプロイメント名をここで使用することを推奨します。
データ準備スクリプトを使用したい場合は、メタデータの抽出に使用するOPENAI_METADATA_EXTRACTIONMODEL_DEPLOYMENTID
と、個人情報の取り扱いに使用するOPENAI_COMPLETIONMODEL_DEPLOYMENTID
も設定する必要があります。
ベクトルデータベースを選択する
このプラグインは、複数のベクトルデータベースプロバイダーをサポートしており、各プロバイダーは異なる機能、パフォーマンス、価格を持っています。選択するものによって、異なるDockerfileを使用し、異なる環境変数を設定する必要があります。
以下のセクションでは、各ベクトルデータベースプロバイダーについて簡単に紹介します。
各ベクトルデータベースプロバイダーのセットアップと使用に関する詳しい指示については、各自のドキュメンテーションを参照してください。
Pinecone
Pineconeは、速度、スケール、迅速なプロダクションへのデプロイを目指して設計された管理型ベクトルデータベースです。ハイブリッド検索をサポートしており、現在、SPLADEスパースベクトルをネイティブにサポートしているデータストアはPineconeだけです。詳細なセットアップ手順についてはGitHubのこちらを参照してください。
Weaviate
Weaviate は、スケーラビリティに優れたオープンソースのベクトル検索エンジンです。ハイブリッド検索をサポートしており、キーワード検索に優れています。セルフホストも可能ですが、マネージドも提供されています。
※ GitHubのこちらではその他のベクトルデータベースプロバイダーのsetup方法がわかります。
APIをローカルで実行する
APIをローカルで実行するには、まずexport
コマンドを使って必要な環境変数を設定する必要があります。
export DATASTORE=<あなたのデータストア>
export BEARER_TOKEN=<あなたのベアラートークン>
export OPENAI_API_KEY=<あなたのopenai_api_key>
<あなたが選択したベクトルDBに対応する環境変数をここに追加してください>
スタートします。
poetry run start
ターミナルに表示されたURLにdocsを追加し、ブラウザで開いてAPIドキュメンテーションにアクセスし、エンドポイントを試してみてください(例:http://0.0.0.0:8000/docs)。
あなたのベアラートークンを入力し、APIエンドポイントをテストしてください。
注:pyproject.tomlファイルに新しい依存関係を追加した場合は、ロックファイルを更新し、新しい依存関係をインストールするためにpoetry lockとpoetry installを実行する必要があります。
ChatGPTでのLocalhostプラグインのテスト
ChatGPTでlocalhostプラグインをテストするには、CORS設定、認証なし、マニフェスト、OpenAPIスキーマ、ロゴのルートを用意したlocal_server/main.pyファイルを使用します。
ローカルホストプラグインをテストするための手順は以下の通りです:
poetry run devコマンドを使ってローカルホストサーバーを起動します。これにより、デフォルトのアドレス(例:localhost:3333)でサーバーが起動します。
ChatGPTにアクセスし、「Plugins」をモデルピッカーから選択し、プラグインピッカーをクリックし、リストの下部にある「Plugin store」をクリックします。
「Develop your own plugin」を選択し、プロンプトが表示されたらあなたのローカルホストURL(例:localhost:3333)を入力します。
これであなたのローカルホストのプラグインがChatGPTセッションで有効になりました。
詳細については、OpenAIのドキュメンテーションを参照してください。
認証方法
以下は、あなたのプラグインへのリクエストを認証するための4つのオプションです:
認証なし
誰でもあなたのプラグインを追加し、資格情報なしでそのAPIを使用することができます。これは、露出するドキュメントがセンシティブでないか、すでに公開されている場合に適しています。
この方法では、データのセキュリティが提供されません。この方法を使用する場合、このmain.pyの内容を実際のmain.pyファイルにコピーします。
HTTP Bearer
あなたのプラグインへのリクエストを認証するために、秘密トークンをヘッダーとして使用することができます。
このオプションには2つのバリエーションがあります。
ユーザーレベル(この実装のデフォルト)でBearer認証
あなたのプラグインをChatGPTに追加する各ユーザーは、プラグインを追加する際にbearerトークンを提供する必要があります。これらのトークンは、jwt.ioなどの好きなツールや方法を使用して生成および配布することができます。
この方法は各ユーザーが共有アクセストークンを入力するため、より高いセキュリティを提供します。各ユーザーに固有のアクセストークンが必要な場合、main.pyファイルで自分でこれを実装する必要があります。例のマニフェストはこちら。
サービスレベルでBearer認証
誰でもあなたのプラグインを追加し、資格情報なしでそのAPIを使用することができますが、プラグインを登録する際にはbearerトークンを追加する必要があります。
あなたのプラグインをインストールするときに、あなたのbearerトークンを追加し、ChatGPTからトークンを受け取り、それをホストされたマニフェストファイルに含める必要があります。あなたのトークンは、あなたのプラグインを追加したすべてのユーザーの代わりに、ChatGPTによってあなたのプラグインへのリクエストを認証するために使用されます。
この方法はユーザーにとってはより便利ですが、すべてのユーザーが同じトークンを共有し、プラグインをインストールするためにトークンを追加する必要がないため、セキュリティが低下する可能性があります。
OAuth
ユーザーはOAuthフローを通じてあなたのプラグインを追加する必要があります。あなたはOAuthプロバイダを使用して、あなたのプラグインを追加するユーザーを認証し、あなたのAPIへのアクセスを許可することができます。
この方法は信頼できる第三者プロバイダーを通じてユーザーが認証を行うため、最高レベルのセキュリティとコントロールを提供します。
しかし、main.pyファイルでOAuthフローを自分で実装し、マニフェストファイルに必要なパラメータを提供する必要があります。
各認証方法の利点と欠点を考慮して、あなたのユースケースとセキュリティ要件に最も適したものを選択してください。
デプロイ
さまざまなクラウドプロバイダにデプロイできます。
ただし、どのプロバイダを選んだとしても、アプリ内の2つのファイル openapi.yaml と ai-plugin.json を更新する必要があります。これらのファイルはそれぞれ、あなたのアプリのAPI仕様とAIプラグインの設定を定義しています。
これらのファイルの両方にあるurlフィールドを、デプロイしたアプリのアドレスと一致するように変更する必要があります。
↓Renderのワンクリックデプロイを使えば、urlフィールドは自動で設定されます。
Render, Fly.io, Herokuなどのそれぞれのプラットフォームへのデプロイ方法はこちらをご覧ください。
アプリをデプロイしたら、このスクリプトの一つを使用して、または/upsert
エンドポイントを呼び出して、最初のバッチのドキュメントをアップロードすることを検討してみてください。
デベロッパープラグインのインストール
デベロッパープラグインをインストールするには、以下の手順に従います。
- まず、あなたの好みのホスティングプラットフォーム(例:Fly.io、Herokuなど)にデプロイして開発者プラグインを作成し、マニフェストファイルとOpenAPIスキーマのプラグインURLを更新します。
- ChatGPTにアクセスし、モデルピッカーから「プラグイン」を選択します。
- プラグインピッカーから最下部までスクロールし、「プラグインストア」をクリックします。
- 「あなた自身のプラグインを開発する」に移動し、提供された指示に従います。プラグインがデプロイされているドメインを入力する必要があります。
- プラグインの認証タイプに基づいた指示に従います
(例:プラグインがService Level HTTPを使用している場合、アクセストークンを貼り付け、プラグインフローから受け取った新しいアクセストークンをai-plugin.jsonファイルに貼り付け、アプリを再デプロイする必要があります) - 次に、プラグインを追加する必要があります。「プラグインストア」に再度アクセスし、「未確認のプラグインをインストールする」をクリックします。
- 提供された指示に従います。これは、プラグインがデプロイされているドメインを入力することを必要とします。
- プラグインの認証タイプに基づいた指示に従います
(例:プラグインがUser Level HTTPを使用している場合、あなたのbearer tokenを貼り付ける必要があります)
これらの手順を完了した後、あなたのデベロッパープラグインはインストールされ、ChatGPTで使用できるようになっています。
定期的な更新にはWebhook
ベクターデータベースに保存されているドキュメントを最新の状態に保つために、Zapier や Make のようなツールを使用して、イベントやスケジュールに基づいてプラグインのAPIへのインカミングWebhookを設定することを検討してみてください。たとえば、ノートを更新したり、メールを受信したりするたびに新しい情報を同期することができます。
また、既存のドキュメントのコレクションを一括処理してベクターデータベースにアップロードするために、Zapier Transferを使用することもできます。
これらのツールからカスタムフィールドをプラグインに渡す必要がある場合、データストアのupsert関数を呼び出す追加のRetrieval Plugin APIエンドポイントを作成することを検討してみてください。
たとえば、upsert-email
などです。このカスタムエンドポイントは、Webhookから特定のフィールドを受け取り、それに応じて処理するように設計することができます。
インカミングWebhookを設定するためには、一般的に以下の手順を守ってください:
- Zapier や Make のようなWebhookツールを選択し、アカウントを作成します。
- ツールで新しいWebhookまたはTransferを設定し、イベントやスケジュールに基づいてトリガーするように設定します。
- WebhookのターゲットURLを指定します。これは、Retrieval PluginのAPIエンドポイントである必要があります(例:
https://your-plugin-url.com/upsert
)。 - Webhookのペイロードを設定して、必要なデータフィールドを含め、Retrieval PluginのAPI要件に従ってフォーマットします。
- Webhookが正しく動作し、予定通りにデータをRetrieval Pluginに送信することを確認するために、Webhookをテストします。
Webhookを設定した後は、過去に欠落したデータがベクターデータベースに含まれることを確認するためにバックフィルを実行したいかもしれません。
データを連続的に同期するためにインカミングWebhookを使用する場合は、データを欠落することを避けるために、これらを設定した後にバックフィルを実行することを検討してください。
Zapier や Make のようなツールを使用するだけでなく、Retrieval Pluginとのデータ同期のために独自のカスタムインテグレーションを構築することもできます。これにより、データフローをより詳細に制御し、インテグレーションを特定のニーズや要件に合わせてカスタマイズすることができます。
制約事項
ChatGPT Retrieval Pluginは、セマンティック検索と情報検索のための柔軟な解決策を提供するように設計されていますが、一部の制約があります:
- キーワード検索の制約:
text-embedding-ada-002
モデルが生成する埋め込みは、必ずしも正確なキーワードの一致を捉えるのに効果的とは限りません。その結果、プラグインは特定のキーワードに大きく依存するクエリに対して最も関連性のある結果を返さない場合があります。Pinecone、Weaviate、Azure Cognitive Searchなどの一部のベクターデータベースはハイブリッド検索を使用しており、キーワード検索のパフォーマンスが向上するかもしれません。 - 機密データの取り扱い:プラグインは自動的に機密データを検出またはフィルタリングしません。開発者がRetrieval Pluginにコンテンツを含めるための必要な許可を持っており、そのコンテンツがデータプライバシー要件を満たしていることを確認するのは開発者の責任です。
- スケーラビリティ:プラグインのパフォーマンスは、選択したベクターデータベースプロバイダーとデータセットのサイズによって異なる場合があります。一部のプロバイダーは他のプロバイダーよりも優れたスケーラビリティとパフォーマンスを提供するかもしれません。
- 言語サポート:プラグインは現在、英語での使用に最適化されたOpenAIの
text-embedding-ada-002
モデルを使用しています。しかし、それはまださまざまな言語に対して良好な結果を生成するのに十分堅牢です。 - メタデータ抽出:オプショナルなメタデータ抽出機能は、言語モデルに依存してドキュメントテキストから情報を抽出します。このプロセスは常に正確ではないかもしれません、そして抽出されたメタデータの品質はドキュメントの内容と構造によって異なる場合があります。
- PII検出:オプショナルなPII検出機能は完全ではなく、個人を特定できる情報の全てを捕捉できないかもしれません。この機能を注意深く使用し、特定のユースケースに対するその効果を確認してください。
この記事の著者
阿部 隼也
Abe Shunya
株式会社AIイノベーションズ 代表取締役社長。人工知能学会 会員。東京都出身。横浜市立大学在学中に当社を創業し、SEOなどデジタルマーケティング事業や、ChatGPT入門講座を代表とするプライムアカデミー事業を立ち上げた。技術も好きで、自らコードを書きながらサービスを開発する。
Twitter(X)アカウント