OpenAIは最近、言語モデルが外部のツールやデータベースにアクセスできるようにするChatGPTのプラグインサポートを発表した。また、知識検索プラグインのコードもオープンソース化され、組織はこれを使用して、独自の文書やデータへのChatGPTベースのアクセスを提供できるようになった。
ChatGPT のような大規模言語モデル (LLM) は多くの質問に正しく答えることができるが、LLM のトレーニング後に更新されないため、その知識が古くなってしまう可能性がある。さらに、モデルはテキストを出力するだけなので、ユーザーにかわって直接な行動はできない。
この問題を解決するために、研究者はLLMがAPIを実行し、ナレッジデータベースにアクセスする方法を模索してきた。ChatGPTのプラグインシステムは、モデルが ナレッジベースやサードパーティーのAPIなどの外部システムと統合する。検索プラグインは、モデルがベクトルデータベースに対してセマンティック検索をする。プラグインはセルフホスティングされているため、組織は内部文書をデータベースに安全に格納でき、ユーザーはChatGPTの自然言語インターフェイスを介してデータと対話できる。
このプラグインは、オープンソースのプラグインコードに貢献したPinecone社が開発したものを含む、いくつかの商用およびオープンソースのベクターデータベースをサポートしている。InfoQは、Pinecone社のエンジニアリング・マネージャーであるRoy Miara氏に、プラグインへの貢献について話を聞いた。
InfoQ:ChatGPTのプラグインとは何か?、特にRetrievalプラグインは何に使うのか?
Roy Miara氏:ChatGPTのプラグインは、現在の情報へのアクセスを容易にしたり、計算を実行したり、ChatGPTのためのサードパーティ・サービスを統合するための補助ツールとして機能する。特にRetrievalプラグインは、ChatGPTがセマンティック検索技術によって外部の知識を得ることを可能にする。Retrievalプラグインを利用するための一般的なパラダイムは2つある。 1)個人または組織のデータにアクセスするためにプラグインを利用する方法と、2)ChatGPTの記憶コンポーネントとしてプラグインを実装する方法だ。どちらも、ユーザープロンプトを、Pinecone、Milvus、Weaviateなどのベクトルデータベースへのクエリとしてモデルが言い換える方法として、セマンティック検索を使用している。
**InfoQ:LangChainのようなLLMとのインテグレーションと比較したときの、ChatGPTプラグインの利点を教えてください **
Miara氏:LangChainはツールやチェーンで「エージェント」エクスペリエンスを可能にするが、AIアプリ開発にはChatGPTプラグインが適している。ChatGPTプラグインの利点は以下の通りだ。 1)モデルへのプロンプトとしてプラグイン情報を連結するLangChainのアプローチとは異なり、OpenAI内部のプラグイン機能を活用したより洗練された実装、2)AIアプリケーション開発、特に個人データへのアクセスやユーザーの代わりにアクションを実行する場合に不可欠なセキュリティと認証方法のサポートだ。これらの機能は、Langchainが現在提供しているものにはないものだ。
InfoQ: Retrievalプラグインのオープンソースプロジェクトへの貢献について。
Miara氏:Pineconeデータストアの実装は、テストやドキュメント作成などの内部的な改善とともにプロジェクトに貢献した。全体的な基本実装はPineconeのupsert/query/deleteパラダイムに従っており、現在はハイブリッドクエリやその他の高度なクエリ技術に取り組んでいるところだ。
InfoQ: 典型的なChatGPTプラグインの動作について、技術的な詳細は何か。
Miara氏:ChatGPTプラグインは、ChatGPTに「指示」マニフェストを公開するWebサーバだ。そこには、プラグインの操作がプロンプトとして、APIリファレンスがOpenAPI yaml仕様として記述されている。これらにより、ChatGPTは可能な異なるAPIコールと従うべき指示を理解する。
そのため、Pluginを構築するためには、アプリケーションロジックを構築し、 OpenAPI specificationに沿ったWebサーバを実装し、ChatGPTがアクセスできるようにサーバを配置する必要がある。実装できるアプリケーションロジックに 制限はないが、複雑なAPIサーバを構築することは、望ましくない動作や混乱を招く可能性があるため、 あまり推奨できない。
マニフェストの"description_for_model"部分は、基本的にコンテキストを取得する前に挿入されるプロンプトであり、プラグインを成功させるための 鍵であることがわかった。OpenAIはいくつかのガイドラインを提供しているが、結局のところ、タスクに適したプロンプトを見つけるのは開発者の手にかかっているのだ。
InfoQ: OpenAIは、プラグインが "安全性を核とした言語モデル専用に設計されている "と 言及している。プラグインを開発する上で、安全面で苦労したことはあるのか?
Miara氏:まず、ChatGPTで個人や組織のデータにアクセスできるようにするためには、セキュリティとデータインテグリティの両機能を実装する必要があった。このプラグインは、API認証に対応しており、読み書きともに安全なデータアクセスを実現している。
第二に、生成言語モデルはしばしば幻覚や整列の問題に悩まされる。初期バージョンのプラグインでは、クエリに対して誤った回答をすることがあったが、その後のバージョンでは、精度が向上していることが確認され、また、特定の質問が自分の範囲を超えている場合も認められた。さらに、プラグインを長期間アルファ版として運用することで、OpenAIはより多くの人々に公開する前に、より良い結果を揃えることができるのだ。
さらに、このプラグイン機能は、ユーザーに対して完全な透明性を持って設計されていることも重要な点である。まず、ChatGPTで使用したいプラグインを明示的に選択する。そして、ChatGPTがプラグインを利用する際には、そのプラグインがChatGPTのコンテキストにどのような結果をもたらしたかを簡単に確認できるようにしながら、ユーザーに対してその旨を 明確に示す。