Jina Embeddings と Rerankers が Azure Marketplace で利用可能になりました。このインテグレーションは、データセキュリティと運用効率を重視する企業にとって重要です。


以下の7つのモデルが利用可能です:
- Jina Embeddings v2 Base - code
- Jina Embeddings v2 Base - de
- Jina Embeddings v2 Base - zh
- Jina Embeddings v2 Base - es
- Jina Embeddings v2 Base - en
- Jina Reranker v1 Base - en
- Jina Reranker v1 Turbo - en
- Jina Reranker v1 Tiny - en
- Jina ColBERT v1 - en
tagプライバシーとパフォーマンスを重視した設計
データの安全性確保は私たちの最優先事項です。Azure とのパートナーシップにより、データプライバシーと効率性の要求に応える AI ソリューションを提供することができます。Azure の比類のないプライバシー基準により、医療、金融、その他の重要なデータ保護を必要とする分野において、最も厳格なデータ保護が保証されます。既存の Azure ユーザーであれば、現在のサブスクリプションで Jina AI の最先端のEmbeddingおよびRerankerモデルのすべての利点を得ることができます。
tagシームレスな統合と高いスケーラビリティ
Azure へのデプロイは、プライバシーを確保するだけでなく、既存の Azure サービスとのシームレスな統合も実現します。これにより、スムーズな移行が可能になり、パフォーマンスを損なうことなく、需要の変動に応じて AI デプロイメントをスケーリングすることができます。
tagAzure を始めよう
このチュートリアルでは、音楽の検索アプリケーションを作成します。曲のタイトルを正確に指定するのではなく、私たちの検索基盤モデルの品質を本当にテストする曖昧なクエリで検索を行いたいと思います。
そのために、まず Azure 上でセットアップを行います。
tagAzure にサインアップする
有効な支払い方法が登録された Azure アカウントのサブスクリプションが必要です。まだアカウントをお持ちでない場合は、Azure ホームページでサインアップできます。
tagAzure に Jina モデルをデプロイする
Azure Marketplaceで、"jina" と検索することで Jina AI のすべての embedding モデルと reranker モデルを見つけることができます。ニーズに最も合うものを選んでください。

デプロイメント設定の Basic タブでは、デプロイメントに関する詳細情報を提供する必要があります。デフォルトの設定では、4つの CPU コアと 8GB のメモリを使用するように設定されています。特定の要件に応じて、アプリケーションのニーズに合わせてこれらの設定を調整することができます。

これでデプロイメントが開始されます。数分かかる場合があります。完了すると、以下の画面が表示されます:

これでモデルがデプロイされ、使用可能な状態になりました。
tagチュートリアル:楽曲を検索する
このチュートリアルでは、Azure のデプロイメントを使用して、ポピュラー音楽に関するデータファイルのコレクションに対する基本的な検索エンジンを構築します。
tagデータセットを読み込む
from datasets import load_dataset
dataset = load_dataset("sander-wood/wikimusictext")
これにより WikiMusicText(WikiMT)データセットが読み込まれます。
tagJina Embeddings v2 と Reranker エンドポイントを開始する
まず、Azure ポータルで embedding と reranker のエンドポイントをデプロイします。使用するリージョンを決定し、embedding サービスと reranker サービスにそれぞれ DNS プレフィックスを割り当てる必要があります。その後、以下のコードでembeddings_url
とreranker_url
変数にその情報を格納します。
関数jina_embed
とjina_rerank
は、Azure でホストされている API にリクエストを送信することで、テキストの埋め込みと再ランク付けを生成します。
import json
import requests
embeddings_url = "http://<Your DNS prefix>.<Your region>.azurecontainer.io:8080/invocations"
reranker_url = "http://<Your DNS prefix>.<Your region>.azurecontainer.io:8080/invocations"
def jina_embed(text):
headers = {"Content-Type": "application/json"}
json_data = {"data": [{"text": text}]}
response = requests.post(embeddings_url, headers=headers, data=json.dumps(json_data))
return response.json()["data"][0]["embedding"]
def jina_rerank(query, search_results):
headers = {"Content-Type": "application/json"}
json_data = {
"data": {
"documents": [
{"text": search_result[0]} for search_result in search_results
],
"query": query,
"top_n": 3,
}
}
response = requests.post(reranker_url, headers=headers, data=json.dumps(json_data))
return response.json()["data"][0]["results"]
tagデータセットの読み込み
このデータは AI モデルのトレーニング用に収集されたため、トレーニングデータとテストデータに分かれています。このチュートリアルでは簡単のため、トレーニングデータのみを使用します。以下のコードでトレーニングデータを pandas
の DataFrame に変換します:
ds = dataset['train']
input_df = ds.dataset.to_pandas()
tag埋め込みの生成と FAISS でのインデックス作成
この関数はテキストデータを処理し、埋め込みの形で特徴を抽出します。これには少し時間がかかります。
import numpy as np
from tqdm import tqdm
tqdm.pandas()
def generate_embeddings(input_df):
all_embeddings = []
for t in input_df.text:
review_embeddings = []
all_embeddings.append(np.array(jina_embed(t)))
input_df["embeddings"] = all_embeddings
return input_df
enhanced_dataframe = generate_embeddings(input_df)
このコードは DataFrame の text
カラムの各エントリーに対して jina_embed()
を呼び出して埋め込みを取得します。埋め込みは NumPy 配列として all_embeddings
リストに保存します。その後、それらを embeddings
という新しいカラムとして DataFrame に追加します。
作成したものを enhanced_dataframe
の値を表示して確認できます:

最後のカラムに読みやすい形式で埋め込みが含まれています。
次に、埋め込みを保存して検索するための FAISS(Facebook AI Similarity Search)インデックスを作成する必要があります:
import faiss
dim = 768 # Jina v2 埋め込みの次元
index_with_ids = faiss.IndexIDMap(faiss.IndexFlatIP(dim))
for idx, row in enhanced_dataframe.iterrows():
embeddings = row["embeddings"]
normalized_embedding = np.ascontiguousarray(
np.array(embeddings, dtype="float32").reshape(1, -1)
)
faiss.normalize_L2(normalized_embedding)
index_with_ids.add_with_ids(normalized_embedding, idx)
このコードでは、検索を簡略化して高速化するために埋め込みベクトルも正規化します。
tagクエリに対する一致の取得
find_similar_texts
関数は、作成したインデックスから最も近い一致を検索します:
def find_similar_texts(query, n=20):
query_embedding = jina_embed(query)
query_embedding = np.ascontiguousarray(
np.array(query_embedding, dtype="float32").reshape(1, -1)
)
faiss.normalize_L2(query_embedding)
similarities, indices = index_with_ids.search(query_embedding, n)
results = []
for i in range(n):
similarity = similarities[0][i]
index_id = indices[0][i]
results.append((enhanced_dataframe.loc[index_id, "text"], similarity))
return results
tag最も関連性の高い一致を得るための再ランク付け
FAISS インデックスから結果を取得した後、結果のセットを jina_rerank
関数に送信して、すべての回答に関連性スコアを割り当て、関連性でソートされた結果リストを返します。
セマンティックな理解が必要なクエリを使用してソリューションをテストしてみましょう:
query = "What are some jazz songs that reached the top of the music charts in 1960s?"
search_results = find_similar_texts(query)
most_relevant_results = jina_rerank(query, search_results)
pprint.pprint(most_relevant_results)
最も関連性の高い結果は以下の通りです:
[{'id': 'c26a67d979cb73474e9f80221b14b5c9',
'index': 0,
'document': {'id': 'd2183fd857661fbf9ca60a22e91888a0',
'text': 'An instrumental version by Heywood and Hugo Winterhalter reached No. 2 on the Billboard Hot 100 chart and No. 7 on the R&B chart in 1956. A version sung by Andy Williams was also popular that year. The tune has been covered by a number of jazz performers beginning in the 1960s.'},
'relevance_score': 0.7132052183151245,
'usage': {'id': '037b9d22a5f13b68258ab51cbab1a7ad', 'total_tokens': 64}},
{'id': 'a9205e69a4e76ca49717b8497a2798bf',
'index': 4,
'document': {'id': '25e78e92da17f01df111a7ed2716b057',
'text': '"Take Five" is a jazz standard composed by Paul Desmond and originally recorded by the Dave Brubeck Quartet for their album Time Out on July 1, 1959. Two years later it became a surprise hit and the biggest-selling jazz single ever. The single was inducted into the Grammy Hall of Fame in 1996. It became the first jazz single to surpass a million in sales.'},
'relevance_score': 0.204337015748024,
'usage': {'id': '6d55f32b339b83350ffb9489fbf31f5d', 'total_tokens': 80}},
{'id': '50a610653b307f6f1ae6ec796b72ca83',
'index': 9,
'document': {'id': '70278633234c32775b1a28b364f6783a',
'text': 'Oh, You Crazy Moon is a jazz standard by Jimmy Van Heusen, with lyrics by Johnny Burke. It was recorded by Mel Torme in 1960 and Frank Sinatra in 1965.'},
'relevance_score': 0.16270869970321655,
'usage': {'id': '79eabc46bf3c659d3ad3e4d4d7e7a8f2', 'total_tokens': 40}}]
以上です。異なるクエリで試してみて、どのような結果が得られるか確認してください。
tagJina の埋め込みと再ランカー:Azure 上のエンタープライズ向け AI
Jina AI は、ビジネスが必要とする実際のアプリケーションに最先端の AI を提供することに注力しています。Azure Marketplace に私たちのモデルを配置することで、ビジネスプロセスへの AI 追加の障壁を取り除き、既存の Azure プランの一部として課金される簡単な統合を実現します。
Jina Embeddings と Jina Reranker を使用している、または使用を検討しているすべての方からのフィードバックを歓迎します。私たちのウェブサイトを通じて、またはDiscord チャンネルに参加して、フィードバックを共有し、Jina AI の急速に発展するサービスについての最新情報を入手してください。私たちは包括的な AI エコシステムを信じており、あなたのユースケースについてお話しできることを楽しみにしています。

