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 部署,以满足波动的需求,同时不影响性能。
tagAzure 入门
在本教程中,我们将创建一个音乐搜索应用。我们想要使用模糊查询而不是歌曲的确切标题来搜索,这真正考验了我们搜索底座模型的质量。
为此,第一步是在 Azure 上设置所有内容。
tag注册 Azure
确保您拥有带有有效付款方式的 Azure 账户订阅。如果您还没有账户,可以在 Azure 首页注册。
tag在 Azure 上部署 Jina 模型
在 Azure Marketplace 上,您可以通过搜索"jina"找到所有 Jina AI 的嵌入和重排序模型。从中选择最适合您需求的模型。

在部署设置的基本选项卡中,您需要提供有关部署的一些详细信息。默认配置设置为使用四个 CPU 核心和 8GB 内存。根据您的具体需求,您可以调整这些设置以更好地满足您的应用需求。

这将开始部署。可能需要几分钟时间。之后,您应该看到以下屏幕:

您的模型现在已部署并准备使用。
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生成嵌入并在 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 列表中。然后将它们添加到 DataFrame 的一个名为 embeddings 的新列中。
我们可以通过打印 enhanced_dataframe 的值来可视化我们刚才所做的事情:

最后一列以可读形式包含了嵌入。
现在我们需要创建一个 FAISS(Facebook AI Similarity Search)索引来存储和搜索嵌入:
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)
此代码还对嵌入向量进行归一化,以简化和加快搜索速度。
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 生态系统,很乐意与您讨论您的使用场景。










