Quand une question cible une seule ligne à l'intérieur d'un tableau, récupérer tout le tableau force le modèle génératif à filtrer 39 lignes non pertinentes. L'unité qui correspond à la question est une ligne, pas tout le rectangle. Cet article construit un index au niveau des lignes qui transforme chaque ligne de données en son propre chunk récupérable, de sorte qu'une requête comme « plafond pour vol de véhicule ? » renvoie exactement cette ligne avec ses en-têtes de colonnes.
La fonction serialize_table_rows analyse le line_df du parseur, regroupe les lignes contiguës avec des barres verticales en tableaux, lit la ligne d'en-tête au-dessus du séparateur et émet une ligne de sortie par ligne de données. Chaque chunk est sérialisé sous la forme col: val | col: val, qu'un LLM lit naturellement et qui se compose avec les récupérateurs à mots-clés et à embeddings existants sans modification.
L'index au niveau des lignes est une seconde échelle, pas un remplacement. Un dispatcher route les recherches ciblées vers l'index au niveau des lignes, les questions de synthèse se déclenchent sur toutes les lignes du même tableau (détectées via le table_id partagé) et les requêtes mixtes combinent les deux. Les récupérateurs en aval qui n'activent jamais l'indexation au niveau des lignes continuent de fonctionner sans changement, tandis que ceux qui l'activent lisent explicitement le second cadre.
Le code exécutable est disponible dans doc-intel/notebooks-vol1, démontrant serialize_table_rows sur le Tableau 1 de l'article Attention et renvoyant une seule ligne au lieu de tout le tableau.
Source: Towards Data Science · Résumé par HeadlinesBriefing