46.6kデモを予約するログイン無料で始める
ジーナAI

ジーナAI / jina-embeddings-v3

多言語テキスト埋め込みモデル。合計89言語をサポートし、1シーケンスあたり最大8192トークンを処理できる。

jina-embeddings-v3 概要

jina-embeddings-v3**モデルは、JinaAIが新たにリリースした多言語テキスト埋め込みツールであり、5億7000万個のパラメータと8192トークンの最大入力長を持つ。多言語データ処理とロングコンテクスト検索タスクを処理することができ、94言語にわたって最先端の(SOTA)性能を達成しています。このモデルは、クエリ-文書検索、クラスタリング、分類、テキストマッチングなど、様々なタスクに適した埋め込みを作成する。

また、Jina-embeddings-v3は、マトリョーシカ埋め込みをサポートしており、必要に応じて出力埋め込みサイズをカスタマイズすることができます。デフォルトの出力サイズは1024ですが、32、64、128、256、512、768のいずれかに縮小することができます。

jina-embeddings-v3**とJina v2モデルを比較してください:

| モデル|パラメータサイズ|埋め込み次元|テキスト | ---------------------------- | -------------- | --------------------------------------- | ----------------------------------------------------------- | | jina-embeddings-v3](https://zilliz.com/ai-models/jina-embeddings-v3) | 570M | 柔軟な埋め込みサイズ (デフォルト: 1024) | 多言語テキスト埋め込み; 計94言語をサポート | | jina-embeddings-v2-small-en](https://zilliz.com/ai-models/jina-embeddings-v2-small-en)|33M|512|英語モノリンガル埋め込み|jina-embeddings-v2-small-en](https://zilliz.com/ai-models/jina-embeddings-v2-small-en)|512|英語モノリンガル埋め込み | jina-embeddings-v2-base-ja | 137M | 768 | 英語のモノリンガル埋め込み || jina-embeddings-v2-base-ja | 137M | 768 | 英語のモノリンガル埋め込み | jina-embeddings-v2-base-zh | 161M | 768 | 中英二ヶ国語エンベッディング(embeddings) | jina-embeddings-v2-base-de](https://zilliz.com/ai-models/jina-embeddings-v2-base-de)|161M|768|独英対訳エンベッディング|jina-embeddings-v2-base-de]|161M|768|独英対訳エンベッディング | jina-embeddings-v2-base-code](https://zilliz.com/ai-models/jina-embeddings-v2-base-code) | 161M | 768|英語とプログラミング言語|の対訳エンベッディング。

jina-embeddings-v3で埋め込みを作成する方法

ベクトルの埋め込みを生成するには、主に2つの方法があります:

  • PyMilvus](https://github.com/milvus-io/pymilvus): MilvusのPython SDKで、jina-embeddings-v3モデルをシームレスに統合している。
  • SentenceTransformerライブラリ: Pythonライブラリ sentence-transformer.

ベクトル埋め込みが生成されると、Zilliz Cloud (Milvus](https://zilliz.com/what-is-milvus)が提供するフルマネージドベクトルデータベースサービス)に保存され、意味的類似検索に利用することができる。以下は4つの重要なステップである:

  • Zilliz Cloudアカウントに無料でサインアップ](https://cloud.zilliz.com/signup)する。
  • サーバーレスクラスターをセットアップ](https://docs.zilliz.com/docs/create-cluster#set-up-a-free-cluster)し、パブリックエンドポイントとAPIキーを取得する。
  • ベクトルコレクションを作成し、ベクトル埋め込みを挿入する。
  • 保存された埋め込みに対してセマンティック検索を実行する。

PyMilvusで埋め込みを作成し、Zilliz Cloudに挿入してセマンティック検索を行う。

from pymilvus.model.dense import SentenceTransformerEmbeddingFunction
from pymilvus import MilvusClient

ef = SentenceTransformerEmbeddingFunction("jinaai/jina-embeddings-v3", trust_remote_code=True)

ドキュメント = [
   「人工知能は1956年に学問分野として創設された、
   「アラン・チューリングは、人工知能の実質的な研究を行った最初の人物である、
   "チューリングはロンドンのマイダベールで生まれ、イングランド南部で育った。"
]
# ドキュメントの埋め込みを生成する
docs_embeddings = ef(docs)

queries = ["人工知能はいつ創設されたか"、
          「アラン・チューリングはどこで生まれたのか?]
# クエリの埋め込みを生成する
query_embeddings = ef(queries)

# Public EndpointとAPI Keyを使ってZilliz Cloudに接続する
client = MilvusClient(
    uri=ZILLIZ_PUBLIC_ENDPOINT、
    token=ZILLIZ_API_KEY)

COLLECTION = "documents"
if client.has_collection(collection_name=COLLECTION):
    client.drop_collection(collection_name=COLLECTION)
client.create_collection(
    コレクション名=COLLECTION、
    dimension=ef.dim、
    auto_id=True)

for doc, embedding in zip(docs, docs_embeddings):
    client.insert(COLLECTION, {"text": doc, "vector": embedding})
    
results = client.search(
    collection_name=COLLECTION、
    data=query_embeddings、
    consistency_level="Strong"、
    output_fields=["text"])

詳しくは、こちらのJina AI documentation pageをご覧ください。

Sentence Transformerで埋め込みを作成し、意味検索のためにZilliz Cloudに挿入する。

from sentence_transformers import SentenceTransformer
from pymilvus import MilvusClient

model = SentenceTransformer("jinaai/jina-embeddings-v3", trust_remote_code=True)

ドキュメント = [
   「人工知能は1956年に学問分野として創設された、
   「アラン・チューリングは、人工知能の実質的な研究を行った最初の人物である、
   "チューリングはロンドンのマイダベールで生まれ、イングランド南部で育った。"
]
# ドキュメントの埋め込みを生成する
docs_embeddings = model.encode(docs, normalize_embeddings=True)

queries = ["クエリ:人工知能はいつ作られたのか?
           "query:アラン・チューリングはどこで生まれましたか?"]
# クエリの埋め込みを生成する
query_embeddings = model.encode(queries, normalize_embeddings=True)

# Public EndpointとAPI KeyでZilliz Cloudに接続する。
client = MilvusClient(
    uri=ZILLIZ_PUBLIC_ENDPOINT、
    token=ZILLIZ_API_KEY)

COLLECTION = "documents"
if client.has_collection(collection_name=COLLECTION):
    client.drop_collection(collection_name=COLLECTION)
client.create_collection(
    コレクション名=COLLECTION、
    dimension=512、
    auto_id=True)

for doc, embedding in zip(docs, docs_embeddings):
    client.insert(COLLECTION, {"text": doc, "vector": embedding})
    
results = client.search(
    collection_name=COLLECTION、
    data=query_embeddings、
    consistency_level="Strong"、
    output_fields=["text"])

参考文献

  • Jina AIによるテキスト埋め込み学習](https://zilliz.com/blog/training-text-embeddings-with-jina-ai)
  • 検索とマルチモーダルRAGのための一般的なテキスト画像表現学習](https://zilliz.com/blog/clip-to-jinaclip-general-text-image-search-multimodal-rag)
  • データに適した埋め込みモデルの選択](https://zilliz.com/blog/choosing-the-right-embedding-model-for-your-data)
  • 埋め込みモデルの評価](https://zilliz.com/learn/evaluating-your-embedding-model)
  • 独自のテキスト埋め込みモデルのトレーニング](https://zilliz.com/learn/training-your-own-text-embedding-model)
  • RAGアプリケーションのためのウェブサイトチャンキングと埋め込み初心者ガイド](https://zilliz.com/learn/beginner-guide-to-website-chunking-and-embedding-for-your-genai-applications)
  • RAGとは](https://zilliz.com/learn/Retrieval-Augmented-Generation)