ベクターとは、テキスト、イメージ、その他のコンテンツなど、データの意味や関係性を捉えた数値のリストです。数値的に近いベクターは、意味的に類似したデータを表します。DashVector はこれらのベクターを格納、インデックス化、検索することで、大規模な類似検索、レコメンデーション、検索拡張生成 (RAG) アプリケーションの構築を可能にします。
埋め込みの仕組み
データを DashVector に格納する前に、埋め込みモデルを使用してベクターに変換する必要があります。この変換を埋め込みと呼びます。
例えば、Model Studio の text-embedding-v1 モデルは、入力されたテキストをベクターに変換します。
import dashscope
from dashscope import TextEmbedding
dashscope.api_key = {YOUR API KEY}
def embed_with_str():
resp = TextEmbedding.call(
model=TextEmbedding.Models.text_embedding_v1,
input='The quality of the clothes is simply outstanding, and they look fabulous. The wait was completely worth it, and I am absolutely delighted with my purchase. I will definitely be a repeat customer here.')
print(resp)
if __name__ == '__main__':
embed_with_str()応答には embedding フィールドが含まれています。この数値の配列がベクターです。
{
"status_code": 200,
"request_id": "617b3670-6f9e-9f47-ad57-997ed8aeba6a",
"code": "",
"message": "",
"output": {
"embeddings": [
{
"embedding": [
0.09393704682588577,
2.4155092239379883,
-1.8923076391220093,
...
],
"text_index": 0
}
]
},
"usage": {
"total_tokens": 23
}
}基本概念
ディメンション
ベクターのディメンションとは、配列内の要素の数です。1,024 個の数値を持つベクターは、1,024 ディメンションのベクターです。ディメンションは特定のモデルに対して固定されており、text-embedding-v1 のすべての出力は正確に 1,024 ディメンションを持ちます。
モデル名 | ベクターディメンション | 最大行数 | 1行あたりの最大トークン数 | サポート言語 |
text-embedding-v3 | 1,024 (デフォルト)、768、512、256、128、または 64 | 10 | 8,192 | 中国語、英語、スペイン語、フランス語、ポルトガル語、インドネシア語、日本語、韓国語、ドイツ語、ロシア語、その他 50 以上の主要言語 |
データの型
ベクターのデータの型は、その要素のデータの型です。例えば、text-embedding-v1 は float 型の要素を生成するため、そのベクターは float 型になります。[1, 2, 3, 4] のような単純な整数ベクターは、4 ディメンションの int 型ベクターです。
ディメンションとデータの型は、埋め込みモデルによって異なります。コレクションを作成する際は、使用するモデルに合わせてこれらのパラメーターを設定してください。
距離メトリック
DashVector は、距離を用いてベクター間の類似度を測定します。距離が短い、または小さいほど、2 つのベクターはより類似していることを意味します。DashVector は 3 種類の距離メトリックをサポートしています。
コサイン距離
コサイン距離は、2 つのベクターの大きさではなく、その間の角度を測定します。意味の方向性がスケールよりも重要となるテキスト検索やセマンティック検索に適しています。
DashVector では、コサイン距離を次のように定義しています。
コサイン距離 = 1 − コサイン類似度
有効値の範囲は [0, 2] です。値が小さいほど、類似度が高いことを示します。

ここで、_A_ と _B_ は 2 つのベクター、_n_ はディメンション、· はドット積、||_A_|| と ||_B_|| は 2 つのベクターの大きさを表します。


ユークリッド距離
ユークリッド距離は、空間における 2 つのベクター間の直線距離です。ベクターの実際の大きさと位置が重要となる空間データや幾何学的類似性の評価に適しています。
ユークリッド距離が短いほど、類似度が高いことを示します。

ここで、_A_ と _B_ は 2 つのベクター、_n_ はディメンションを表します。

ドット積
ドット積 (スカラー積とも呼ばれます) は、2 つのベクターがどの程度同じ方向を向いているかを測定します。2 つのアイテムが互いにどの程度強く関連しているかを定量化する必要があるレコメンデーションシステムに適しています。
ドット積が大きいほど、類似度が高いことを示します。

ここで、_A_ と _B_ は 2 つのベクター、_n_ はディメンションを表します。

一般的なモデルとパラメーター
コレクションを作成する際は、ディメンション、データの型、距離メトリックを、使用する埋め込みモデルに合わせてください。
| モデル | ベクトルディメンション | データ型 | 推奨距離メトリック |
|---|---|---|---|
| text-embedding-v3 | 1,536 | Float(32) | コサイン |
| OpenAI Embedding | 1,536 | Float(32) | コサイン |

text-embedding-v3 モデルの仕様
| 仕様 | 値 |
|---|---|
| ベクターディメンション | 1,024 (デフォルト)、768、または 512 |
| リクエストあたりの最大行数 | 10 |
| 1行あたりの最大トークン数 | 8,192 |
| サポート言語 | 中国語、英語、スペイン語、フランス語、ポルトガル語、インドネシア語、日本語、韓国語、ドイツ語、ロシア語、その他 50 以上の言語 |
詳細については、text-embedding-v3 のクイックスタートガイドをご参照ください。