編集

次の方法で共有


チャンク エンリッチメント

Azure AI サービス
Azure AI Search
Azure OpenAI Service
Azure Machine Learning

ドキュメントをチャンクのコレクションに分割したら、次の手順では、チャンクをクリーンアップし、メタデータで拡張することで、各チャンクを強化します。 チャンクをクリーニングすると、ベクター検索のセマンティック クエリに対してより適切な一致を実現できます。 情報を追加すると、チャンクのセマンティック検索以外の検索をサポートできます。 クリーニングと拡張の両方に、チャンクのスキーマを拡張する必要があります。

この記事では、チャンクに対して実行できる一般的なクリーニング操作を含め、チャンクを拡張するさまざまな方法について説明し、チャンクに追加して検索インデックスを拡張できる一般的なメタデータ フィールドについて説明します。

この記事はシリーズの一部です。 の概要をお読みください。

1 つのフィールドがエンリッチされた json レコードを示す図。

図 1. メタデータを使用したチャンクのエンリッチメント

清掃

データのチャンク化は、最も関連性の高いチャンクを検索する作業においてワークロードをサポートします。通常は、それらのチャンクをベクター化してベクター データベースに格納します。 最適化されたベクター検索では、クエリに最も近いセマンティック一致を持つデータベース内の行のみが返されます。 テキストのセマンティクスに重要ではない潜在的な違いを排除することで、データをクリーニングして近さの一致をサポートするという目標。 一般的なクリーニング手順を次に示します。

手記

元のクリーンアップされていないチャンクをクエリ結果として返す必要があるため、クリーンアップされたベクター化されたデータを格納するフィールドを追加します。

  • を下げる - 小文字を使用すると、文の先頭にある単語など、大文字の単語を文内の同じ単語と一致させることができます。 埋め込みでは通常、大文字と小文字が区別され、"Cheetah" と "cheetah" は同じ論理単語に対して異なるベクトルになります。 たとえば、埋め込みクエリの場合:"何が速いか、チーターかプーマですか?次の埋め込み: "チーターはプーマよりも高速です" は、"チーターはプーマよりも高速です" を埋め込むよりも近い一致です。一部の小文字戦略では、固有名詞を含むすべての単語を小文字にし、他の戦略には文の最初の単語を下げるだけの方法が含まれます。
  • 停止単語の削除 - 停止単語は、文で一般的に発生する "a"、"an"、"the" などの単語です。 ストップ ワードを削除して、結果のベクターの次元を減らすことができます。 ストップワードを削除すると、「チーターはプーマよりも速い」と「チーターはプーマよりも速い」の両方がベクトル的に「チーターの速いプーマ」に等しくなります。ただし、一部のストップ ワードにはセマンティックな意味があることを理解することが重要です。 たとえば、"not" はストップ ワードと見なされる可能性がありますが、意味意味は重要です。 ストップ ワードを削除する効果を確認するためにテストすることが重要です。
  • スペル ミスを修正する - スペル ミスが埋め込みモデルの正しいスペルの単語と一致しません。 たとえば、"cheatah" (sic) は、埋め込みでの "チーター" と同じではありません。 この課題に対処するには、スペル ミスを修正する必要があります。
  • Unicode 文字を削除する - Unicode 文字を削除すると、チャンク内のノイズを減らし、次元を減らすことができます。 ストップ ワードと同様に、一部の Unicode 文字には関連情報が含まれている場合があります。 Unicode 文字を削除した場合の影響を理解するためにテストすることが重要です。
  • 正規化 - 省略形の展開、数値から単語への変換、"I'm" から "I am" などの収縮の拡張などの標準にテキストを正規化すると、ベクター検索のパフォーマンスを向上させることができます。

チャンクの拡張

ベクター化されたチャンクに対するセマンティック検索は、一部の種類のクエリでは適切に機能しますが、他の種類のクエリには適していません。 サポートする必要があるクエリの種類によっては、追加情報を使用してチャンクを拡張することが必要になる場合があります。 追加のメタデータ フィールドはすべて埋め込みと同じ行に格納され、フィルターまたは検索の一部として検索ソリューションで使用できます。

完全にエンリッチされたコンテンツの JSON と、それが検索プラットフォームでどのように使用されるかを示す図。

図 2. 検索ソリューションでの拡張メタデータの使用

追加する必要があるメタデータ列は、問題のドメインに固有の決定によって異なります。 これには、使用しているデータの種類と、サポートするクエリの種類が含まれます。 達成しようとしているユーザー エクスペリエンス、使用可能なデータ、結果の品質を分析する必要があります。 そこから、ワークロードの要件に対処するのに役立つ可能性のあるメタデータを決定できます。

次に、一般的なメタデータ フィールドと、元のチャンク テキスト、潜在的な用途に関するいくつかのガイダンス、メタデータ コンテンツの生成に一般的に使用されるツールまたは手法を示します。

  • ID - ID は、チャンクを一意に識別するために使用されるキー メタデータ フィールドです。 一意の ID は、チャンクがストアに既に存在するかどうかを判断する処理に役立ちます。 ID には、キー フィールドのハッシュを指定できます。 ツールの: ハッシュ ライブラリ
  • タイトル - タイトルはチャンクの便利な戻り値です。 チャンク内のコンテンツの概要を簡単に示します。 概要は、一致するキーワードを含むことができるため、インデックス付き検索を使用してクエリを実行する場合にも役立ちます。 ツール: 言語モデル
  • 概要 - 概要は、一般的な戻り値であり、インデックス付き検索で使用できるという点でタイトルに似ています。 概要は通常、タイトルよりも長くなります。 ツール: 言語モデル
  • チャンク の言い換え - チャンクの言い換えは、シノニムや言い換えなどの言語のバリエーションをキャプチャするため、ベクター検索フィールドとして役立ちます。 ツール: 言語モデル
  • キーワード - キーワード検索は、非コンテキストのデータ、完全一致の検索、および特定の用語または値が重要な場合に適しています。 たとえば、自動車メーカーは、各モデルのレビューまたはパフォーマンス データを複数年にわたって持っている場合があります。 2009 年の製品 X のレビュー"は、意味的には"2010 年の製品 X のレビュー"、"2009 年の製品 Y のレビュー" のようになります。この場合は、製品と年のキーワードの照合をオフにすることをお勧めします。 ツール: 言語モデル、RAKE、KeyBERT、MultiRake
  • エンティティ - エンティティは、人、組織、場所などの特定の情報です。 キーワードと同様に、エンティティは完全一致検索や特定のエンティティが重要な場合に適しています。 ツール: SpaCy、Ford Named Entity Recognizer (SNER)、scikit-learn、Natural Language Toolkit (NLTK)。
  • クリーンアップされたチャンク テキスト を する - クリーンアップされたチャンク テキスト。 ツール: 言語モデル
  • チャンクが 答えることができる質問 - 場合によっては、埋め込まれているクエリとチャンクが埋め込まれているクエリが適切に一致しない場合があります。 たとえば、チャンク サイズに関してクエリが小さい場合があります。 チャンクが応答できるクエリを作成し、ユーザーの実際のクエリと事前設定されたクエリの間でベクター検索を実行することをお勧めします。 ツール: 言語モデル
  • ソース - チャンクのソースは、クエリのリターンとして価値があります。 これにより、クエリアは元のソースを引用できます。
  • 言語 - チャンクの言語は、クエリのフィルターとして適しています。

経済学の強化

チャンクを拡張するために一部の言語モデルを使用すると、コストがかかる場合があります。 検討している各エンリッチメントのコストを計算し、時間の経過に伴うチャンクの推定数を乗算する必要があります。 この情報を、検索の一部として強化されたフィールドのテストと共に使用して、適切なビジネス上の意思決定を行う必要があります。

次の手順

  • Azure AI Search での AI エンリッチメントの
  • Azure AI Search でのスキル セットの概念の