Los sistemas de generación aumentada de recuperación (RAG) están revolucionando cómo interactuamos con la información, pero son solo tan buenos como los datos que recuperan. Optimizar esos resultados de recuperación es donde entra el Reranker. Por ejemplo, considerarlo como un sistema de control de calidad para los resultados de sus búsqueda, asegurando que solo la información más relevante entre en la salida final.
Este artículo explora el mundo de los volviéndose a relacionar, explicando por qué son importantes, cuando los necesita, sus posibles inconvenientes y sus tipos. Este artículo también lo guiará para seleccionar el mejor repelente para su sistema de RAG específico y cómo evaluar su rendimiento.
¿Qué es un Reranker para Rag?
Un Reranker es un componente importante de los sistemas de recuperación de información, actúa como un filtro de segundo paso. Mientras realiza una búsqueda inicial (utilizando métodos como la búsqueda semántica o de palabras clave) devuelve un conjunto de documentos, y el Reranker ayuda a reordenarlos. Este reordenamiento filtra y prioriza documentos en función de su relevancia para una consulta específica, mejorando por lo tanto la calidad de los resultados de búsqueda. Los vuelos a los que los vuelven a ser este equilibrio entre la velocidad y la calidad al emplear técnicas de correspondencia más complejas que la etapa de recuperación inicial.
Esta imagen ilustra un proceso de búsqueda de dos etapas. Rergumentar es la segunda etapa, donde un conjunto inicial de resultados de búsqueda, basado en la coincidencia semántica o de palabras clave, se refina para mejorar significativamente la relevancia y el orden de los resultados finales, ofreciendo un resultado más preciso y útil para la consulta del usuario.
¿Por qué usar Reranker para trapo?
Imagine su sistema de trapo como un chef, y los documentos recuperados son los ingredientes. Para crear un plato delicioso (respuesta precisa), necesita los mejores ingredientes. Pero, ¿qué pasa si algunos de esos ingredientes son irrelevantes o simplemente no pertenecen a la receta? ¡Ahí es donde ayudan los vueltas a los vueltas!
He aquí por qué necesitas un Reranker:
- Reducción de alucinación: Los vueltas a los que los vuelves filtran documentos irrelevantes que pueden hacer que la LLM genere respuestas inexactas o no sensibles (alucinaciones).
- Ahorros de costos: Al centrarse en los documentos más relevantes, reduce la cantidad de información que la LLM necesita procesar, ahorrándole dinero en llamadas de API y recursos informáticos.
Comprender las limitaciones de incrustación
Confiar únicamente en las incrustaciones para la recuperación puede ser problemático debido a:
- Comprensión semántica limitada: Los incrustaciones a veces se pierden el contexto matizado. Por ejemplo, pueden tener dificultades para diferenciar entre oraciones similares con diferencias sutiles pero importantes.
- Restricciones de dimensionalidad: Representar información compleja en un espacio de incrustación de baja dimensión puede conducir a la pérdida de información.
- Problemas de generalización: Los incrustaciones pueden tener dificultades para recuperar información fuera de sus datos de entrenamiento originales con precisión.
Ventajas de Rerankers
Los vuelos a sobresalir donde se cortan las embedidas por:
- Enfoque de la bolsa de la bolsa: Desglosar documentos en unidades de información más pequeñas y contextualizadas en lugar de depender de una sola representación vectorial.
- Coincidencia de palabras clave semánticas: Combinando las fortalezas de los potentes modelos de codificadores (como Bert) con técnicas basadas en palabras clave para capturar tanto el significado semántico como la relevancia de las palabras clave.
- Generalización mejorada: Al enfocarse en unidades más pequeñas y contextualizadas, los resonantes manejan documentos y consultas invisibles de manera más efectiva.
Se utiliza una consulta para buscar una base de datos vectorial, recuperando los 25 documentos más relevantes. Estos documentos se pasan a un módulo “Reranker”. El Reranker refina los resultados, seleccionando los 3 documentos más relevantes para la salida final.
Lea también: Cómo elegir la incrustación adecuada para su modelo de trapo
Tipos de vueltas
El mundo de los volviéndose a relacionar está evolucionando constantemente. Aquí hay un desglose de los tipos principales:
Acercarse | Ejemplos | Tipo de acceso | Nivel de rendimiento | Rango de costos |
Codificador cruzado | Transformadores de oraciones, FlashRank | De código abierto | Excelente | Moderado |
Vector múltiple | Colbert | De código abierto | Bien | Bajo |
Modelo de lenguaje grande sintonizado | Rankzephyr, Rankt5 | De código abierto | Excelente | Alto |
LLM como juez | GPT, Claude, Géminis | Propiedad | De nivel superior | Muy caro |
Volver a hacer el fuego | Cohere, nombre | Propiedad | Excelente | Moderado |
1. Cross-coders: comprensión profunda para la alta precisión
Los codificadores cruzados clasifican pares de datos, analizando la relación entre una consulta y un documento juntos. Ofrecen una comprensión matizada, haciéndolos excelentes para una puntuación precisa de relevancia. Sin embargo, requieren recursos computacionales significativos, lo que los hace menos adecuados para aplicaciones en tiempo real.
Código de ejemplo:
from langchain.retrievers import ContextualCompressionRetriever
from langchain.retrievers.document_compressors import FlashrankRerank
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(temperature=0)
compressor = FlashrankRerank()
compression_retriever = ContextualCompressionRetriever(
base_compressor=compressor, base_retriever=retriever
)
compressed_docs = compression_retriever.invoke(
"What did the president say about Ketanji Jackson Brown"
)
print((doc.metadata("id") for doc in compressed_docs))
pretty_print_docs(compressed_docs)
Este fragmento de código utiliza FlashRankrerank dentro de una compresión contextual para mejorar la relevancia de los documentos recuperados. Reranks va específicamente los documentos obtenidos por un Retriever base (representado por un retriever) en función de su relevancia para la consulta “¿Qué dijo el presidente sobre Ketanji Jackson Brown”. Finalmente, imprime las ID de documento y los documentos comprimidos y reiniciados.
Producción:
(0, 5, 3)Document 1:
One of the most serious constitutional responsibilities a President has is
nominating someone to serve on the United States Supreme Court.And I did that 4 days ago, when I nominated Circuit Court of Appeals Judge
Ketanji Brown Jackson. One of our nation’s top legal minds, who will
continue Justice Breyer’s legacy of excellence.----------------------------------------------------------------------------------------------------
Document 2:
He met the Ukrainian people.
From President Zelenskyy to every Ukrainian, their fearlessness, their
courage, their determination, inspires the world.Groups of citizens blocking tanks with their bodies. Everyone from students
to retirees teachers turned soldiers defending their homeland.In this struggle as President Zelenskyy said in his speech to the European Parliament “Light will win over darkness.” The Ukrainian Ambassador to the United States is here tonight.
----------------------------------------------------------------------------------------------------
Document 3:
And tonight, I’m announcing that the Justice Department will name a chief prosecutor for pandemic fraud.
By the end of this year, the deficit will be down to less than half what it was before I took office.
The only president ever to cut the deficit by more than one trillion dollars in a single year.
Lowering your costs also means demanding more competition.
I’m a capitalist, but capitalism without competition isn’t capitalism.
It’s exploitation—and it drives up prices.
Los zapatos de salida vuelven a los trozos recuperados en función de la relevancia.
2. Rerankers de vectores múltiples: equilibrio de rendimiento y eficiencia
Los modelos de vectores múltiples como Colbert utilizan un enfoque de interacción tardía. La consulta y las representaciones de documentos se codifican de forma independiente, y su interacción ocurre más adelante en el proceso. Esto permite la precomputación de representaciones de documentos, lo que lleva a tiempos de recuperación más rápidos y reducciones de demandas computacionales.
Código de ejemplo:
Instale la biblioteca Ragtouille para usar el Colbert Reranker
pip install -U ragatouille
Ahora configurando el Colbert Reranker
from ragatouille import RAGPretrainedModel
from langchain.retrievers import ContextualCompressionRetriever
RAG = RAGPretrainedModel.from_pretrained("colbert-ir/colbertv2.0")
compression_retriever = ContextualCompressionRetriever(
base_compressor=RAG.as_langchain_document_compressor(), base_retriever=retriever
)
compressed_docs = compression_retriever.invoke(
"What animation studio did Miyazaki found"
)
print(compressed_docs(0))
Producción:
Document(page_content="In June 1985, Miyazaki, Takahata, Tokuma and Suzuki
founded the animation production company Studio Ghibli, with funding from
Tokuma Shoten. Studio Ghibli\"s first film, Laputa: Castle in the Sky
(1986), employed the same production crew of Nausicaä. Miyazaki\'s designs
for the film\'s setting were inspired by Greek architecture and "European
urbanistic templates". Some of the architecture in the film was also
inspired by a Welsh mining town; Miyazaki witnessed the mining strike upon
his first', metadata={'relevance_score': 26.5194149017334})
3. Rerankers LLM de Fino
Es esencial ajustar los modelos de idiomas grandes (LLM) para las tareas de rehabilitación. Los LLM previos al entrenamiento no comprenden inherentemente cómo medir la relevancia de una consulta para un documento. Al ajustar estos modelos en conjuntos de datos de clasificación específicos, como el conjunto de datos de clasificación MS Marco Passage, podemos mejorar su capacidad para clasificar los documentos de manera efectiva.
Hay dos tipos principales de vuelos supervisados en función de su estructura de modelo:
- Modelos de codificadores codificadores: Estos modelos tratan la clasificación de documentos como una tarea de generación. Utilizan un marco de codificador de codificadores para optimizar el proceso de rehabilitación. Por ejemplo, el modelo RankT5 está entrenado para producir tokens que clasifican los pares de documentos de consulta como relevantes o irrelevantes.
- Modelos de decodificador: Este enfoque se centra en modelos ajustados que usan solo un decodificador, como Llama. Modelos como Rankzephyr y RankGPT exploran diferentes métodos para calcular la relevancia en este contexto.
Al aplicar estas técnicas de ajuste, podemos mejorar el rendimiento de los LLM en tareas de relevación, haciéndolas más efectivas para comprender y priorizar documentos relevantes.
Código de ejemplo:
Primero, instale la biblioteca Rankllm
pip install --upgrade --quiet rank_llm
Establecer el rankzephyr
from langchain.retrievers.contextual_compression import ContextualCompressionRetriever
from langchain_community.document_compressors.rankllm_rerank import RankLLMRerank
compressor = RankLLMRerank(top_n=3, model="zephyr")
compression_retriever = ContextualCompressionRetriever(
base_compressor=compressor, base_retriever=retriever
)
compressed_docs = compression_retriever.invoke(query)
pretty_print_docs(compressed_docs)
Producción:
Document 1:Together with our allies –we are right now enforcing powerful economic
sanctions.We are cutting off Russia’s largest banks from the international financial
system.Preventing Russia’s central bank from defending the Russian Ruble making
Putin’s $630 Billion “war fund” worthless.We are choking off Russia’s access to technology that will sap its economic
strength and weaken its military for years to come.----------------------------------------------------------------------------------------------------
Document 2:
And tonight I am announcing that we will join our allies in closing off
American air space to all Russian flights – further isolating Russia – and
adding an additional squeeze –on their economy. The Ruble has lost 30% of
its value.The Russian stock market has lost 40% of its value and trading remains
suspended. Russia’s economy is reeling and Putin alone is to blame.----------------------------------------------------------------------------------------------------
Document 3:
And now that he has acted the free world is holding him accountable.
Along with twenty-seven members of the European Union including France,
Germany, Italy, as well as countries like the United Kingdom, Canada, Japan,
Korea, Australia, New Zealand, and many others, even Switzerland.We are inflicting pain on Russia and supporting the people of Ukraine. Putin
is now isolated from the world more than ever.Together with our allies –we are right now enforcing powerful economic
sanctions.
4. LLM como juez para volver a ser
Se pueden utilizar modelos de lenguaje grandes para mejorar el documento que se vuelve a hacer de forma autónoma a través de estrategias de solicitud como los métodos de punto, listón y por pares. Estos métodos aprovechan las capacidades de razonamiento de LLMS (LLM como juez) para evaluar directamente la relevancia de los documentos a una consulta. Si bien ofrece una efectividad competitiva, el alto costo computacional y la latencia asociados con los LLM pueden ser una barrera para el uso práctico.
- Métodos puntuales: Los métodos puntuales evalúan la relevancia de un solo documento en relación con una consulta. Incluyen dos subcategorías: generación de relevancia y generación de consultas. Ambos enfoques funcionan bien para el documento de disparo cero que se vuelve a ser, lo que significa que pueden clasificar documentos sin capacitación previa en ejemplos específicos.
- Métodos en listado: Los métodos de Listwise clasifican una lista de documentos al incluir tanto la consulta como la lista de documentos en el mensaje. Luego se instruye al LLM que emita los identificadores de los documentos reiniciados. Dado que los LLM tienen una longitud de entrada limitada, a menudo no es práctico incluir todos los documentos candidatos a la vez. Para administrar esto, los métodos de Listwise utilizan una estrategia de ventana deslizante. Este enfoque clasifica un subconjunto de documentos a la vez, que se mueve a través de la lista de regreso a delantera y resulta solo los documentos dentro de la ventana actual.
- Métodos por pares: En los métodos por pares, el LLM recibe un aviso que incluye una consulta y un par de documentos. El modelo tiene la tarea de identificar qué documento es más relevante. Para agregar resultados, se utilizan métodos como AllPairs. AllPairs genera todos los pares de documentos posibles y calcula una puntuación de relevancia final para cada documento. Los algoritmos de clasificación eficientes, como la clasificación del montón y la clasificación de burbujas, ayudan a acelerar el proceso de clasificación.
Código de ejemplo:
import openai
# Set your OpenAI API key
openai.api_key = 'YOUR_API_KEY'
def pointwise_rerank(query, document):
prompt = f"Rate the relevance of the following document to the query on a scale from 1 to 10:\n\nQuery: {query}\nDocument: {document}\n\nRelevance Score:"
response = openai.ChatCompletion.create(
model="gpt-4-turbo",
messages=({"role": "user", "content": prompt})
)
return response('choices')(0)('message')('content').strip()
def listwise_rerank(query, documents):
# Use a sliding window approach to rerank documents
window_size = 5
reranked_docs = ()
for i in range(0, len(documents), window_size):
window = documents(i:i + window_size)
prompt = f"Given the query, please rank the following documents:\n\nQuery: {query}\nDocuments: {', '.join(window)}\n\nRanked Document Identifiers:"
response = openai.ChatCompletion.create(
model="gpt-4-turbo",
messages=({"role": "user", "content": prompt})
)
ranked_ids = response('choices')(0)('message')('content').strip().split(', ')
reranked_docs.extend(ranked_ids)
return reranked_docs
def pairwise_rerank(query, documents):
scores = {}
for i in range(len(documents)):
for j in range(i + 1, len(documents)):
doc1 = documents(i)
doc2 = documents(j)
prompt = f"Which document is more relevant to the query?\n\nQuery: {query}\nDocument 1: {doc1}\nDocument 2: {doc2}\n\nAnswer with '1' for Document 1, '2' for Document 2:"
response = openai.ChatCompletion.create(
model="gpt-4-turbo",
messages=({"role": "user", "content": prompt})
)
winner = response('choices')(0)('message')('content').strip()
if winner == '1':
scores(doc1) = scores.get(doc1, 0) + 1
scores(doc2) = scores.get(doc2, 0)
elif winner == '2':
scores(doc2) = scores.get(doc2, 0) + 1
scores(doc1) = scores.get(doc1, 0)
# Sort documents based on scores
ranked_docs = sorted(scores.items(), key=lambda item: item(1), reverse=True)
return (doc for doc, score in ranked_docs)
# Example usage
query = "What are the benefits of using LLMs for document reranking?"
documents = (
"LLMs can process large amounts of text quickly.",
"They require extensive fine-tuning for specific tasks.",
"LLMs can generate human-like text responses.",
"They are limited by their training data and may produce biased results."
)
# Pointwise Reranking
for doc in documents:
score = pointwise_rerank(query, doc)
print(f"Document: {doc} - Relevance Score: {score}")
# Listwise Reranking
reranked_listwise = listwise_rerank(query, documents)
print(f"Listwise Reranked Documents: {reranked_listwise}")
# Pairwise Reranking
reranked_pairwise = pairwise_rerank(query, documents)
print(f"Pairwise Reranked Documents: {reranked_pairwise}")
Producción:
Document: LLMs can process large amounts of text quickly. - Relevance Score:
8Document: They require extensive fine-tuning for specific tasks. - Relevance
Score: 6Document: LLMs can generate human-like text responses. - Relevance Score: 9
Document: They are limited by their training data and may produce biased
results. - Relevance Score: 5Listwise Reranked Documents: ('LLMs can generate human-like text responses.',
'LLMs can process large amounts of text quickly.', 'They require extensive
fine-tuning for specific tasks.', 'They are limited by their training data
and may produce biased results.')Pairwise Reranked Documents: ('LLMs can generate human-like text responses.',
'LLMs can process large amounts of text quickly.', 'They require extensive
fine-tuning for specific tasks.', 'They are limited by their training data
and may produce biased results.')
5. API de rerancia
Las API privadas de reritis ofrecen una solución conveniente para las organizaciones que buscan mejorar los sistemas de búsqueda con relevancia semántica sin una inversión de infraestructura significativa. Empresas como Cohere, Jina y Mixedbread ofrecen estos servicios.
- Adherirse: Modelos a medida para documentos en inglés y multilingües, fragmentación automática de documentos y puntajes de relevancia normalizados entre 0 y 1.
- Nombre: Se especializa en mejorar los resultados de búsqueda con comprensión semántica y longitudes de contexto más largas.
- Pan de mixta: Ofrece una familia de modelos de referencia de código abierto, proporcionando flexibilidad para la integración en la infraestructura de búsqueda existente.
Código de ejemplo:
Instale la biblioteca Rankllm:
pip install --upgrade --quiet cohere
Configure el cohere y contextualCompressionCriever:
from langchain.retrievers.contextual_compression import ContextualCompressionRetriever
from langchain_cohere import CohereRerank
from langchain_community.llms import Cohere
from langchain.chains import RetrievalQA
llm = Cohere(temperature=0)
compressor = CohereRerank(model="rerank-english-v3.0")
compression_retriever = ContextualCompressionRetriever(
base_compressor=compressor, base_retriever=retriever
)
chain = RetrievalQA.from_chain_type(
llm=Cohere(temperature=0), retriever=compression_retriever
)
Producción:
{'query': 'What did the president say about Ketanji Brown Jackson','result': " The president speaks highly of Ketanji Brown Jackson, stating
that she is one of the nation's top legal minds, and will continue the
legacy of excellence of Justice Breyer. The president also mentions that he
worked with her family and that she comes from a family of public school
educators and police officers. Since her nomination, she has received
support from various groups, including the Fraternal Order of Police and
judges from both major political parties. \n\nWould you like me to extract
another sentence from the provided text? "}
Elegir el Reranker adecuado para el trapo
Seleccionar el Reranker óptimo para RAG requiere una evaluación cuidadosa de varios factores:
- Mejora de relevancia: El objetivo principal es mejorar la relevancia de los resultados de búsqueda. Use métricas como NDCG (ganancia acumulativa con descuento normalizada) o atribución para evaluar el impacto del Reranker.
- Estado latente: Mide el tiempo adicional que el vuelco se agrega al proceso de búsqueda. Asegúrese de que permanezca dentro de los límites aceptables para los requisitos de su solicitud.
- Entendimiento contextual: Considere la capacidad del Reranker para manejar diferentes longitudes de contexto en consultas y documentos.
- Capacidad de generalización: Asegúrese de que el Reranker funcione bien en diferentes dominios y conjuntos de datos para evitar el sobreajuste.
Última investigación
Los codificadores cruzados emergen como una opción prometedora
Investigaciones recientes han destacado la efectividad y la eficiencia de los codificadores transversales, especialmente cuando se combinan con retrievers fuertes. Si bien las diferencias de rendimiento en el dominio pueden ser sutiles, los escenarios fuera del dominio revelan el impacto significativo que puede tener un Reranker. Los codificadores cruzados han demostrado la capacidad de superar a la mayoría de las LLM en tareas de rehabilitación (excepto GPT-4 en algunos casos) mientras son más eficientes.
Conclusión
Elegir el Reranker correcto para RAG es importante para mejorar los sistemas y garantizar resultados de búsqueda precisos. A medida que evoluciona el panorama de RAG, tener una visibilidad clara en toda la tubería ayuda a los equipos a construir sistemas efectivos. Al abordar los desafíos en el proceso, los equipos pueden mejorar el rendimiento. Comprender los diferentes tipos de vueltas y sus fortalezas y debilidades es esencial. Elegir y evaluar cuidadosamente a su Reranker para RAG puede mejorar la precisión y eficiencia de sus aplicaciones de RAG. Este enfoque reflexivo conduce a mejores resultados y un sistema más confiable.
Inicie sesión para continuar leyendo y disfrutando de contenido curado por expertos.
Documentos (Tagstotranslate)