Tutorial de RAG-Anything: cree una canalización de recuperación multimodal para texto, tablas, ecuaciones e imágenes en Colab
imprimir(“\n[5/10] Creando un informe multimodal sintético…”) Monthly_data = pd.DataFrame( { “Mes”: [“Jan”, “Feb”, “Mar”, “Apr”, “May”, “Jun”]”Volumen de consulta”: [1200, 1700, 2100, 2600, 3300, 4100]”Precisión híbrida”: [0.71, 0.74, 0.79, 0.83, 0.87, 0.91]”Latencia promedio ms”: [980, 920, 850, 790, 760, 730]} ) table_md = datos_mensuales.to_markdown(index=False) plt.figure(figsize=(8, 4.8)) plt.plot(datos_mensuales[“Month”]datos_mensuales[“Query Volume”]marcador=”o”, etiqueta=”Volumen de consulta”) plt.plot(monthly_data[“Month”]datos_mensuales[“Hybrid Accuracy”] * 4000, marcador=”s”, label=”Precisión híbrida escalada”) plt.title(“Tendencia de calidad y uso de RAG multimodal”) plt.xlabel(“Mes”) plt.ylabel(“Volumen/Precisión escalada”) plt.legend() plt.grid(True, alpha=0.3) plt.text( 0.02, 0.95, “Figura sintética: el uso aumenta mientras la latencia cae”, transform=plt.gca().transAxes, fontsize=9, verticalalignment=”top”, bbox=dict(boxstyle=”round”, alpha=0.15), ) chart_path = ASSET_DIR / “raganything_quality_trend.png” plt.tight_layout() plt.savefig(chart_path, dpi=180) plt.close() report_pdf_path = ASSET_DIR / “synthetic_multimodal_rag_report.pdf” c = canvas.Canvas(str(report_pdf_path), pagesize=letter) ancho, alto = letra c.setFont(“Helvetica-Bold”, 18) c.drawString(0,8 * pulgadas, altura – 0,8 * pulgadas, “Informe de evaluación de RAG multimodal sintético”) c.setFont(“Helvetica”, 10) líneas_introducción = [
“This report evaluates a synthetic multimodal RAG pipeline for enterprise documents.”,
“The knowledge base includes text, tables, equations, and visual evidence.”,
“The central hypothesis is that hybrid retrieval improves answer quality when evidence spans modalities.”,
]
y = altura – 1,25 * pulgada para línea en intro_lines: c.drawString(0,8 * pulgada, y, línea) y -= 0,22 * pulgada c.setFont(“Helvetica-Bold”, 12) c.drawString(0,8 * pulgada, y – 0,1 * pulgada, “Tabla 1. Medidas mensuales del sistema”) y -= 0,4 * pulgada c.setFont(“Courier”, 7.5) para la fila en table_md.splitlines(): c.drawString(0.8 * pulgadas, y, fila[:120]) y -= 0,17 * pulgada c.setFont(“Helvetica-Bold”, 12) c.drawString(0,8 * pulgada, y – 0,15 * pulgada, “Ecuación 1. Puntuación multimodal ponderada”) y -= 0,45 * pulgada c.setFont(“Helvetica”, 9) c.drawString( 0,8 * pulgada, y, “Puntuación(q, d) = alfa * Sim_text(q, d) + beta * Sim_graph(q, d) + gamma * Sim_visual(q, d)”, ) y -= 0,5 * pulgadas c.drawImage(str(chart_path), 0,8 * pulgadas, y – 2,8 * pulgadas, ancho=6,5 * pulgadas, alto=2,6 * pulgadas) c.showPage() c.setFont(“Helvetica-Bold”, 16) c.drawString(0,8 * pulgada, altura – 0,8 * pulgada, “Interpretación y hallazgos”) c.setFont(“Helvetica”, 10) hallazgos = [
“Hybrid retrieval combines semantic similarity with graph-based relationship navigation.”,
“The synthetic table shows accuracy improving from 0.71 to 0.91 over six months.”,
“The generated figure shows query volume increasing while latency gradually decreases.”,
“Equation-level retrieval is useful when the question depends on scoring logic rather than plain prose.”,
“A multimodal system should preserve page index, captions, footnotes, and local image paths for traceability.”,
]
y = altura – 1,25 * pulgadas para buscar en los resultados: c.drawString(0,8 * pulgadas, y, “- ” + hallazgo) y -= 0,28 * pulgadas c.save() print(f”Gráfico creado: {chart_path}”) print(f”PDF creado: {report_pdf_path}”) print(“\nTabla sintética:”) display(monthly_data)