Я засадив ШІ копати архіви по селах

💡 Усі статті, обговорення, новини про AI — в одному місці. Приєднуйтесь до AI спільноти!

Всім привіт. Мене звати Володимир, працюю девопсом, а у вільний час зробив штуку, яка не окупиться ніколи, і саме тому вона мені цікава.

На цьому тижні я написав на Reddit та Тредс, і пост несподівано розлетівся. Але що мене здивувало: найбільше питали не про історію, а про інженерію, тобто як я не даю моделі брехати. Тут аудиторія, яка таке питає професійно, тому розкажу саме цей бік, а не зворушливу частину.

З чого почалось

Спробуйте загуглити своє село або село, звідки ваші баба з дідом. Ви знайдете один і той самий абзац: дата заснування, скільки людей, рядок про війну. Він стоїть слово в слово на десяти сайтах, і від повторення виглядає як факт. Звідки він узявся, не перевіряв ніхто, бо там ні трафіку, ні грошей.

Нормальний шлях перевірити це такий: Похилевич 1864, Słownik geograficzny, списки 1900 року, дореволюційна преса через LIBRARIA, томи «Реабілітованих», метричні книги з ЦДІАК і ДАКО. Сотні годин над сканами, частина з них рукописні і не українською. Жодна жива людина цього для свого села не зробить, бо це не вечір, це місяці.

Чому це не скрейпер

Перше, що хочеться зробити, це написати парсер. Не працює: кожне джерело це інший формат, інша мова, інша орфографія, а половина взагалі картинка з рукописом. Модель тут не «генерує контент», вона робить нудну роботу: гризе OCR газети столітньої давнини, зводить написання одного прізвища в п’яти варіантах, знаходить той самий двір у двох ревізіях.

Як виглядає прогін по одному селу

Це не один промпт. Село йде конвеєром:

  • розвідники, кожен у своїй зоні джерел (архівні описи, преса, метрики, краєзнавство, люди поіменно), і кожен не знає, що знайшли інші
  • зведення, яке складає їхні звіти в один файл і навмисно НЕ згладжує суперечностей, а виписує їх окремо
  • автор сторінки, який бачить тільки свій зріз зведення, і пише з виноскою під кожним твердженням
  • звірка: окрема модель з чистим контекстом читає готову сторінку проти її джерел, не знаючи, хто її писав. На біографіях ганяю двома моделями незалежно, бо розбіжність між ними це найкращий сигнал, що місце слабке

Як я не даю галюцинувати

Два прийоми, і обидва нудні.

Перший: твердження без джерела не існує. Під кожним реченням на сайті виноска, звідки воно. Це не гарантія істини, бо джерело саме може брехати, але це гарантія, що є що перевіряти, і видно кому саме не вірити.

Другий: гейт на білді. Якщо сторінка не сходиться зі своїми джерелами, вона не публікується, лишається чернеткою, а список блокерів я читаю руками. Тобто «майже правильно» не виходить у світ взагалі, і це рішення, яке довелось приймати свідомо: краще хай село чекає місяць, ніж стоїть вигадана дата.

Що не вийшло

Рукопис. Я пробував спеціалізовані HTR-моделі, і вони вигадують прізвища, що для метричної книги означає «вигадують людей». Довелось відкотитись до дорожчого варіанту: сторінка за сторінкою очима моделі, по одній, без довгих циклів.

І про ціну, бо тут люблять конкретику: одне село це мільйони токенів, наприклад, останнє село увібрало в себе 6.3м токенів. Лімітом я вперся швидко, і основна оптимізація була не в промптах, а в тому, щоб агент не дивився на скани, які йому не потрібні.

Де воно зараз

42 села Макарівщини на Київщині, близько 350 сторінок про події, 117 біографій, 8717 записів із метричних книг, 546 джерел з посиланнями. Безкоштовно, жодної реєстрації чи смс.

mistok.wiki

Напрацювання зі сканів і метрик поступово складаю сюди: github.com/OuFinx/mistok-chytalnia

Якщо ваші люди з Макарівщини, спробуйте пошукати своїх. І якщо знаєте джерело, яке я проґавив, кидайте, буду вдячний.

Та і в цілому якщо будуть якісь ідеї — то кажіть.

👍ПодобаєтьсяСподобалось7
До обраногоВ обраному2
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Серед них є дані респресованих людей та людей які постраждали за проукраїнську позицію в часи репресій. А для чого висвітлювати їх дані і робити видимими в публічному просторі ЗАРАЗ? Щоб спецслужби РФ і купа сепаратистів могли легко вичислити і грохнути їх нащадків в Україні? Щоб було видно хто з якої сім’ї походить і де знаходяться їх нащадки? Чи є доречними подібні сервіси саме зараз? @Volodymyr Stetsenko спільнота ДОУ хотіла б побачити скан вашого паспорта а також тих хто займається розробкою та просуванням цього сайту. До речі, щоб взяти дані з фіз. архіву це треба заяву написати де вказати паспортні дані і прописку, здогадайтесь з одного разу чому так.

Вадиме, дякую, питання слушне, і я його собі теж ставив

Що на сайті є, а чого немає. Дані репресованих я беру з уже опублікованих джерел: томи «Реабілітованих історією», які держава видає з 90-х, Національна книга пам’яті, reabit.org.ua. Нових архівних справ, яких ще ніхто не оприлюднював, я не відкриваю. Архіви радянських репресивних органів в Україні відкриті законом 2015 року саме для того, щоб ці люди мали імена, а не лишались цифрою

Про живих правило жорстке: жодних адрес, телефонів, місць проживання й родинних звʼязків, з яких видно, де хто зараз мешкає. Про живу людину сторінка можлива лише з публічного джерела або за її згодою. Якщо хтось знайде на сайті свою родину й не захоче, щоб вона там була, досить написати через форму правок — приберу без питань і пояснень

Щодо ризику «вичислити нащадків»: із запису 1937 року про засудженого селянина не видно, де сьогодні живуть його правнуки. Ті самі рядки роками лежать у відкритих книгах і на державних сайтах. Якщо бачите конкретну сторінку, де межу перейдено, дайте посилання, я подивлюсь сьогодні ж

Паспорта не викладатиму, як і ніхто тут на ДОУ. Але я не анонім: пишу під своїм іменем, профіль і місце роботи відкриті

Цікава теза "

Якщо хтось знайде на сайті свою родину й не захоче, щоб вона там була

" - це нащадки репресованих мають щодня дружно передивлятись цей сайт чи не виклали часом інформацію про їх родичів? А скільки людей знають про існування цього сайту щоб туди щодня заходити і перевіряти? А якщо знайдуть через рік а ця інфа вже рік там провисіла і всі кому треба вже зібрали інформацію — який сенс щось видаляти через рік-два? Чи ви плануєте оповіщення нащадків персонально і тільки за їх згодою щось публікувати? А якщо наприклад брат дасть згоду а сестра ні — що тоді?

Свою позицію я пояснив і записав на сайті, щоб не повторювати її в коментарях: mistok.wiki/pravky . Якщо знайдете конкретну сторінку, з якої можна дійти до живої людини, пишіть, розгляну першою.

Гарний матеріал і крута задумка!
Може спробувати податись на грант, щоб була змога більше опрацювати?

Дякую за коментар, я вже подав заявку на вихідних в Antropic та OpenAI
Там, правда, дуже строгі реквайременти, і я ніде під них (поки) не підпадаю, але я все одно подав, може їм там теж сподобається ідея та вони зможуть щось запропонувати

чи розглядали ви перенесення процесу на LangChain і застосування дешевших моделей. Тоді ШІ стає лише окрестратором над класичним конвеєром з коду (який виконується практично безкоштовно). А застосування будь яких інших ,дешевших, моделей по API дасть драматичне зниження вартості.

Дякую, я розглядав

  1. За API я не плачу. У мене підписка Claude Max, фіксована ціна на місяць. Тож, поки мене обмежують лише тижневі ліміти й час
  2. Конвеєр з коду вже є. Пошук по корпусу, цитати за локатором, звірку чисел і дат та гейт перед публікацією робляться скриптами без моделі, а модель лишається там, де потрібне лише логічне рішення
  3. Дешеві й локальні моделі я міряв, і вони провалилися:
  • Рукописні скани. Kraken я дотреновував ніч на своїй RTX 4070 Ti на відкритому наборі RUKOPYS. На ньому модель давала 78% точності, а на наших бланках 1930-х лише 36%, на самому рукописі 55,7% помилок на символ. Найкраща готова модель, trocr-large-rukopys, дала 42,7%, локальна Qwen2.5-VL 33%. Щоб прізвища читалися чисто, треба ≤8%. До того ж ці моделі впевнено вигадують імена там, де я сам не зміг розібрати текст: «Катя Ільк» у них стає «Катя Власова»
  • Перевірка фактів. Дешевша модель дала нуль зауважень там, де сильніша знайшла вісім.
І виходить так, що якщо після дешевої моделі кожен рядок треба звіряти оком — то вона нічого не економить. Поки економія приходила лише тоді, коли я замінював модель локальним скриптом для частини роботи, а не іншою моделлю. Та і LangChain тут нічого не змінює, це ж просто інша обв’язка над тими самими викликами

И теперь мы знаем кто сольет нас всех москалям и искуственному интеллекту.

Ця інформація і так є відкритою в інтернеті, кожен може взяти свою Шішку та опрацювати її

Оце справді круте застосування ШІ. Що найцікавіше з того, що ви накопали?

Дякую за коментар)

Найбільше здивувало, наскільки це порожня тема. В Україні є фактично один відкритий датасет рукописного тексту — RUKOPYS від УКУ та AI HOUSE, вийшов цього року. Річ хороша, але він починається з 1920-х і робився під державні документи: заяви, журнали, довідки. А метрики XIX століття, дореформена орфографія, польські й російські писарські руки, мартирологи, туди не входять взагалі. Тобто для того, з чим реально стикається будь-хто, хто лізе в архів по своє село, бенчмарку немає

І більшість того, що написано про українські села в інтернеті, ніхто ніколи не перевіряв. Один і той самий абзац кочує по десятках сайтів і сприймається як факт. Коли починаєш з першоджерела, картина часто виходить іншою