Notizia
Modelli
Prodotti
keyboard_arrow_down
Lettore
Leggi gli URL e cerca sul web per ottenere LLM più approfonditi.
Incorporamenti
Incorporamenti multilingue multimodali di livello mondiale.
Riclassificazione
Recupero neurale di livello mondiale per massimizzare la pertinenza della ricerca.
Ricerca profonda
Cerca, leggi e ragiona finché non trovi la risposta migliore.
Di più
keyboard_arrow_down
Classificatore
Classificazione zero-shot e few-shot per immagini e testo.
Segmentatore
Tagliare il testo lungo in blocchi ed effettuare la tokenizzazione.

Documentazione API
Generazione automatica di codice per il tuo IDE o LLM di Copilot
open_in_new


Azienda
keyboard_arrow_down
Chi siamo
Contatta le vendite
Programma di stagista
Unisciti a noi
open_in_new
Scarica il logo
open_in_new
Termini & Condizioni


Login
login
Progettato per Privacy e Prestazioni
Integrazione Perfetta e Alta Scalabilità
Iniziare con Azure
Tutorial: Ricerca di Canzoni
Jina Embeddings e Rerankers: AI Pronta per l'Impresa su Azure
Blog tecnico
aprile 29, 2024

Jina Embeddings e Reranker su Azure: Soluzioni AI Scalabili Pronte per il Business

Jina Embeddings e Rerankers sono ora disponibili su Azure Marketplace. Le aziende che danno priorità alla privacy e alla sicurezza possono ora integrare facilmente i modelli all'avanguardia di Jina AI direttamente nel loro ecosistema Azure esistente.
Futuristic black background with a purple 3D grid, featuring the "Embeddings" and "Reranker" logos with a stylized "A".
Susana Guzmán
Susana Guzmán • 7 minuti letti

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.

Jina AI Launches World's First Open-Source 8K Text Embedding, Rivaling OpenAI
Jina AI introduces jina-embeddings-v2, the world's first open-source model boasting an 8K context length. Matching the prowess of OpenAI's proprietary models, this innovation is now publicly accessible on Huggingface, signaling a significant milestone in the landscape of text embeddings.
Maximizing Search Relevance and RAG Accuracy with Jina Reranker
Boost your search and RAG accuracy with Jina Reranker. Our new model improves the accuracy and relevance by 20% over simple vector search. Try it now for free!

Abbiamo sette modelli disponibili:

  1. Jina Embeddings v2 Base - code
  2. Jina Embeddings v2 Base - de
  3. Jina Embeddings v2 Base - zh
  4. Jina Embeddings v2 Base - es
  5. Jina Embeddings v2 Base - en
  6. Jina Reranker v1 Base - en
  7. Jina Reranker v1 Turbo - en
  8. Jina Reranker v1 Tiny - en
  9. 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.

Screenshot 2024-04-17 at 15.12.54

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.

Screenshot 2024-04-23 at 16.41.29

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

Screenshot 2024-04-17 at 15.16.21

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.

💡
Puoi anche seguire questo tutorial su Colab o scaricarlo ed eseguirlo nel tuo notebook.

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:

Screenshot 2024-04-22 at 12.39.07

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.

Jina AI - Your Search Foundation, Supercharged.
Jina AI offers best-in-class embeddings, reranker and prompt optimizer, enabling advanced multimodal AI.
Your Search Foundation, Supercharged.
Join the Jina AI Discord Server!
Check out the Jina AI community on Discord - hang out with 4981 other members and enjoy free voice and text chat.
Discord
Categorie:
Blog tecnico
rss_feed
Uffici
location_on
Sunnyvale, California
710 Lakeway Dr, Ste 200, Sunnyvale, CA 94085, Stati Uniti
location_on
Berlino, Germania (sede centrale)
Prinzessinnenstraße 19-20, 10969 Berlino, Germania
location_on
Pechino, Cina
Livello 5, Edificio 6, No.48 Haidian West St. Pechino, Cina
location_on
Shenzen, Cina
402 Piano 4, Fu'an Technology Building, Shenzhen, Cina
Fondazione di ricerca
Lettore
Incorporamenti
Riclassificazione
Ricerca profonda
Classificatore
Segmentatore
Documentazione API
Ottieni la chiave API Jina
Limite di velocità
Stato dell'API
Azienda
Chi siamo
Contatta le vendite
Sala stampa
Programma di stagista
Unisciti a noi
open_in_new
Scarica il logo
open_in_new
Termini
Sicurezza
Termini & Condizioni
Privacy
Gestisci i cookie
email
Jina AI © 2020-2025.