Jina Embeddings und Rerankers sind jetzt im Azure Marketplace verfügbar. Diese Integration ist besonders wichtig für Unternehmen, bei denen Datensicherheit und betriebliche Effizienz oberste Priorität haben.


Wir haben sieben Modelle verfügbar:
- 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
tagEntwickelt für Datenschutz und Leistung
Die Sicherheit Ihrer Daten ist unsere oberste Priorität. Unsere Partnerschaft mit Azure ermöglicht es uns, KI-Lösungen anzubieten, die den Anforderungen an Datenschutz und Effizienz gerecht werden. Die unübertroffenen Datenschutzstandards von Azure gewährleisten den strengsten Schutz Ihrer Daten und machen es zu einer vertrauenswürdigen Plattform für das Gesundheitswesen, Finanzwesen und andere Bereiche, die kritischen Datenschutz erfordern. Wenn Sie bereits Azure-Kunde sind, können Sie alle Vorteile der hochmodernen Embedding- und Reranker-Modelle von Jina AI mit Ihrem bestehenden Abonnement nutzen.
tagNahtlose Integration und hohe Skalierbarkeit
Die Bereitstellung auf Azure gewährleistet nicht nur den Datenschutz, sondern ermöglicht auch eine nahtlose Integration mit Ihren bestehenden Azure-Diensten. Dies ermöglicht einen reibungslosen Übergang und erlaubt es Ihnen, Ihre KI-Implementierungen zu skalieren, um schwankenden Anforderungen gerecht zu werden, ohne Kompromisse bei der Leistung einzugehen.
tagErste Schritte mit Azure
In diesem Tutorial erstellen wir eine Suchanwendung für Musik. Wir möchten nicht nur nach dem exakten Titel des Songs suchen können, sondern auch mit mehrdeutigen Anfragen, die die Qualität unserer Search Foundation Models auf die Probe stellen.
Der erste Schritt dazu ist die Einrichtung auf Azure.
tagFür Azure registrieren
Stellen Sie sicher, dass Sie ein Azure-Konto-Abonnement mit einer gültigen Zahlungsmethode haben. Falls Sie noch kein Konto haben, können Sie sich auf der Azure-Startseite registrieren.
tagJina-Modelle auf Azure bereitstellen
Im Azure Marketplace finden Sie alle Embedding- und Reranker-Modelle von Jina AI, indem Sie nach "jina" suchen. Wählen Sie das Modell aus, das am besten zu Ihren Anforderungen passt.

Im Basics-Tab der Bereitstellungseinrichtung müssen Sie einige Details zu Ihrer Bereitstellung angeben. Standardmäßig ist die Konfiguration auf vier CPU-Kerne und 8 GB Arbeitsspeicher eingestellt. Je nach Ihren spezifischen Anforderungen können Sie diese Einstellungen anpassen, um sie besser an die Bedürfnisse Ihrer Anwendung anzupassen.

Dies startet die Bereitstellung. Es kann einige Minuten dauern. Danach sollten Sie den folgenden Bildschirm sehen:

Ihre Modelle sind jetzt bereitgestellt und einsatzbereit.
tagTutorial: Nach Songs suchen
In diesem Tutorial werden Sie Ihre Azure-Bereitstellungen nutzen, um eine grundlegende Suchmaschine für eine Sammlung von Datendateien über populäre Musik zu erstellen.
tagDatensatz laden
from datasets import load_dataset
dataset = load_dataset("sander-wood/wikimusictext")
Dies lädt den WikiMusicText (WikiMT) Datensatz.
tagJina Embeddings v2 und Reranker Endpoints starten
Stellen Sie zuerst die Embedding- und Reranker-Endpunkte im Azure-Portal bereit. Sie müssen entscheiden, welche Region Sie verwenden möchten und dem Embedding-Service und dem Reranker-Service jeweils ein DNS-Präfix zuweisen. Speichern Sie diese Informationen dann in den Variablen embeddings_url und reranker_url im nachfolgenden Code.
Die Funktionen jina_embed und jina_rerank generieren Text-Embeddings und führen Reranking durch, indem sie Anfragen an eine auf Azure gehostete API senden.
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"]
tagDatensatz laden
Diese Daten wurden für das Training von KI-Modellen gesammelt und teilen die Daten daher in Trainings- und Testdatensätze auf. Der Einfachheit halber verwenden wir in diesem Tutorial nur die Trainingsdaten. Der folgende Code konvertiert die Trainingsdaten in einen pandas DataFrame:
ds = dataset['train']
input_df = ds.dataset.to_pandas()
tagEmbeddings generieren und einen Index in FAISS erstellen
Diese Funktion verarbeitet Textdaten und extrahiert Merkmale in Form von Embeddings. Dies wird einige Zeit in Anspruch nehmen.
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)
Dieser Code durchläuft jeden Eintrag in der text-Spalte des DataFrames und ruft jina_embed() auf, um ein Embedding zu erhalten. Wir speichern die Embeddings als NumPy-Arrays in der Liste all_embeddings. Anschließend werden sie in einer neuen Spalte namens embeddings im DataFrame hinzugefügt.
Wir können visualisieren, was wir gerade gemacht haben, indem wir den Wert von enhanced_dataframe ausgeben:

Die letzte Spalte enthält die Embeddings in lesbarer Form.
Jetzt müssen wir einen FAISS (Facebook AI Similarity Search) Index erstellen, um die Embeddings zu speichern und zu durchsuchen:
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)
Dieser Code normalisiert auch die Embedding-Vektoren, um die Suche zu vereinfachen und zu beschleunigen.
tagÜbereinstimmungen für Abfrage abrufen
Die Funktion find_similar_texts durchsucht den gerade erstellten Index nach den nächstgelegenen Übereinstimmungen:
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
tagNeuordnung für relevanteste Übereinstimmungen
Nach dem Abrufen der Ergebnisse aus dem FAISS-Index senden wir die Ergebnismenge an die Funktion jina_rerank, um allen Antworten einen Relevanzwert zuzuweisen und eine nach Relevanz sortierte Ergebnisliste zurückzugeben.
Lasst uns eine Abfrage verwenden, die viel semantisches Verständnis erfordert, um unsere Lösung zu testen:
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)
Hier sind die relevantesten Ergebnisse:
[{'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}}]
Und das war's. Probieren Sie es selbst mit verschiedenen Abfragen aus und sehen Sie, welche Ergebnisse Sie erhalten.
tagJina Embeddings und Rerankers: Enterprise-Ready KI auf Azure
Jina AI konzentriert sich darauf, modernste KI für Unternehmen für reale Anwendungen bereitzustellen, die Unternehmen benötigen. Die Bereitstellung unserer Modelle im Azure Marketplace beseitigt Hindernisse bei der Integration von KI in Ihre Geschäftsprozesse und macht die Integration einfach, wobei die Abrechnung im Rahmen Ihres bestehenden Azure-Plans erfolgt.
Wir schätzen den Input von allen, die Jina Embeddings und Jina Reranker nutzen oder deren Nutzung in Erwägung ziehen. Kontaktieren Sie uns über unsere Website oder treten Sie unserem Discord-Channel bei, um Feedback zu teilen und über Jina AIs sich schnell entwickelnde Angebote auf dem Laufenden zu bleiben. Wir glauben an ein inklusives KI-Ökosystem und würden gerne mit Ihnen über Ihre Anwendungsfälle sprechen.










