Стандартный RAG-пайплайн разбивает документы на фрагменты, строит векторные представления и ищет по косинусному сходству. Этого достаточно, чтобы найти похожий абзац, но недостаточно, чтобы ответить на вопросы вроде «покажи технические статьи с нейтральным тоном и высокой полнотой изложения» или «какие тексты затрагивают тему безопасности, но не содержат рекламы». Для таких запросов нужны структурированные метаданные — и именно их генерирует проект text-metadata-generator.
Инструмент работает так: каждый документ из коллекции отправляется в LLM с инструкцией вернуть JSON-объект с заданными полями. Схема проверяется автоматически, что исключает «галлюцинации» в структуре ответа. Среди генерируемых полей — заголовок, краткое резюме, основная идея, список тем, ключевые слова, жанр, тональность, признак NSFW, наличие рекламы, оценка полноты и анализ демагогических приёмов. После обработки документы хранятся с двумя типами данных: исходными метаданными (автор, дата, рейтинг) и синтетическими, созданными LLM. Поиск строится как комбинация SQL-предикатов по структурированным полям и векторного поиска по семантике.
| Поле метаданных | Тип | Пример значения |
|---|---|---|
| Title | строка | Анализ песни «Воздух» группы Nautilus Pompilius |
| Summary | строка | Краткое резюме содержания документа |
| Themes | список | Внутренняя свобода, бессилие власти |
| Genre | строка | fiction / poetry / song lyrics |
| Sentiment polarity | строка | mixed |
| Completeness score | число 0–1 | 1 |
| Is NSFW | булево | false |
| Has Advertising | булево | false |
| Demagoguery severity | строка | none |
Автор проекта протестировал подход на корпусе из 13 275 статей с Хабра. Это позволяет, например, связать рейтинг статьи с признаком NSFW или тональностью и искать закономерности, которые не видны при обычном полнотекстовом поиске. В качестве дополнительной демонстрации гибкости метода тот же пайплайн был запущен на текстах песен — в частности, на «Воздухе» Nautilus Pompilius и Still Alive из игры Portal. LLM корректно определила жанры, выделила темы и оценила тональность обоих текстов, хотя они принципиально различаются по природе.
text-metadata-generator отправляет каждый документ в LLM и сохраняет результат в виде JSON, проверенного по схеме.
Одна из заявленных возможностей — запуск нескольких разных LLM на одном тексте для получения «синтетического плюрализма» интерпретаций. Это актуально для задач, где важна многогранность анализа: например, при разметке новостного архива или исследовательского корпуса. Время обработки одного документа зависит от модели: в примере с песней Nautilus Pompilius зафиксировано время выполнения 75 408 мс при 2 923 входных и 867 выходных токенах.
Практические сценарии применения, которые называет автор: личная библиотека документов с поиском через SQL и семантику, разбор накопившихся заметок в Obsidian или Markdown-файлов в git-репозитории, аналитика по корпоративным документам. Подход не требует дообучения модели — достаточно правильно составить JSON-схему и настроить промпт. Проект распространяется как open-source.



