Los Jina Embeddings y Rerankers están ahora disponibles en Azure Marketplace. Esta integración es importante para empresas donde la seguridad de datos y la eficiencia operativa son prioridades principales.


Tenemos siete modelos disponibles:
- 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
tagConstruido para Privacidad y Rendimiento
Garantizar que tus datos estén seguros es nuestra principal prioridad. Nuestra asociación con Azure nos permite ofrecer soluciones de IA que satisfacen la demanda de privacidad de datos y eficiencia. Los estándares de privacidad sin igual de Azure aseguran la protección más estricta de tus datos, convirtiéndolo en una plataforma confiable para sectores de salud, finanzas y otros que requieren protección crítica de datos. Si eres un cliente existente de Azure, puedes obtener todos los beneficios de los modelos de Embedding y Reranker de última generación de Jina AI con tu suscripción existente.
tagIntegración Sin Problemas y Alta Escalabilidad
Implementar en Azure no solo asegura la privacidad sino que también te proporciona una integración sin problemas con tus servicios existentes de Azure. Esto proporciona una transición suave y te permite escalar tus implementaciones de IA para satisfacer demandas fluctuantes sin comprometer el rendimiento.
tagComienza con Azure
En este tutorial, crearemos una aplicación de búsqueda para música. Queremos buscar no con el título exacto de la canción, sino con una consulta ambigua que realmente ponga a prueba la calidad de nuestros modelos base de búsqueda.
Para hacer eso, el primer paso es configurar todo en Azure.
tagRegístrate en Azure
Asegúrate de tener una suscripción a Azure con un método de pago válido. Puedes registrarte para obtener una cuenta en la página principal de Azure si aún no tienes una.
tagImplementando modelos Jina en Azure
En el Azure Marketplace, puedes encontrar todos los modelos de embedding y reranker de Jina AI buscando "jina". Elige el que mejor se adapte a tus necesidades.

En la pestaña Básicos de la configuración de implementación, deberás proporcionar algunos detalles sobre tu implementación. Por defecto, la configuración está establecida para usar cuatro núcleos de CPU y 8 GB de memoria. Dependiendo de tus requisitos específicos, puedes ajustar estas configuraciones para adaptarlas mejor a las necesidades de tu aplicación.

Esto iniciará la implementación. Puede tomar varios minutos. Después de esto, deberías ver la siguiente pantalla:

Tus modelos ahora están implementados y listos para usar.
tagTutorial: Búsqueda de Canciones
En este tutorial, usarás tus implementaciones de Azure para construir un motor de búsqueda básico para una colección de archivos de datos sobre música popular.
tagCargar el Dataset
from datasets import load_dataset
dataset = load_dataset("sander-wood/wikimusictext")
Esto carga el dataset WikiMusicText (WikiMT).
tagIniciar Endpoints de Jina Embeddings v2 y Reranker
Primero, implementa los endpoints de embedding y reranker en el portal de Azure. Necesitarás decidir qué región usar y asignar un prefijo DNS al servicio de embedding y otro al servicio de reranker. Luego, almacena esa información en las variables embeddings_url y reranker_url en el código siguiente.
Las funciones jina_embed y jina_rerank generan embeddings de texto y realizan reranking haciendo solicitudes a una API alojada en 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"]
tagCargar el Dataset
Estos datos fueron recopilados para el entrenamiento de modelos de IA y por lo tanto dividen los datos en conjuntos de entrenamiento y prueba. Para simplificar, solo usaremos los datos de entrenamiento en este tutorial. El código siguiente convierte los datos de entrenamiento en un DataFrame de pandas:
ds = dataset['train']
input_df = ds.dataset.to_pandas()
tagGenerar Embeddings y Crear un Índice en FAISS
Esta función procesa datos de texto y extrae características en forma de embeddings. Esto tomará algo de tiempo.
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)
Este código itera sobre cada entrada en la columna text del DataFrame y llama a jina_embed() para obtener un embedding. Almacenamos los embeddings como arrays NumPy en la lista all_embeddings. Luego los añade a una nueva columna en el DataFrame llamada embeddings.
Podemos visualizar lo que acabamos de hacer imprimiendo el valor de enhanced_dataframe:

La última columna contiene los embeddings en forma legible.
Ahora necesitamos crear un índice FAISS (Facebook AI Similarity Search) para almacenar y buscar a través de los embeddings:
import faiss
dim = 768 # dimensión de los embeddings de 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)
Este código también normaliza los vectores de embedding para simplificar y acelerar la búsqueda.
tagRecuperar Coincidencias para la Consulta
La función find_similar_texts busca en el índice que acabas de crear las coincidencias más cercanas:
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
tagReordenar para Obtener las Coincidencias más Relevantes
Después de recuperar resultados del índice FAISS, enviaremos el conjunto de resultados a la función jina_rerank para asignar a todas las respuestas una puntuación de relevancia y devolver una lista ordenada de resultados por relevancia.
Usemos una consulta que necesite mucha comprensión semántica para probar nuestra solución:
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)
Aquí están los resultados más relevantes:
[{'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}}]
Y eso es todo. Pruébalo tú mismo con diferentes consultas y ve qué resultados obtienes.
tagJina Embeddings y Rerankers: IA Lista para Empresas en Azure
Jina AI se enfoca en llevar la IA de última generación a las empresas para aplicaciones reales que los negocios necesitan. Colocar nuestros modelos en Azure Marketplace elimina las barreras para añadir IA a tus procesos de negocio, haciendo la integración simple y facturándote como parte de tu plan existente de Azure.
Valoramos la opinión de todos los que usan o consideran usar Jina Embeddings y Jina Reranker. Contáctanos a través de nuestro sitio web o únete a nuestro canal de Discord para compartir comentarios y mantenerte al día con las ofertas en rápido desarrollo de Jina AI. Creemos en un ecosistema de IA inclusivo y nos encantaría hablar contigo sobre tus casos de uso.









