Jina Embeddings e Rerankers sono ora disponibili su Azure Marketplace. Questa integrazione è importante per le aziende in cui la sicurezza dei dati e l'efficienza operativa sono priorità assolute.


Abbiamo sette modelli disponibili:
- 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
tagProgettato per Privacy e Prestazioni
Garantire la sicurezza dei tuoi dati è la nostra massima priorità. La nostra partnership con Azure ci permette di offrire soluzioni AI che soddisfano la domanda di privacy dei dati ed efficienza. Gli standard di privacy senza pari di Azure garantiscono la massima protezione dei tuoi dati, rendendola una piattaforma affidabile per sanità, finanza e altri settori che richiedono una protezione critica dei dati. Se sei già cliente Azure, puoi ottenere tutti i benefici dei modelli all'avanguardia Embedding e Reranker di Jina AI con il tuo abbonamento esistente.
tagIntegrazione Perfetta e Alta Scalabilità
Il deployment su Azure non solo garantisce la privacy ma offre anche una perfetta integrazione con i tuoi servizi Azure esistenti. Questo fornisce una transizione fluida e ti permette di scalare i tuoi deployment AI per soddisfare le domande fluttuanti senza compromettere le prestazioni.
tagIniziare con Azure
In questo tutorial, creeremo un'applicazione di ricerca per la musica. Vogliamo cercare non con il titolo esatto della canzone, ma con una query ambigua che metta davvero alla prova la qualità dei nostri modelli di ricerca foundation.
Per farlo, il primo passo è configurare tutto su Azure.
tagRegistrarsi su Azure
Assicurati di avere un abbonamento Azure con un metodo di pagamento valido. Puoi registrarti per un account sulla home page di Azure se non ne hai già uno.
tagDeployment dei modelli Jina su Azure
Nel Azure Marketplace, puoi trovare tutti i modelli embedding e reranker di Jina AI cercando "jina". Scegli quello che meglio si adatta alle tue esigenze.

Nella scheda Basics della configurazione del deployment, dovrai fornire alcuni dettagli sul tuo deployment. Per impostazione predefinita, la configurazione è impostata per utilizzare quattro core CPU e 8 GB di memoria. A seconda delle tue esigenze specifiche, puoi regolare queste impostazioni per adattarle meglio alle esigenze della tua applicazione.

Questo avvierà il deployment. Potrebbe richiedere alcuni minuti. Dopo questo, dovresti vedere la seguente schermata:

I tuoi modelli sono ora deployati e pronti all'uso.
tagTutorial: Ricerca di Canzoni
In questo tutorial, userai i tuoi deployment Azure per costruire un motore di ricerca di base per una collezione di file di dati sulla musica popolare.
tagCaricare il Dataset
from datasets import load_dataset
dataset = load_dataset("sander-wood/wikimusictext")
Questo carica il dataset WikiMusicText (WikiMT).
tagAvviare gli Endpoint Jina Embeddings v2 e Reranker
Prima, implementa gli endpoint di embedding e reranker nel portale Azure. Dovrai decidere quale regione utilizzare e assegnare un prefisso DNS al servizio di embedding e un altro al servizio reranker. Quindi, memorizza queste informazioni nelle variabili embeddings_url
e reranker_url
nel codice sottostante.
Le funzioni jina_embed
e jina_rerank
generano embedding di testo ed eseguono riordinamenti facendo richieste a un'API ospitata su 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"]
tagCaricare il Dataset
Questi dati sono stati raccolti per l'addestramento del modello AI e pertanto dividono i dati in dataset di training e di test. Per semplicità, in questo tutorial useremo solo i dati di training. Il codice seguente converte i dati di training in un DataFrame di pandas
:
ds = dataset['train']
input_df = ds.dataset.to_pandas()
tagGenerare Embeddings e Creare un Indice in FAISS
Questa funzione elabora i dati testuali ed estrae caratteristiche sotto forma di embeddings. Ci vorrà un po' di tempo.
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)
Questo codice itera su ogni voce nella colonna text
del DataFrame e chiama jina_embed()
per ottenere un embedding. Memorizziamo gli embeddings come array NumPy nella lista all_embeddings
. Quindi li aggiungiamo a una nuova colonna nel DataFrame chiamata embeddings
.
Possiamo visualizzare ciò che abbiamo appena fatto stampando il valore di enhanced_dataframe
:

L'ultima colonna contiene gli embeddings in forma leggibile.
Ora dobbiamo creare un indice FAISS (Facebook AI Similarity Search) per memorizzare e ricercare gli embeddings:
import faiss
dim = 768 # dimensione degli embedding di 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)
Questo codice normalizza anche i vettori di embedding per semplificare e velocizzare la ricerca.
tagRecuperare le Corrispondenze per la Query
La funzione find_similar_texts
cerca nell'indice appena creato le corrispondenze più vicine:
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
tagRiordinare per Ottenere le Corrispondenze più Rilevanti
Dopo aver recuperato i risultati dall'indice FAISS, invieremo l'insieme dei risultati alla funzione jina_rerank
per assegnare a tutte le risposte un punteggio di rilevanza e restituire una lista ordinata di risultati per rilevanza.
Usiamo una query che richiede molta comprensione semantica per testare la nostra soluzione:
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)
Ecco i risultati più rilevanti:
[{'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}}]
Ed è tutto. Provalo tu stesso con diverse query e vedi che risultati ottieni.
tagJina Embeddings e Rerankers: AI Pronta per l'Impresa su Azure
Jina AI si concentra nel portare l'AI all'avanguardia alle imprese per applicazioni reali di cui le aziende hanno bisogno. Posizionare i nostri modelli su Azure Marketplace rimuove le barriere per aggiungere l'AI ai tuoi processi aziendali, rendendo l'integrazione semplice e fatturandoti come parte del tuo piano Azure esistente.
Apprezziamo il feedback da chiunque stia utilizzando o stia considerando di utilizzare Jina Embeddings e Jina Reranker. Contattaci tramite il nostro sito web o unisciti al nostro canale Discord per condividere feedback e rimanere aggiornato sulle offerte in rapida evoluzione di Jina AI. Crediamo in un ecosistema AI inclusivo e ci piacerebbe parlare con te dei tuoi casi d'uso.

