milvus-logo
LFAI
フロントページへ
  • モデル

Jina AI

Jina AIの埋め込みモデルは、テキスト入力を数値表現に変換し、テキストのセマンティクスを捉えることができる高性能テキスト埋め込みモデルです。これらのモデルは、高密度検索、意味的テキスト類似性、多言語理解などの用途に優れています。

Milvusは、JinaEmbeddingFunction クラスを介してJina AIの埋め込みモデルと統合されています。このクラスは、Jina AIの埋め込みモデルを使って文書やクエリをエンコードし、Milvusのインデックスと互換性のある密なベクトルとして埋め込みを返すためのメソッドを提供します。この機能を利用するには、Jina AIからAPIキーを取得してください。

この機能を使用するには、必要な依存関係をインストールします:

pip install --upgrade pymilvus
pip install "pymilvus[model]"

次に、JinaEmbeddingFunction をインスタンス化する:

from pymilvus.model.dense import JinaEmbeddingFunction

jina_ef = JinaEmbeddingFunction(
    model_name="jina-embeddings-v3", # Defaults to `jina-embeddings-v3`
    api_key=JINAAI_API_KEY, # Provide your Jina AI API key
    task="retrieval.passage", # Specify the task
    dimensions=1024, # Defaults to 1024
)

パラメータ

  • model_name (文字列)

    エンコードに使用するJina AIエンベッディングモデルの名前。利用可能なJina AIエンベッディング・モデル名のいずれかを指定できます。例えば、jina-embeddings-v3jina-embeddings-v2-base-en など。このパラメータを未指定のままにすると、jina-embeddings-v3 が使用されます。利用可能なモデルのリストについては、Jina Embeddingsを参照してください。

  • api_key (文字列)

    Jina AI APIにアクセスするためのAPIキー。

  • task (文字列)

    モデルに渡される入力のタイプ。エンベッディングモデルv3以降では必須。

    • "retrieval.passage":インデックス作成時の検索タスクで、大きな文書をエンコードするために使われる。
    • "retrieval.query":検索タスクにおいて、ユーザーからの問い合わせや質問を符号化するために使用される。
    • "classification":テキスト分類タスクでテキストを符号化する。
    • "text-matching":2つの文の類似度を測定するような、類似度マッチングのためにテキストを符号化する。
    • "clustering":クラスタリングやリランキングに使用される。
  • dimensions (int)

    埋め込み結果の次元数。デフォルトは1024です。埋め込みモデルv3以降でのみサポートされる。

  • late_chunking (bool)

    このパラメータは、Jina AIが先月導入した新しいチャンキング手法を、文の一括エンコーディングに使用するかどうかを制御する。デフォルトはFalseTrue に設定すると、Jina AI APIは入力フィールドのすべての文章を連結し、1つの文字列としてモデルに与えます。内部的には、モデルはこの長く連結された文字列を埋め込み、その後チャンキングを行い、入力リストのサイズに一致する埋め込みリストを返す。

ドキュメントの埋め込みを作成するには、encode_documents() メソッドを使います。このメソッドは、検索や推薦タスクのための文書のインデックス付けのような、非対称検索タスクにおける文書の埋め込み用に設計されている。このメソッドはタスクとしてretrieval.passage


```python
docs = [
    "Artificial intelligence was founded as an academic discipline in 1956.",
    "Alan Turing was the first person to conduct substantial research in AI.",
    "Born in Maida Vale, London, Turing was raised in southern England.",
]

docs_embeddings = jina_ef.encode_documents(docs)

# Print embeddings
print("Embeddings:", docs_embeddings)
# Print dimension and shape of embeddings
print("Dim:", jina_ef.dim, docs_embeddings[0].shape)

期待される出力は以下のようなものです:

Embeddings: [array([9.80641991e-02, -8.51697400e-02,  7.36531913e-02,  1.42558888e-02,
       -2.23589484e-02,  1.68494112e-03, -3.50753777e-02, -3.11530549e-02,
       -3.26012149e-02,  5.04568312e-03,  3.69836427e-02,  3.48948985e-02,
        8.19722563e-03,  5.88679723e-02, -6.71099266e-03, -1.82369724e-02,
...
        2.48654783e-02,  3.43279652e-02, -1.66154150e-02, -9.90478322e-03,
       -2.96043139e-03, -8.57473817e-03, -7.39028037e-04,  6.25024503e-03,
       -1.08831357e-02, -4.00776342e-02,  3.25369164e-02, -1.42691191e-03])]
Dim: 1024 (1024,)

クエリの埋め込みを作成するには、encode_queries() 。このメソッドは、検索クエリや質問などの非対称検索タスクにおけるクエリ埋め込み用に設計されています。このメソッドはretrieval.query をタスクとして使用します。

queries = ["When was artificial intelligence founded", 
           "Where was Alan Turing born?"]

query_embeddings = jina_ef.encode_queries(queries)

print("Embeddings:", query_embeddings)
print("Dim", jina_ef.dim, query_embeddings[0].shape)

期待される出力は以下のようなものです:

Embeddings: [array([8.79201014e-03,  1.47551354e-02,  4.02722731e-02, -2.52991207e-02,
        1.12719582e-02,  3.75947170e-02,  3.97946090e-02, -7.36681819e-02,
       -2.17952449e-02, -1.16298944e-02, -6.83426252e-03, -5.12507409e-02,
        5.26071340e-02,  6.75181448e-02,  3.92445624e-02, -1.40817231e-02,
...
        8.81703943e-03,  4.24629413e-02, -2.32944116e-02, -2.05193572e-02,
       -3.22035812e-02,  2.81896023e-03,  3.85326855e-02,  3.64372656e-02,
       -1.65050142e-02, -4.26847413e-02,  2.02664156e-02, -1.72684863e-02])]
Dim 1024 (1024,)

類似マッチング(STS や対称検索タスクなど)、テキスト分類、クラスタリング、リランキングタスクの入力の埋め込みを作成するには、JinaEmbeddingFunction クラスをインスタンス化するときに、適切なtask パラメータ値を使用します。

from pymilvus.model.dense import JinaEmbeddingFunction

jina_ef = JinaEmbeddingFunction(
    model_name="jina-embeddings-v3", # Defaults to `jina-embeddings-v3`
    api_key=JINA_API_KEY, # Provide your Jina AI API key
    task="text-matching",
    dimensions=1024, # Defaults to 1024
)

texts = [
    "Follow the white rabbit.",  # English
    "Sigue al conejo blanco.",  # Spanish
    "Suis le lapin blanc.",  # French
    "跟着白兔走。",  # Chinese
    "اتبع الأرنب الأبيض.",  # Arabic
    "Folge dem weißen Kaninchen.",  # German
]

embeddings = jina_ef(texts)

# Compute similarities
print(embeddings[0] @ embeddings[1].T)

翻訳DeepL

目次

Try Managed Milvus for Free

Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.

Get Started
フィードバック

このページは役に立ちましたか ?