Jina Embeddings 和 Rerankers 現已在 Azure Marketplace 上架。對於將資料安全性和營運效率視為首要任務的公司而言,這項整合尤為重要。


我們有七個可用的模型:
- 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 最先進的嵌入和重排序模型的所有優勢。
tag無縫整合和高擴展性
在 Azure 上部署不僅確保隱私,還能與您現有的 Azure 服務無縫整合。這提供了順暢的過渡,並讓您能夠擴展 AI 部署以應對不斷變化的需求,同時不會影響性能。
tag開始使用 Azure
在本教學中,我們將建立一個音樂搜尋應用程式。我們想要使用的不是歌曲的精確標題,而是一個模糊的查詢,真正測試我們的搜尋基礎模型的品質。
為此,第一步是在 Azure 上設置所有內容。
tag註冊 Azure
確保您擁有具有有效付款方式的 Azure 帳戶訂閱。如果您還沒有帳戶,可以在 Azure 首頁註冊一個。
tag在 Azure 上部署 Jina 模型
在 Azure Marketplace 上,您可以透過搜尋 "jina" 找到所有 Jina AI 的嵌入和重排序模型。從中選擇最適合您需求的模型。

在部署設置的基本標籤中,您需要提供有關部署的一些詳細信息。預設配置設定為使用四個 CPU 核心和 8 GB 的記憶體。根據您的具體要求,您可以調整這些設置以更好地滿足您的應用程式需求。

這將開始部署。可能需要幾分鐘時間。完成後,您應該會看到以下畫面:

您的模型現在已部署完成並可以使用。
tag教學:搜尋歌曲
在本教學中,您將使用您的 Azure 部署來為流行音樂的數據文件集合建立一個基本搜尋引擎。
tag載入數據集
from datasets import load_dataset
dataset = load_dataset("sander-wood/wikimusictext")
這將載入 WikiMusicText (WikiMT) 數據集。
tag啟動 Jina Embeddings v2 和 Reranker 端點
首先,在 Azure 入口網站中部署嵌入和重排序端點。您需要決定使用哪個區域,並為嵌入服務和重排序服務分別指派一個 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生成 Embeddings 並在 FAISS 中建立索引
此函數處理文字資料並以 embeddings 的形式提取特徵。這將需要一些時間。
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() 來獲取 embedding。我們將 embeddings 以 NumPy 陣列的形式存儲在 all_embeddings 列表中。然後將其添加到 DataFrame 的新欄位 embeddings 中。
我們可以透過印出 enhanced_dataframe 的值來視覺化我們剛剛做的事:

最後一欄以可讀形式包含了 embeddings。
現在我們需要建立一個 FAISS(Facebook AI Similarity Search)索引來儲存和搜尋 embeddings:
import faiss
dim = 768 # dimension of Jina v2 embeddings
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)
此程式碼還對 embedding 向量進行標準化以簡化並加速搜尋。
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 Embeddings 和 Rerankers:Azure 上的企業級 AI
Jina AI 致力於為企業帶來最先進的 AI,用於企業所需的實際應用。將我們的模型放在 Azure Marketplace 上消除了將 AI 添加到業務流程中的障礙,使整合變得簡單,並作為現有 Azure 計劃的一部分向你收費。
我們重視每一位正在使用或考慮使用 Jina Embeddings 和 Jina Reranker 的人的意見。透過我們的網站聯繫我們或加入我們的 Discord 頻道分享反饋,並隨時了解 Jina AI 快速發展的產品。我們相信包容性的 AI 生態系統,很樂意與你討論你的使用案例。










