Новости
Модели
Продукты
keyboard_arrow_down
Читатель
Читайте URL-адреса и ищите информацию в Интернете для получения более подходящей подготовки для получения степени магистра права.
Вложения
Мультимодальные многоязычные вложения мирового класса.
Реранкер
Нейронный ретривер мирового класса для максимального повышения релевантности поиска.
Глубокий поиск
Ищите, читайте и рассуждайте, пока не найдете лучший ответ.
Более
keyboard_arrow_down
Классификатор
Классификация изображений и текста по нулевому и небольшому количеству кадров.
Сегментатор
Разрежьте длинный текст на куски и выполните токенизацию.

API-документы
Автоматическая генерация кода для вашего второго пилота IDE или LLM
open_in_new


Компания
keyboard_arrow_down
О нас
Связаться с отделом продаж
Стажерская программа
Присоединяйтесь к нам
open_in_new
Скачать логотип
open_in_new
Условия использования


Авторизоваться
login
Что такое ранжировщик?
Почему стоит использовать jina-reranker-v1-base-en?
Перед началом: Замечание о постпроцессорах узлов LlamaIndex
Следуйте за нами в Google Colab
Заключение
Технический блог
март 07, 2024

Точное RAG с помощью Jina Reranker и LlamaIndex

Просто выполните ре-ранжирование! Jina Reranker и LlamaIndex поднимут ваш RAG на новый уровень.
Collaborative graphic with "RERANKER" and "Llamalindex" logos over a purple background with crossed white abstract lines.
Francesco Kruk
Saahil Ognawala
Francesco Kruk, Saahil Ognawala • 7 минуты чтения

В то время как модели bi-encoder, такие как Jina Embeddings, могут быстро находить множество подходящих документов из базы данных предварительно вычисленных эмбеддингов, модели ранжирования могут уточнить этот набор, используя более медленный, но более точный подход кросс-кодирования запросов пользователей и найденных документов. Jina AI выпустила нашу первую модель ранжирования, jina-reranker-v1-base-en, и в этой статье мы подробно объясним, почему ранжировщик необходим для оптимизации точности RAG и как начать создавать современную RAG-систему с использованием Jina Embeddings/Reranker, LlamaIndex и языковой модели Mixtral-8x7B-Instruct-v0.1 (размещенной на HuggingFace).

Вам понадобится:

  • Комбинированный ключ для API Jina Embeddings и Reranker.
  • Аккаунт и токен HuggingFace.
Reranker API
Maximize the search relevancy and RAG accuracy at ease

Поскольку модели Jina Embeddings и Reranker, а также Mixtral работают удаленно и доступны через RESTful API, вам не потребуется специальное оборудование.

tagЧто такое ранжировщик?

Прежде чем продолжить учебник, важно пояснить, что такое ранжировщики. Для полного понимания того, что такое ранжировщик и почему Jina Reranker V1 — лучший выбор для вас, мы рекомендуем сначала прочитать нашу публикацию о выпуске Jina Reranker V1.

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!

Вкратце, ранжировщики — это модели кросс-кодировщика, которые принимают на вход пару документ-запрос и выдают комбинированную оценку релевантности для этой пары. Используя ранжировщики, пользователи могут сортировать документы от наиболее до наименее релевантных для данного запроса.

tagПочему стоит использовать jina-reranker-v1-base-en?

Переранжирование обеспечивает гораздо более релевантную информацию, чем использование только модели эмбеддингов. В нашем посте о выпуске модели мы продемонстрировали, что Jina Reranker выделяется на фоне своих конкурентов с открытым и закрытым исходным кодом и может улучшить поисковые системы на 8% по показателю попаданий и на 33% по среднему обратному рангу.

Это напрямую влияет на качество ответов, полученных через примененное RAG-решение. Подкрепив это теоретически, мы покажем вам практический пример, чтобы вы могли своими глазами увидеть, какой эффект Jina Reranker оказывает на RAG-конвейер, построенный с помощью LlamaIndex.

tagПеред началом: Замечание о постпроцессорах узлов LlamaIndex

Постпроцессоры узлов в LlamaIndex — это модули, которые трансформируют или фильтруют узлы после извлечения и перед синтезом ответа в поисковом движке. В составе этого пакета LlamaIndex предлагает как встроенные опции, так и API для пользовательских дополнений.

Jina Reranker теперь интегрирован в LlamaIndex как постпроцессор узлов. Для повышения точности ответов извлеченные узлы переупорядочиваются на основе релевантности запросу, и возвращаются топ N узлов.

tagСледуйте за нами в Google Colab

К этому учебнику прилагается блокнот, который вы можете запустить в Google Colab или локально.

llama_index/docs/docs/examples/node_postprocessor/JinaRerank.ipynb at main · run-llama/llama_index
LlamaIndex is a data framework for your LLM applications - run-llama/llama_index
GitHubrun-llama

tagНабор данных: Каталог детских товаров Nike 2024

Чтобы продемонстрировать повышение производительности Jina Reranker для RAG-приложений, мы выбрали Каталог детских товаров Nike 2024 в качестве нашего набора данных. Документ содержит структурированный набор детских товаров, предлагаемых Nike в 2024 году. Мы выбрали этот набор данных, так как он наглядно демонстрирует эффект использования ранжировщика и понятен большинству пользователей.

tagУстановка необходимых компонентов

Для установки требований выполните:

pip install llama-index-postprocessor-jinaai-rerank
pip install llama-index-embeddings-jinaai
pip install llama-index
pip install llama-index-llms-huggingface
pip install "huggingface_hub[inference]"

tagДоступ к Mixtral LLM

Для использования LLM Mixtral-8x7B-Instruct-v0.1 вам нужен токен HuggingFace.

from llama_index.llms.huggingface import HuggingFaceInferenceAPI

hf_inference_api_key = "<ваш токен доступа HuggingFace здесь>"

mixtral_llm = HuggingFaceInferenceAPI(
    model_name="mistralai/Mixtral-8x7B-Instruct-v0.1",
    token=hf_inference_api_key,
)

tagДоступ к Jina Embeddings и Jina Reranker

Для использования наших Jina Embeddings и Jina Reranker вам нужен специальный API-ключ. Сохраните его в переменной api_key и вызовите модель Jina Embeddings из LlamaIndex:

from llama_index.embeddings.jinaai import JinaEmbedding

api_key = "<ваш ключ Jina здесь>"
jina_embeddings = JinaEmbedding(api_key=api_key)

Аналогично вы можете вызвать модель Jina Reranker. Установив параметр top_n, вы можете решить, сколько наиболее релевантных документов вернуть в конечном выводе. В данном случае мы установимtop_n=2:

from llama_index.postprocessor.jinaai_rerank import JinaRerank

jina_rerank = JinaRerank(api_key=api_key, top_n=2)

tagСкачать каталог детских товаров Nike 2024

Чтобы скачать данные, выполните следующий код:

from llama_index.core import SimpleDirectoryReader
import requests

url = '<https://niketeam-asset-download.nike.net/catalogs/2024/2024_Nike%20Kids_02_09_24.pdf?cb=09302022>'
response = requests.get(url)

with open('Nike_Catalog.pdf', 'wb') as f:
    f.write(response.content)

reader = SimpleDirectoryReader(
    input_files=["Nike_Catalog.pdf"]
)

documents = reader.load_data()

tagСоздание и индексация эмбеддингов с помощью Jina Embeddings

Теперь, когда настройка завершена, мы создадим векторы эмбеддингов (узлы) и проиндексируем их. Модели Jina Embeddings v2 принимают входные данные размером до 8192 токенов, что достаточно для документа такого размера, поэтому нам не нужно выполнять дополнительную сегментацию текста или проверять, не содержит ли какой-либо раздел слишком много токенов. Для создания эмбеддингов и индексации документа выполните следующий код:

from llama_index.core import VectorStoreIndex

index = VectorStoreIndex.from_documents(
    documents=documents, embed_model=jina_embeddings
)

tagЗапрос результатов без использования Jina Reranker

Когда мы запрашиваем конкретную информацию из этого набора текстов, LlamaIndex query_engine выполняет следующее:

  1. С помощью Jina Embeddings V2 создает эмбеддинг для запроса.
  2. Использует индекс для получения top_k = 10 сохраненных эмбеддингов с наибольшим косинусным сходством с эмбеддингом запроса и возвращает их позиции в индексе.
  3. Находит соответствующий текст в массиве векторных данных.

Давайте спросим, какие лучшие спортивные штаны с подкладкой продает Nike:

query_engine = index.as_query_engine(
    similarity_top_k=10, llm=mixtral_llm
)
response = query_engine.query(
    "What are the best padded pants that Nike sells?",
)

print(response.source_nodes[0].text)

Результат:

NIKE KIDS  EQUIPMENT87NIKE BRASILIA SMALL DUFFEL 9.5 
DM3976 $37.00
SIZES: Misc  OFFER DATE: 07/01/22  END DATE: 07/01/25
Tough 600D polyester • Durable 300D polyester • Detachable shoulder
strap • Ventilated shoe or wet/dry storage • Secure zip pocket • 
Limited lifetime guarantee • Screened Swoosh design trademark
DIMENSIONS:  20" L x 10" W x 11" H 
010 Black/Black/(White) 068 Iron Grey/Black/(White)
...
Three Nike Brasilia Small Duffel Bags, $37 each, in black, grey, navy with features listed and offer dates from 07/01/22 to 0

tagЗапрос результатов с использованием Reranker

Теперь мы хотим применить реранкер, чтобы проверить, даст ли RAG-приложение другой, более релевантный результат. Для этого нам нужно добавить node_postprocessors в query_engine:

query_engine = index.as_query_engine(
    similarity_top_k=10, llm=mixtral_llm, node_postprocessors=[jina_rerank]
)
response = query_engine.query(
    "What are the best padded pants that Nike sells?",
)

print(response.source_nodes[0].text)

Обратите внимание, что по сравнению с предыдущим случаем без реранкера, query_engine теперь также содержит параметр node_postprocessors, установленный на [jina_rerank].

Результат:

NIKE KIDS  FOOTBALL – STOCK10
DJ5731 $47.00
SIZES:  XS, S, M, L, XL, 2XL, 3XL
FABRIC:  Body/panels lining: 100% polyester. Pad: 100%
ethylene vinyl acetate.
OFFER DATE:  04/01/23
END DATE:  04/01/27
Take the field ready to give it your all in the Nike Recruit
Pants. They're made from lightweight, stretchy fabric with
sweat-wicking power to help keep you dry and moving freely
when the game heats up. With integrated pads shaped for a
comfortable fit, you'll be prepared for a performance you can
be proud of. Choose from 6 different colors to outfit your
team. Nike Dri-FIT technology moves sweat away from your skin
for quicker evaporation, helping you stay dry and comfortable.
Lightweight knit fabric stretches with you to let you move
naturally. Thigh, knee, hip and tailbone pads are shaped for
an optimal fit, without compromising on coverage. A
body-hugging fit is designed to help keep the padding in place
and close to the body. Belt at the waist lets you dial in your
perfect fit to maximize comfort. Elastic at hems.
Hip width: 15", Inseam length: 11.75" (size medium).
010 Black/(White) 060 Team Anthracite/(White) 100 White/(Black)
419 Team Navy/(White) 493 Team Royal/(White) 657 Team Scarlet/(White)

Product display of boys' Nike DF Stock Recruit Pants with sizes, pricing, and various color options highlighted.

tagЗаключение

Как мы видим, запрос без реранкера приводит к результату, в котором упоминается "сетчатая спинка для воздухопроницаемости" и "облегающий крой с мягким на ощупь материалом". В сравнении с этим, при использовании реранкера мы получаем результат, в котором описываются штаны, "разработанные для оптимальной воздухопроницаемости", с "влагоотводящей конструкцией", которая "помогает сохранять сухость и прохладу под давлением матча", и "легкой тканью в свободном, удобном крое".

Второй результат намного точнее и более соответствует нашему запросу. В наших последних двух постах мы показали как с теоретической, так и с практической точки зрения, что добавление Jina Reranker в ваш RAG-конвейер повышает точность поиска и улучшает качество получаемых ответов.

Категории:
Технический блог
rss_feed
Офисы
location_on
Саннивейл, Калифорния
710 Lakeway Dr, Ste 200, Саннивейл, Калифорния 94085, США
location_on
Берлин, Германия (штаб-квартира)
Prinzessinnenstraße 19-20, 10969 Берлин, Германия
location_on
Пекин, Китай
Уровень 5, здание 6, ул. Хайдянь Вест, д. 48, Пекин, Китай
location_on
Шэньчжэнь, Китай
402, этаж 4, здание Fu'an Technology, Шэньчжэнь, Китай
Поиск Фонда
Читатель
Вложения
Реранкер
Глубокий поиск
Классификатор
Сегментатор
API-документация
Получить API-ключ Jina
Ограничение скорости
Статус API
Компания
О нас
Связаться с отделом продаж
отдел новостей
Стажерская программа
Присоединяйтесь к нам
open_in_new
Скачать логотип
open_in_new
Условия
Безопасность
Условия использования
Конфиденциальность
Управление файлами cookie
email
Jina AI © 2020-2025.