Jina Embeddings и Rerankers теперь доступны на Azure Marketplace. Эта интеграция важна для компаний, где безопасность данных и эффективность работы являются главными приоритетами.


У нас доступны семь моделей:
- 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
tagСозданы для конфиденциальности и производительности
Обеспечение безопасности ваших данных — наш главный приоритет. Наше партнерство с Azure позволяет нам предлагать AI-решения, отвечающие требованиям конфиденциальности данных и эффективности. Непревзойденные стандарты конфиденциальности Azure обеспечивают строжайшую защиту ваших данных, делая его надежной платформой для здравоохранения, финансов и других секторов, требующих критической защиты данных. Если вы уже являетесь клиентом Azure, вы можете получить все преимущества современных моделей Embedding и Reranker от Jina AI с вашей существующей подпиской.
tagБесшовная интеграция и высокая масштабируемость
Развертывание на Azure не только обеспечивает конфиденциальность, но и дает вам бесшовную интеграцию с существующими сервисами Azure. Это обеспечивает плавный переход и позволяет масштабировать ваши AI-развертывания, чтобы соответствовать меняющимся требованиям без ущерба для производительности.
tagНачало работы с Azure
В этом руководстве мы создадим приложение для поиска музыки. Мы хотим осуществлять поиск не по точному названию песни, а с помощью неоднозначного запроса, который действительно проверяет качество наших базовых моделей поиска.
Для этого первым шагом является настройка всего в Azure.
tagРегистрация в Azure
Убедитесь, что у вас есть подписка Azure с действующим способом оплаты. Вы можете зарегистрировать аккаунт на главной странице Azure, если у вас его еще нет.
tagРазвертывание моделей Jina в Azure
На Azure Marketplace вы можете найти все модели embedding и reranker от Jina AI, выполнив поиск по слову "jina". Выберите ту, которая лучше всего соответствует вашим потребностям.

На вкладке "Основные" настройки развертывания вам нужно будет указать некоторые детали вашего развертывания. По умолчанию конфигурация настроена на использование четырех ядер CPU и 8 ГБ памяти. В зависимости от ваших конкретных требований, вы можете настроить эти параметры в соответствии с потребностями вашего приложения.

Это запустит развертывание. Это может занять несколько минут. После этого вы должны увидеть следующий экран:

Теперь ваши модели развернуты и готовы к использованию.
tagРуководство: Поиск песен
В этом руководстве вы будете использовать ваши развертывания Azure для создания базового поискового движка для коллекции файлов данных о популярной музыке.
tagЗагрузка набора данных
from datasets import load_dataset
dataset = load_dataset("sander-wood/wikimusictext")
Это загружает набор данных WikiMusicText (WikiMT).
tagЗапуск конечных точек Jina Embeddings v2 и Reranker
Сначала разверните конечные точки embedding и reranker на портале Azure. Вам нужно будет решить, какой регион использовать и назначить один DNS-префикс для сервиса embeddings и другой для сервиса reranker. Затем сохраните эту информацию в переменных embeddings_url
и reranker_url
в коде ниже.
Функции jina_embed
и jina_rerank
генерируют текстовые embeddings и выполняют переранжирование путем отправки запросов к API, размещенному на 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"]
tagЗагрузка набора данных
Эти данные были собраны для обучения моделей ИИ и поэтому разделены на тренировочные и тестовые наборы. Для простоты в этом руководстве мы будем использовать только тренировочные данные. Следующий код преобразует тренировочные данные в DataFrame pandas
:
ds = dataset['train']
input_df = ds.dataset.to_pandas()
tagСоздание эмбеддингов и индекса в FAISS
Эта функция обрабатывает текстовые данные и извлекает признаки в форме эмбеддингов. Это займет некоторое время.
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)
Этот код перебирает каждую запись в столбце text
DataFrame и вызывает jina_embed()
для получения эмбеддинга. Мы сохраняем эмбеддинги как массивы NumPy в списке all_embeddings
. Затем они добавляются в новый столбец DataFrame под названием embeddings
.
Мы можем визуализировать то, что только что сделали, напечатав значение enhanced_dataframe
:

Последний столбец содержит эмбеддинги в читаемой форме.
Теперь нам нужно создать индекс FAISS (Facebook AI Similarity Search) для хранения и поиска по эмбеддингам:
import faiss
dim = 768 # размерность эмбеддингов 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)
Этот код также нормализует векторы эмбеддингов для упрощения и ускорения поиска.
tagПоиск совпадений для запроса
Функция find_similar_texts
ищет в созданном индексе ближайшие совпадения:
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
tagПовторное ранжирование для получения наиболее релевантных совпадений
После получения результатов из индекса FAISS мы отправим набор результатов в функцию jina_rerank
для присвоения всем ответам оценки релевантности и возврата отсортированного списка результатов по релевантности.
Давайте используем запрос, который требует глубокого семантического понимания, чтобы протестировать наше решение:
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)
Вот наиболее релевантные результаты:
[{'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}}]
И это всё. Попробуйте сами с разными запросами и посмотрите, какие результаты вы получите.
tagJina Embeddings и Rerankers: корпоративный ИИ на Azure
Jina AI сосредоточена на предоставлении современного ИИ предприятиям для реальных приложений, которые нужны бизнесу. Размещение наших моделей на Azure Marketplace устраняет барьеры для добавления ИИ в ваши бизнес-процессы, делая интеграцию простой и выставляя счета как часть вашего существующего плана Azure.
Мы ценим отзывы от всех, кто использует или рассматривает использование Jina Embeddings и Jina Reranker. Свяжитесь с нами через наш веб-сайт или присоединяйтесь к нашему каналу Discord, чтобы поделиться отзывами и быть в курсе быстро развивающихся предложений Jina AI. Мы верим в инклюзивную экосистему ИИ и будем рады обсудить с вами ваши варианты использования.

