1oxqchrewnkjn4d7ledjroa.png

Explorando el desarrollo robusto de RAG con LlamaPacks, Lighthouz AI y Llama Guard

Imagen generada por DALL-E 3 por el autor

Desde su lanzamiento a finales de noviembre de 2023, LlamaPacks ha seleccionado más de 50 paquetes para ayudar a impulsar el desarrollo de su canal RAG. Entre ellos, surgieron muchos paquetes de recuperación avanzados. En este artículo, profundicemos en siete paquetes de recuperación avanzados; vea el diagrama a continuación.

Fuente de imagen: Publicación de LlamaIndex X sobre siete LlamaPacks de recuperación avanzada

Realizaremos dos pasos:

  • Dado un caso de uso, generaremos los puntos de referencia utilizando Lighthouz AutoBench y evaluaremos los paquetes con Lighthouz Eval Studio para determinar cuál se adapta mejor a nuestro caso de uso.
  • Una vez que se identifica el paquete ganador, agregaremos Llama Guard al proceso RAG, modificaremos su taxonomía personalizada, lo reevaluaremos con Eval Studio y observaremos cómo cambia la puntuación de evaluación para categorías como la inyección rápida.

Primero, veamos estos siete LlamaPacks de recuperación avanzada para ver cómo funcionan bajo el capó.

Fusión híbrida

Este paquete reúne los recuperadores de vectores y los recuperadores BM25 (Best Match 25) mediante fusión. BM25 estima la relevancia de los documentos para una consulta de búsqueda determinada, lo que ayuda a clasificar los documentos en orden de relevancia más probable para las necesidades del usuario.

Hybrid Fusion fusiona los resultados del recuperador de vectores y del recuperador BM25 listos para usar; Puede proporcionar otras plantillas de Retriever que desee personalizando este paquete.

documents = SimpleDirectoryReader(RAG_DIRECTORY).load_data()
node_parser = SimpleNodeParser.from_defaults()
nodes = node_parser.get_nodes_from_documents(documents)

# download and install dependencies
HybridFusionRetrieverPack = download_llama_pack(
"HybridFusionRetrieverPack", "./hybrid_fusion_pack"
)

# create the pack
hybrid_fusion_pack = HybridFusionRetrieverPack(
nodes,
chunk_size=256,
vector_similarity_top_k=2,
bm25_similarity_top_k=2
)