Les Embeddings et Rerankers Jina sont maintenant disponibles sur Azure Marketplace. Cette intégration est importante pour les entreprises où la sécurité des données et l'efficacité opérationnelle sont des priorités absolues.


Nous proposons sept modèles :
- 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
tagConçu pour la Confidentialité et la Performance
Assurer la sécurité de vos données est notre priorité absolue. Notre partenariat avec Azure nous permet d'offrir des solutions d'IA qui répondent aux exigences de confidentialité des données et d'efficacité. Les normes de confidentialité inégalées d'Azure garantissent la protection la plus stricte de vos données, faisant de cette plateforme une solution de confiance pour les secteurs de la santé, de la finance et autres domaines nécessitant une protection critique des données. Si vous êtes déjà client Azure, vous pouvez bénéficier de tous les avantages des modèles de pointe Embedding et Reranker de Jina AI avec votre abonnement existant.
tagIntégration Transparente et Haute Évolutivité
Le déploiement sur Azure garantit non seulement la confidentialité mais offre également une intégration transparente avec vos services Azure existants. Cela permet une transition en douceur et vous permet d'adapter vos déploiements d'IA pour répondre aux demandes fluctuantes sans compromettre les performances.
tagDémarrer avec Azure
Dans ce tutoriel, nous allons créer une application de recherche pour la musique. Nous voulons effectuer des recherches non pas avec le titre exact de la chanson, mais avec une requête ambiguë qui teste vraiment la qualité de nos modèles de recherche fondamentaux.
Pour cela, la première étape consiste à tout configurer sur Azure.
tagS'inscrire sur Azure
Assurez-vous d'avoir un abonnement Azure avec un mode de paiement valide. Vous pouvez vous inscrire pour un compte sur la page d'accueil Azure si vous n'en avez pas déjà un.
tagDéployer les modèles Jina sur Azure
Sur l'Azure Marketplace, vous pouvez trouver tous les modèles d'embedding et de reranker de Jina AI en recherchant "jina". Choisissez celui qui correspond le mieux à vos besoins.

Dans l'onglet Basics de la configuration du déploiement, vous devrez fournir quelques détails sur votre déploiement. Par défaut, la configuration est définie pour utiliser quatre cœurs CPU et 8 Go de mémoire. Selon vos besoins spécifiques, vous pouvez ajuster ces paramètres pour mieux correspondre aux exigences de votre application.

Cela lancera le déploiement. Cela peut prendre plusieurs minutes. Après cela, vous devriez voir l'écran suivant :

Vos modèles sont maintenant déployés et prêts à être utilisés.
tagTutoriel : Rechercher des Chansons
Dans ce tutoriel, vous utiliserez vos déploiements Azure pour construire un moteur de recherche de base pour une collection de fichiers de données sur la musique populaire.
tagCharger le Dataset
from datasets import load_dataset
dataset = load_dataset("sander-wood/wikimusictext")
Cela charge le dataset WikiMusicText (WikiMT).
tagDémarrer les points de terminaison Jina Embeddings v2 et Reranker
Tout d'abord, déployez les points de terminaison embedding et reranker dans le portail Azure. Vous devrez décider quelle région utiliser et attribuer un préfixe DNS au service d'embedding et un autre au service de reranker. Ensuite, stockez ces informations dans les variables embeddings_url et reranker_url dans le code ci-dessous.
Les fonctions jina_embed et jina_rerank génèrent des embeddings de texte et effectuent des reclassements en faisant des requêtes à une API hébergée sur Azure.
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"]
tagCharger le jeu de données
Ces données ont été collectées pour l'entraînement de modèles d'IA et sont donc divisées en jeux de données d'entraînement et de test. Pour plus de simplicité, nous n'utiliserons que les données d'entraînement dans ce tutoriel. Le code ci-dessous convertit les données d'entraînement en DataFrame pandas :
ds = dataset['train']
input_df = ds.dataset.to_pandas()
tagGénérer les embeddings et créer un index dans FAISS
Cette fonction traite les données textuelles et extrait les caractéristiques sous forme d'embeddings. Cela prendra un certain temps.
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)
Ce code parcourt chaque entrée dans la colonne text du DataFrame et appelle jina_embed() pour obtenir un embedding. Nous stockons les embeddings sous forme de tableaux NumPy dans la liste all_embeddings. Ils sont ensuite ajoutés dans une nouvelle colonne du DataFrame appelée embeddings.
Nous pouvons visualiser ce que nous venons de faire en affichant la valeur de enhanced_dataframe :

La dernière colonne contient les embeddings sous une forme lisible.
Maintenant, nous devons créer un index FAISS (Facebook AI Similarity Search) pour stocker et rechercher dans les embeddings :
import faiss
dim = 768 # dimension des embeddings 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)
Ce code normalise également les vecteurs d'embedding pour simplifier et accélérer la recherche.
tagRécupérer les correspondances pour une requête
La fonction find_similar_texts recherche dans l'index que vous venez de créer les correspondances les plus proches :
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
tagReclasser pour obtenir les correspondances les plus pertinentes
Après avoir récupéré les résultats de l'index FAISS, nous enverrons l'ensemble des résultats à la fonction jina_rerank pour attribuer un score de pertinence à toutes les réponses, et retourner une liste triée des résultats par pertinence.
Utilisons une requête qui nécessite beaucoup de compréhension sémantique pour tester notre solution :
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)
Voici les résultats les plus pertinents :
[{'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}}]
Et voilà. Essayez vous-même avec différentes requêtes et voyez quels résultats vous obtenez.
tagJina Embeddings et Rerankers : L'IA prête pour l'entreprise sur Azure
Jina AI se concentre sur l'apport de l'IA de pointe aux entreprises pour des applications réelles dont les entreprises ont besoin. Placer nos modèles sur Azure Marketplace supprime les obstacles à l'ajout d'IA à vos processus métier, rendant l'intégration simple et la facturation dans le cadre de votre plan Azure existant.
Nous apprécions les retours de tous ceux qui utilisent ou envisagent d'utiliser Jina Embeddings et Jina Reranker. Contactez-nous via notre site web ou rejoignez notre canal Discord pour partager vos retours et rester informé des offres en rapide évolution de Jina AI. Nous croyons en un écosystème d'IA inclusif et aimerions discuter de vos cas d'utilisation.









