Noticias
Modelos
Productos
keyboard_arrow_down
Lector
Lea las URL y busque en la web para obtener una base más sólida para su LLM.
Incrustaciones
Integraciones multilingües y multimodales de clase mundial.
reclasificador
Recuperador neuronal de clase mundial para maximizar la relevancia de la búsqueda.
Búsqueda profunda
Busca, lee y razona hasta encontrar la mejor respuesta.
Más
keyboard_arrow_down
Clasificador
Clasificación de cero disparos y pocos disparos para imágenes y texto.
Segmentador
Corta el texto largo en fragmentos y haz tokenización.

Documentación de la API
Generación automática de código para su IDE o LLM de Copilot
open_in_new


Compañía
keyboard_arrow_down
Sobre nosotros
Contactar con ventas
Programa de prácticas
Únete a nosotros
open_in_new
Descargar logotipo
open_in_new
Términos y condiciones


Acceso
login
¿Qué es un reranker?
¿Por qué usar jina-reranker-v1-base-en?
Antes de empezar: Una nota sobre los Node-Postprocessors de LlamaIndex
Sigue el tutorial en Google Colab
Conclusión
Blog de tecnología
marzo 07, 2024

RAG preciso con Jina Reranker y LlamaIndex

¡Simplemente reordénalo! Jina Reranker y LlamaIndex llevan tu RAG al siguiente nivel.
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 minutos de lectura

Mientras que los modelos bi-encoder como Jina Embeddings pueden recuperar rápidamente muchos documentos coincidentes de una base de datos de embeddings pre-calculados, los modelos de reranking pueden refinar este conjunto utilizando un enfoque más lento pero más preciso de codificación cruzada entre las consultas de los usuarios y los documentos recuperados. Jina AI ha lanzado nuestro primer modelo de reranking, jina-reranker-v1-base-en, y en este artículo presentaremos un razonamiento detallado de por qué un reranker es esencial para optimizar la precisión de RAG y cómo empezar a construir un sistema RAG de última generación usando Jina Embeddings/Reranker, LlamaIndex, y el modelo de lenguaje Mixtral-8x7B-Instruct-v0.1 (alojado en HuggingFace).

Necesitarás:

  • Una clave combinada para las API de Jina Embeddings y Reranker.
  • Una cuenta y token de HuggingFace.
Reranker API
Maximize the search relevancy and RAG accuracy at ease

Dado que los modelos Jina Embeddings y Reranker, así como Mixtral, se ejecutan de forma remota y se accede a ellos mediante una API RESTful, no necesitarás ningún hardware especial.

tag¿Qué es un reranker?

Antes de continuar con el tutorial, es importante destacar qué son los rerankers en primer lugar. Para una comprensión completa de qué es un reranker y por qué Jina Reranker V1 es la mejor opción para ti, te animamos a leer nuestro post de lanzamiento de Jina Reranker V1 antes de continuar.

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!

En resumen, los rerankers son modelos de codificación cruzada que toman como entrada un par documento-consulta, y emiten una puntuación de relevancia combinada para ese par de entrada. Usando rerankers, los usuarios pueden ordenar los documentos del más al menos relevante para una consulta dada.

tag¿Por qué usar jina-reranker-v1-base-en?

El reranking proporciona información mucho más relevante que usar únicamente un modelo de embeddings. En nuestro post de lanzamiento del modelo, demostramos que Jina Reranker destaca en comparación con sus competidores de código abierto y cerrado y puede mejorar los sistemas de búsqueda en un 8% en tasa de aciertos y un 33% en rango recíproco medio.

Esto tiene un impacto directo en la calidad de las respuestas obtenidas a través de la solución RAG aplicada. Con la teoría respaldando esta afirmación, te mostraremos un ejemplo práctico para que puedas ver con tus propios ojos qué efecto tiene Jina Reranker en un pipeline RAG construido con LlamaIndex.

tagAntes de empezar: Una nota sobre los Node-Postprocessors de LlamaIndex

Los node-postprocessors en LlamaIndex son módulos que transforman o filtran nodos después de la recuperación y antes de la síntesis de respuesta dentro de un motor de consulta. Como parte de este paquete, LlamaIndex ofrece tanto opciones integradas como una API para adiciones personalizadas.

Jina Reranker ahora ha sido integrado en LlamaIndex como un postprocesador de nodos. Para aumentar la precisión de la respuesta, los nodos recuperados se reordenan según su relevancia para la consulta, y se devuelven los N nodos principales.

tagSigue el tutorial en Google Colab

Este tutorial tiene un notebook complementario que puedes ejecutar en Google Colab o localmente.

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

tagEl conjunto de datos: Catálogo de Productos Nike Kids 2024

Para mostrar el aumento de rendimiento de Jina Reranker en aplicaciones RAG, hemos elegido el Catálogo de Productos Nike Kids 2024 como nuestro conjunto de datos. El documento contiene un conjunto estructurado de productos para niños ofrecidos por Nike en 2024. Seleccionamos este conjunto de datos ya que muestra claramente el efecto de usar un reranker y es relevante para la mayoría de los usuarios.

tagInstala los prerrequisitos

Para instalar los requisitos, ejecuta:

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]"

tagAccede al LLM Mixtral

Para usar el LLM Mixtral-8x7B-Instruct-v0.1, necesitas un token de HuggingFace.

from llama_index.llms.huggingface import HuggingFaceInferenceAPI

hf_inference_api_key = "<tu token de acceso de HuggingFace aquí>"

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

tagAccede a Jina Embeddings y Jina Reranker

Para usar nuestros Jina Embeddings y Jina Reranker, necesitas una clave API dedicada. Almacénala en una variable llamada api_key y llama al modelo Jina Embeddings desde LlamaIndex:

from llama_index.embeddings.jinaai import JinaEmbedding

api_key = "<tu clave Jina aquí>"
jina_embeddings = JinaEmbedding(api_key=api_key)

De manera similar, puedes llamar al modelo Jina Reranker. Al establecer el parámetro top_n, puedes decidir cuántos de los documentos más relevantes devolver en la salida final. En este caso, establecemostop_n=2:

from llama_index.postprocessor.jinaai_rerank import JinaRerank

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

tagDescargar el Catálogo de Productos Nike Kids 2024

Para descargar los datos, ejecuta el siguiente código:

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()

tagGenerar e indexar embeddings con Jina Embeddings

Ahora que la configuración está completa, generaremos los vectores de embedding (nodos) y los indexaremos. Los modelos Jina Embeddings v2 aceptan entradas de hasta 8192 tokens, lo suficientemente grandes como para que, en un documento como este, no necesitemos hacer ninguna segmentación adicional del texto ni verificar si alguna sección tiene demasiados tokens. Para embeber e indexar el documento, ejecuta el siguiente código:

from llama_index.core import VectorStoreIndex

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

tagConsultar resultados sin Jina Reranker

Cuando consultamos información específica de este conjunto de textos, el query_engine de LlamaIndex hace lo siguiente:

  1. Con Jina Embeddings V2, crea un embedding para la consulta.
  2. Utiliza el índice para obtener los top_k = 10 embeddings almacenados con el mayor coseno respecto al embedding de la consulta y devuelve su posición en el índice.
  3. Buscará el texto correspondiente en el array de datos vectoriales.

Preguntemos cuál es el mejor pantalón acolchado que vende 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)

Resultado:

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)
...
Tres bolsos pequeños Nike Brasilia, $37 cada uno, en negro, gris, azul marino con características listadas y fechas de oferta del 07/01/22 al 0

tagConsultar resultados con Reranker

Ahora queremos aplicar el reranker para ver si la aplicación RAG produce un resultado diferente y más relevante. Para hacerlo, necesitamos agregar los node_postprocessors al 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)

Ten en cuenta que, en comparación con el caso anterior sin el reranker, el query_engine ahora también contiene el parámetro node_postprocessors establecido en [jina_rerank].

Resultado:

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)

Exhibición de productos de pantalones Nike DF Stock Recruit para niños con tallas, precios y varias opciones de color resaltadas.

tagConclusión

Como podemos ver, la consulta sin el reranker lleva a un resultado principal que menciona "malla trasera para transpirabilidad" y "ajuste delgado con tacto suave". En comparación, al usar un reranker, obtenemos un resultado principal que está "diseñado para una óptima transpirabilidad", tiene un "diseño que expulsa la humedad" que "te ayuda a mantenerte seco y fresco bajo la presión del día del partido", y presenta "tela ligera en un ajuste relajado y cómodo".

El segundo resultado es mucho más preciso y apropiado para la consulta que realizamos. Con nuestros últimos dos posts, mostramos tanto desde una perspectiva teórica como práctica que agregar Jina Reranker a tu pipeline RAG aumenta la precisión de recuperación y mejora la calidad de las respuestas que obtienes de él.

Categorías:
Blog de tecnología
rss_feed
Oficinas
location_on
Sunnyvale, California
710 Lakeway Dr, Ste 200, Sunnyvale, CA 94085, EE. UU.
location_on
Berlín, Alemania (sede central)
Prinzessinnenstraße 19-20, 10969 Berlín, Alemania
location_on
Beijing, China
Piso 5, Edificio 6, No.48 Haidian West St. Pekín, China
location_on
Shenzhen, China
Piso 402, Edificio de Tecnología Fu'an, Shenzhen, China
Fundación de búsqueda
Lector
Incrustaciones
reclasificador
Búsqueda profunda
Clasificador
Segmentador
Documentación API
Obtener la clave API de Jina
Límite de velocidad
Estado de la API
Compañía
Sobre nosotros
Contactar con ventas
Sala de prensa
Programa de prácticas
Únete a nosotros
open_in_new
Descargar logotipo
open_in_new
Términos
Seguridad
Términos y condiciones
Privacidad
Administrar cookies
email
Jina AI © 2020-2025.