HeadlinesBriefing HeadlinesBriefing.com

Фрагменты таблиц по строкам для RAG-поиска

Towards Data Science •
×

Когда вопрос касается одной строки внутри таблицы, извлечение всей таблицы заставляет генеративную модель фильтровать 39 нерелевантных строк. Единица, соответствующая вопросу, — это одна строка, а не весь прямоугольник. Эта статья строит индекс на уровне строк, который превращает каждую строку данных в отдельный извлекаемый фрагмент, так что запрос вроде «лимит за угон автомобиля?» возвращает ровно эту строку вместе с заголовками её столбцов.

Функция serialize_table_rows сканирует line_df парсера, группирует последовательные строки с разделителями-трубами в таблицы, читает строку заголовка над разделителем и выдаёт одну выходную строку на каждую строку данных. Каждый фрагмент сериализуется в виде col: val | col: val, что LLM читает естественно и что сочетается с существующими keyword- и embedding-ретриверами без изменений.

Индекс на уровне строк — это второй масштаб, а не замена. Диспетчер направляет целевые запросы в индекс на уровне строк, синтезирующие вопросы срабатывают по всем строкам одной таблицы (обнаруживаются через общий table_id), а смешанные запросы объединяют оба подхода. Даунстрим-ретриверы, которые никогда не включают индексацию на уровне строк, продолжают работать без изменений, а те, что включают, явно читают второй фрейм.

Исполняемый код доступен в doc-intel/notebooks-vol1, демонстрируя serialize_table_rows на Таблице 1 из статьи Attention и возвращая одну строку вместо всей таблицы.

Источник: Towards Data Science · Сводку подготовил HeadlinesBriefing