次の方法で共有


SQL データベース エンジンでのベクトルの概要

適用対象: Azure SQL Database

ベクトルは、一部のデータに関する情報を表すことができる数値 (通常は浮動小数点数) の順序付けられた配列です。 たとえば、画像をピクセル値のベクトルとして表したり、テキストの文字列を ASCII 値のベクトルとして表したりすることができます。 データをベクトルに変換するプロセスを「ベクター化」と呼びます。

埋め込み

埋め込みは、データの重要な特徴量を表すベクトルです。 埋め込みは、多くの場合、ディープ ラーニング モデルを使用して学習され、機械学習と AI モデルは埋め込みを機能として利用します。 埋め込みでは、同様の概念間のセマンティック類似性を把握することもできます。 たとえば、単語 personhuman の埋め込みを生成する場合、これらの単語は意味的に似ているため、埋め込み (ベクトル表現) の値も似ていることが予想されます。

Azure OpenAI は、テキスト データから埋め込みを作成するためのモデルが特色となります。 このサービスは、テキストをトークンに分割し、OpenAI によって事前トレーニングされたモデルを使用して埋め込みを生成します。 詳細については、「Azure OpenAI を使用した埋め込みの作成」を参照してください。

埋め込みを生成したら、SQL Server データベースに格納できます。 これにより、埋め込みを表すデータと共に格納したり、ベクター検索クエリを実行して同様のデータ ポイントを検索したりできます。

ベクター検索とは、特定のクエリ ベクターに似たデータセット内のすべてのベクターを検索するプロセスを指します。 したがって、 human 単語のクエリ ベクターは、データセット全体で同様のベクトルを検索するため、同様の単語を検索します。この例では、 person 単語が近い一致として検索されます。 この近接度 (距離) は、コサイン距離などの距離メトリックを使用して測定されます。 ベクトルが近いほど、似ています。

SQL Server には、 vector データ型を介したベクターの組み込みサポートが用意されています。 ベクターは最適化されたバイナリ形式で格納されますが、便宜上 JSON 配列として公開されます。 ベクターの各要素は、単精度 (4 バイト) の浮動小数点値を使用して格納されます。 データ型と共に、ベクターを操作するための専用の関数があります。 たとえば、 VECTOR_DISTANCE 関数を使用して 2 つのベクトル間の距離を見つけることができます。 この関数は、指定した距離メトリックに基づいて、2 つのベクトル間の距離を持つスカラー値を返します。

ベクターは通常、浮動小数点の配列として管理されるため、ベクターの作成は JSON 配列を vector データ型にキャストするだけで実行できます。 たとえば、次のコードは JSON 配列からベクターを作成します。

SELECT CAST('[1.0, -0.2, 30]' AS VECTOR(3)) AS vector;

または、暗黙的なキャストを使用する

DECLARE @v VECTOR(3) = '[1.0, -0.2, 30]';
SELECT @v;

ベクターを JSON 配列に変換する場合も同様です。

DECLARE @v VECTOR(3) = '[1.0, -0.2, 30]';
SELECT CAST(@v AS NVARCHAR(MAX)) AS vector;

制限事項

現在のプレビューでは、JSON データ型との間のキャストはまだサポートされていません。 回避策は、最初に NVARCHAR(MAX)から変換してから JSON との間で変換することです。 たとえば、ベクトルを JSON 型に変換するには、次のようにします。

DECLARE @v VECTOR(3) = '[1.0, -0.2, 30]';
SELECT CAST(CAST(@v AS NVARCHAR(MAX)) AS JSON) AS j;

JSON 型からベクトルに変換する場合は、次のとおりです。

DECLARE @j JSON = JSON_ARRAY(1.0, -0.2, 30)
SELECT CAST(CAST(@j AS NVARCHAR(MAX)) AS VECTOR(3)) AS v;

SQL Server でベクターを使用する方法の詳細については、次の記事を参照してください。