生成 AI とは、人工知能を使用してテキスト、画像、音楽、音声、動画などの新しいコンテンツを作成することです。生成 AI は、機械学習(ML)モデルを使用して、人間が作成したコンテンツのデータセットにあるパターンと関係を学習します。
この技術は、Gemini などのアプリを通じて、驚異的な能力を示してきました。生成 AI ツールをウェブ プロダクトに実装する方法について疑問に思われるかもしれません。
一般的なユースケースの 1 つは、ウェブサイトのコンテンツについてユーザーが質問するための優れたインターフェースを提供することです。ML の助けを借りて、ユーザーの検索結果を大幅に改善できます。
サイト固有の優れた検索を構築する
ユーザーが質問を入力するインターフェースを作成して、その質問を Gemini などの大規模言語モデル(LLM)に送信し、回答をユーザーに表示できます。
このような機能がこのサイトに存在するとします。Interop 2024 に含まれる API を知りたいユーザーが、次のクエリを入力します。
What are the features included in Interop 24?
残念ながら、出力は次のような理由で誤っている可能性があります。
- ユーザーが LLM に質問のコンテキストをほとんど与えていないため、LLM が誤った回答やハルシネーションを返しやすくなっています。
- LLM は、相互運用 2024 が作成される前、または機能が決定される前にトレーニングされた可能性があるため、その情報は認識されません。
LLM はより最新の情報を検索できますが、LLM トレーニング データセットは本来古くなっています。最新の結果を維持するには、非常に時間と費用がかかります。
プロンプト エンジニアリングを使用する
プロンプト エンジニアリングは、LLM から最適な出力を取得するための一連の手法です。
1 つの手法は、プロンプトに追加のコンテキストを提供して、LLM がコンテキストに関連するコンテンツを出力する可能性を高めることです。
Interop の例を続けます。まず、記事の全文をコンテキストとして提供します。次に、LLM が回答する入力として質問を追加します。例:
Context:
Following on from the success of Interop 2022 and Interop 2023, we
are excited about the opportunity to collaborate once again with
all key browser vendors and other relevant stakeholders...
(trimmed to fit in this article)
Input:
What are the features included in Interop 2024?
Gemini の出力結果は次のようになります。
The features included in Interop 24 are Accessibility, CSS Nesting, Custom
Properties, Declarative Shadow DOM, font-size-adjust, HTTPS URLs for
WebSocket, IndexedDB, Layout, Pointer and Mouse Events, Popover, Relative
Color Syntax, requestVideoFrameCallback, Scrollbar Styling, @starting-style
and, transition-behavior, Text Directionality, text-wrap: balance,URL
この回答は、提供されたコンテキストに基づいているため、コンテキストのないプロンプトよりもはるかに優れている可能性があります。
RAG でスケールアップする
たとえば、単一の記事に関する質問に回答するのではなく、LLM が任意の記事を追加のコンテキストとして使用して、web.dev に関するより多くの質問に回答できるようにします。小規模なサイトでは可能かもしれませんが、Gemini 1.5 のコンテキスト ウィンドウは 100 万トークンであるため、長いプロンプトを使用すると、実行が遅くなり、費用も高くなります。
LLM の入力と出力の長さはトークンで測定され、課金されます。トークンは、テキスト入力で見つかった一般的な文字シーケンスを表すための手段です。通常、トークン数は単語数よりも多くなります。たとえば、最初の例では、入力は 775 語で、1,097 個のトークンで表されます。LLM によってトークンの計算方法が異なり、ほとんどの LLM はテキスト入力のトークン数を計算するための API またはエンドポイントを提供します。
LLM にプロンプトに関連する記事を提供する方法が考えられます。このタスクは、次の 2 つのパートで構成されます。
- LLM にプロンプトを出すときに、人気記事のコンテンツをコンテキストとして追加します。
- 「Interop 2024 に含まれる機能」に関連する記事をコンテンツで検索します。
Google は、Gemini の検索結果に以下の記事に基づくコンテンツを返すことを目標としています。
- 記事 1: web.dev/blog/submit-your-proposals-for-interop-2024
- 記事 2: web.dev/blog/interop-2023-wrapup
- 記事 3: web.dev/blog/interop-2024
入力は次のようになります。
Context:
Article 1:
Over the past two years... (trimmed)
Article 2:
At the end of last year Interop 2023 wrapped up. This effort... (trimmed)
Article 3:
Following on from the success of Interop 2022... (trimmed)
Input:
What are the features included in Interop 2024?
このコンテキストでは、想定どおりの出力が生成されます。
* Accessibility * CSS Nesting * Custom Properties
* Declarative Shadow DOM * font-size-adjust
* HTTPS URLs for WebSocket * IndexedDB * Layout
* Pointer and Mouse Events * Popover * Relative Color Syntax
* requestVideoFrameCallback * Scrollbar Styling
* @starting-style and transition-behavior * Text Directionality
* text-wrap: balance * URL
AI 技術に精通している方には、このアプローチは RAG を使用していることがわかるでしょう。これは、生成 AI ツールから実際の回答を得る可能性を高めるためによく行われる手法です。
セマンティック検索で出力を改善する
RAG 手法は通常の全文検索で使用できますが、このアプローチには欠点があります。
- 全文検索は、AI がキーワードと完全に一致するコンテンツを見つけるのに役立ちます。ただし、LLM はユーザーのクエリの背後にある意図を判断できません。これにより、出力が不完全または不正確になる可能性があります。
- 単語に複数の意味がある場合や、クエリで類義語が使用されている場合は、問題が発生する可能性があります。たとえば、「bank」(金融機関と川岸)というキーワードでは、関連性のない結果が返される可能性があります。
- 全文検索では、キーワードが含まれている結果が返されることがあります。しかし、その結果がユーザーの目的に合致するとは限りません。
セマンティック検索は、次の重要な要素に焦点を当てて検索精度を高める手法です。
- 検索者の意図: ユーザーが何かを検索する理由を理解しようとします。ユーザーが探しているものや達成しようとしていることは何ですか?
- コンテキストに基づく意味: 単語やフレーズを、周囲のテキストや、ユーザーの位置情報や検索履歴などの他の要素と関連付けて解釈します。
- 概念間の関係: セマンティック検索は、ナレッジグラフ(関連エンティティの大規模なネットワーク)と自然言語処理を使用して、単語とアイデアがどのように関連しているかを理解します。
そのため、セマンティック検索を使用してツールを構築すると、検索結果はキーワードではなく、クエリの全体的な目的に基づいて生成されます。つまり、正確なキーワードが含まれていなくても、ツールは関連ドキュメントを特定できます。また、単語が存在するものの、異なる意味を持つ結果も回避できます。
現在、セマンティック検索を採用した 2 つの検索ツール(Vertex AI Search と Algolia AI Search)を実装できます。
公開済みコンテンツから回答を取得する
プロンプト エンジニアリングを使用して、プロンプトにコンテキストを追加することで、LLM がこれまで見たことがないコンテンツに関連する回答を提供できるようにする方法について学習しました。また、検索拡張生成(RAG)手法を使用して、このアプローチを個々の記事からコンテンツのコーパス全体にスケーリングする方法も学びました。セマンティック検索によってユーザー検索クエリの結果をさらに改善し、プロダクトに RAG を適切に実装する方法について学びました。
生成 AI ツールが「ハルシネーション」を起こす可能性があることは既知の問題です。このため、生成 AI ツールは、最善の場合でも信頼性に欠ける場合があり、最悪の場合、ビジネスに積極的な悪影響を及ぼす可能性があります。これらの手法により、ユーザーとデベロッパーの両方が信頼性を高め、アプリケーションの出力に対する信頼を構築できます。