Thanks to visit codestin.com
Credit goes to github.com

Skip to content

AndreyLeonov80/gost

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

45 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

gost

ИИ для работы с рассуждениями и QA по ГОСТам

Задача https://habr.com/ru/companies/omk-it/articles/850434/

Верхнеуровневая текущая и стратегическая "Архитекура ИИ решения"

Архитектура ИИ решения

Методология на примере ГОСТ 14637-89.pdf.

  1. Сегментация и очистка PDF-файла

    Разделение документа на информационные блоки и таблицы.
    Очистка данных от лишней информации.
    Результат сохраняется в: gost/back/py/datasource/infoblocks/ГОСТ 14637-89 - null.txt
    
  2. Генерация пакета QA через LLM и промт-инжиниринг

    Файлы находятся в директории: gost/back/py/datasource
    
  3. Обучение модели

    Выполнить

    pip install -r requirements.txt
    

    В gost/back/py/train.py

    указать полный путь с json файлами в директории datasource например
    base_path = '/Users/aiapi/Desktop/prj_omk/omkllm/291024/gost/back/py'
    
    указать модель обучения которая сохранится в файл self.model_path = 'trained_model.pkl' (или trained_model_promt_template.pkl)
    

    Запустить gost/back/py/train.py для обучения модели на основе QA данных

    логи
    qa_model_20241030_115625.log для модели trained_model.pkl
    trained_model_promt_template.pkl.log для модели trained_model_promt_template.pkl (или trained_model_promt_template.pkl)
    
  4. Проверяем модель на copilot gost/back/py/copilot.py

    указать полный путь для pkl модели например
    base_path = '/Users/aiapi/Desktop/prj_omk/omkllm/291024/gost/back/py'
    
    указать pkl модель self.model_path = 'trained_model.pkl' (или trained_model_promt_template.pkl)
    

Варианты LLM:

Тюнинг параметров LLM от которых зависити результат - могу описать по запросу.

Демо-сервер на Flutter:

Работает на простой модели поиска по готовым QA из директории datasource gost/back/py/datasource

Видео демонстрация: https://cloud.mail.ru/public/K75R/Rc9Jq5pGZ

Модели и результаты:

  • trained_model.pkl (обучена на ГОСТ 14637-89.pdf через гиперсегментацию ГОСТа на инфоблоки/таблицы и генерацию QA из директории datasource gost/back/py/datasource)

    Видео https://cloud.mail.ru/public/jSCk/txkSYpVw7

    промт gost/back/py/datasource/infoblocks/promts.txt
    QA обучающая выборка:
     - gost/back/py/datasource/infoblocks
     - gost/back/py/datasource/tables
    
    демо можно посмотреть в интерактивном режиме подняв
    copilot gost/back/py/copilot.py
    с прописанной моделью
    self.model_path = 'trained_model.pkl'
    
  • trained_model_promt_template.pkl (обучена на ГОСТ 14637-89.pdf через вариации промта "Какие границы для испытания на временное сопротивление для широкополосного проката, марка стали Ст3сп, толщина проката 20, категория 5 для ГОСТ 14637-89?")

    промт gost/back/py/datasource/infoblocks2/gen-llm plk promt.txt
    QA обучающая выборка gost/back/py/datasource/infoblocks2/89-1.json
    
    демо можно посмотреть в интерактивном режиме подняв
    copilot gost/back/py/copilot.py
    с прописанной моделью
    self.model_path = 'trained_model_promt_template.pkl'
    

Дополнительные методы улучшения модели MaterialsQAModel

Методы обработки векторных представлений

transform_embeddings()

  • Контекстные эмбеддинги на основе трансформеров
  • Снижение размерности (UMAP/t-SNE)
  • Поддержка многоязычных эмбеддингов
  • Обработка внесловарных токенов

optimize_vectorizer_parameters()

  • Настройка параметров TF-IDF (max_features, ngram_range, min_df)

      TF-IDF (Term Frequency-Inverse Document Frequency) параметры:
      
      1. `max_features`: 
         - Ограничивает размер словаря
         - Пример: max_features=1000 оставит только 1000 самых важных слов
      
      2. `ngram_range`: 
         - Определяет, сколько слов рассматривать вместе
         - (1,1): отдельные слова ["сталь", "прокат"]
         - (1,2): слова и пары ["сталь", "прокат", "стальной_прокат"]
      
      3. `min_df`:
         - Минимальная частота появления термина в документах
         - min_df=2: игнорировать слова, встречающиеся реже 2 раз
         - Помогает убрать редкие/опечатки
      
      Эти параметры влияют на качество векторизации текста и точность поиска похожих вопросов.
    
  • Оптимизация размера словаря

  • Отбор признаков

  • Экспериментальная настройка для улучшения точности

      Экспериментальная настройка включает:
      
      1. Тестирование разных комбинаций параметров:
           - Размер словаря
           - Длина n-грамм
           - Пороги частот
      
      2. Процесс оптимизации:
           - Разделение данных на тренировочную/тестовую выборки
           - Перебор параметров
           - Измерение метрик качества для каждой конфигурации
           - Выбор лучшей комбинации параметров
      
      3. Критерии:
           - Точность ответов
           - Скорость работы
           - Потребление памяти
    

Методы работы с данными

augment_training_data()

  • Генерация вариаций вопросов

      Генерация вариаций вопросов включает создание разных формулировок одного и того же вопроса:
      
      1. Методы генерации:
         - Синонимическая замена
         - Изменение структуры предложения
         - Добавление/удаление уточняющих слов
         - Использование языковых моделей (GPT, T5)
      
      2. Пример вариаций:
         Исходный: "Какая толщина проката для стали марки Ст3пс?"
         Варианты:
         - "Для Ст3пс какой должна быть толщина проката?"
         - "Укажите толщину проката стали Ст3пс"
         - "Какой толщины должен быть прокат из стали марки Ст3пс?"
    
  • Обратный перевод для создания парафразов

      Обратный перевод (back translation) - это техника создания парафразов через перевод текста:
      
      1. Процесс:
         - Исходный текст → перевод на другой язык → обратный перевод на исходный язык
      
      2. Пример:
         Исходный: "Какая толщина проката для стали марки Ст3пс?"
           → English: "What is the thickness of rolled steel grade St3ps?"
           → Обратно: "Какова толщина стального проката марки Ст3пс?"
      
      3. Преимущества:
         - Сохраняет смысл
         - Создает естественные формулировки
         - Автоматизируется через API переводчиков
    
  • Использование T5/GPT для перефразирования

      T5/GPT для перефразирования - это использование языковых моделей для создания вариаций текста:
      
      1. T5 (Text-to-Text Transfer Transformer):
         - Указываем команду: "paraphrase: [текст]"
         - Модель генерирует перефразированные версии
      
      2. GPT:
         - Задаем промпт: "Перефразируй вопрос разными способами"
         - Получаем несколько вариантов
      
      3. Пример:
         Исходный: "Какие требования к прочности стали?"
         GPT варианты:
          - "Какими должны быть прочностные характеристики стали?"
          - "Каковы нормативы по прочности для стали?"
          - "Какие показатели прочности установлены для стали?"
    

    Например перефразирование для "Какие границы для испытания на временное сопротивление для широкополосного проката, марка стали Ст3сп, толщина проката 20, категория 5 для ГОСТ 14637-89?"

      Вот несколько вариантов перефразирования:
    
      Для широкополосного проката из стали Ст3сп категории 5, толщиной 20 мм, какой диапазон временного сопротивления установлен согласно ГОСТ 14637-89?
      
      В соответствии с ГОСТ 14637-89, каковы предельные значения временного сопротивления для широкополосного проката (сталь Ст3сп, категория 5) при толщине 20 мм?
      
      Укажите интервал значений временного сопротивления по ГОСТ 14637-89 для широкополосного проката следующих параметров: сталь Ст3сп, толщина 20 мм, категория 5.
      
      По ГОСТ 14637-89, какой допустимый диапазон временного сопротивления предусмотрен для широкополосного проката из стали Ст3сп (толщина 20 мм, категория 5)?
      
      Определите пределы временного сопротивления согласно ГОСТ 14637-89 для широкополосного проката категории 5 из стали Ст3сп толщиной 20 мм.
    
      Какие пределы прочности при растяжении установлены для широкополосного проката из стали Ст3сп толщиной 20 мм, категории 5, согласно ГОСТ 14637-89?
    
      Какие требования к временному сопротивлению широкополосных стальных катушек (марка стали Ст3сп) толщиной 20 мм, относящихся к категории 5 согласно ГОСТ 14637-89? 
    
  • Сохранение семантики ответов

      Сохранение семантики ответов - это обеспечение того, чтобы смысл ответа оставался неизменным при различных преобразованиях:
    
      1. Проверки:
         - Соответствие техническим терминам
         - Сохранение числовых значений
         - Неизменность условий и ограничений
    
      2. Пример:
         Исходный: "Прочность стали на разрыв 500 МПа при 20°C"
         Должен сохранять:
         - Значение (500 МПа)
         - Условие (при 20°C)
         - Тип испытания (на разрыв)
    
      3. Важные аспекты:
         - Точность технических данных
         - Корректность единиц измерения
         - Сохранение причинно-следственных связей
    

expand_question_variants()

  • Создание парафразов вопросов

      Парафраз вопросов - это переформулирование одного и того же вопроса разными способами, сохраняя его смысл. Например:
      
      Исходный вопрос: "Какая температура плавления стали?"
      
      Парафразы:
      - "При какой температуре сталь начинает плавиться?"
      - "Точка плавления стали - это сколько градусов?"
      - "Какой температурный порог нужен для расплавления стали?"
    
      Это помогает модели лучше понимать разные формулировки одного запроса и давать корректные ответы независимо от того, как задан вопрос.
    
  • Улучшение понимания различных формулировок

      Улучшение понимания различных формулировок включает:
    
      1. Технические аспекты:
         - Распознавание синонимов
         - Учет профессионального сленга
         - Обработка разного порядка слов
    
      2. Пример обработки:
         "Предел прочности стали"
         = "Временное сопротивление стали"
         = "Максимальное напряжение разрушения стали"
         = "Разрушающее напряжение стали"
    
      3. Преимущества:
         - Точные ответы на разные формулировки
         - Понимание профессиональной терминологии
         - Гибкость в обработке запросов
    
  • Расширение обучающей выборки

rank_data_sources()

  • Ранжирование источников по точности
  • Оценка надежности источников
  • Приоритизация качественных данных

Методы оценки качества

calculate_bert_similarity()

  • Предобученные BERT эмбеддинги

    BERT эмбеддинги (предварительно обученные) - это векторные представления слов, полученные после обучения модели BERT на больших текстовых корпусах:
    
    1. Характеристики:
       - Учитывают контекст слова
       - Разные вектора для многозначных слов
       - Содержат семантическую информацию
    
    2. Пример:
       "сталь" в разных контекстах:
       - "закаленная сталь" → вектор отражает технические свойства
       - "стальные нервы" → вектор отражает переносное значение
    
    3. Преимущества:
       - Глубокое понимание контекста
       - Высокая точность сравнения текстов
       - Работа с техническими терминами
    
  • Расчет схожести на основе внимания

        Расчет схожести на основе внимания (attention-based similarity) - это метод из архитектуры трансформеров, где:
      
        1. Каждому слову/токену присваивается вес важности
        2. Модель "обращает внимание" на разные части текста с разной интенсивностью
        3. При сравнении двух текстов учитываются не только сами слова, но и контекст их использования
        4. Веса внимания помогают определить, насколько похожи смыслы фраз, даже если они используют разные слова
      
        Например, вопросы "Какова прочность стали?" и "Какое максимальное напряжение выдерживает сталь?" будут определены как схожие, хотя используют разные термины.
    
        Attention (механизм внимания) в контексте сравнения текстов:
    
        1. Принцип работы:
           - Анализирует, как слова/части текста влияют друг на друга
           - Присваивает важность каждому элементу текста
           - Учитывает контекстные связи между словами
    
           2. Пример:
           "Какова прочность стали на разрыв?"
           ↓ механизм внимания оценивает связи ↓
           "Какое значение предела прочности у стали при растяжении?"
    
        Модель понимает, что это один и тот же вопрос, потому что механизм внимания определяет ключевые смысловые связи между концепциями "прочность-предел прочности" и "разрыв-растяжение".
    
  • Межъязыковое сравнение

  • Анализ схожести на уровне токенов

      Анализ схожести на уровне токенов включает:
    
      1. Разбиение текста на токены:
         - Слова: "прочность" → токен
         - Части слов: "сверхпрочный" → "сверх" + "прочный"
         - Технические термины: "марка_стали" как единый токен
    
      2. Сравнение:
         - Прямые совпадения токенов
         - Морфологические варианты
         - Специальные символы и обозначения
    
      3. Примеры сравнения:
         "Ст3сп" vs "СТ3СП" - одинаковые токены
         "прочностные" vs "прочность" - связанные токены
         "σв" vs "предел_прочности" - эквивалентные токены
    

calculate_model_confidence()

  • Оценка уверенности модели в ответах

    Оценка уверенности модели включает:
    
    1. Метрики уверенности:
       - Косинусное сходство векторов
       - Вероятность правильности ответа
       - Статистика встречаемости похожих вопросов
    
    2. Пример оценки:
       Вопрос: "Какая прочность стали марки Ст3сп?"
       - Высокая уверенность (>0.9): точное совпадение в базе
       - Средняя (0.5-0.9): похожие вопросы есть
       - Низкая (<0.5): нет близких совпадений
    
    3. Применение:
       - Фильтрация ненадежных ответов
       - Запрос уточнений при низкой уверенности
       - Приоритизация источников данных
    
    • Система подсчета баллов уверенности

      Компоненты оценки:
      
      Общий балл = (A + B + C + D) / 4, где:
      A: Схожесть векторов (0-1.0)
      B: Качество источника (0-1.0)
      C: Частота встречаемости (0-1.0)
      D: Контекстная релевантность (0-1.0)
      
      Пример расчета:
      
      Вопрос: "Требования к стали Ст3сп"
      A: Схожесть = 0.85 (высокая)
      B: Источник = 1.0 (ГОСТ)
      C: Частота = 0.7 (встречается часто)
      D: Контекст = 0.9 (точное соответствие)
      
      Итоговый балл = (0.85 + 1.0 + 0.7 + 0.9) / 4 = 0.86
      
  • Прозрачность надежности ответов

      Прозрачность надежности ответов - это система информирования о достоверности выдаваемых ответов:
    
      1. Визуальные индикаторы:
         
      🟢 Высокая надежность (>0.8)
       - Точное совпадение с ГОСТ
       - Проверенный источник
       - Многократное подтверждение
    
      🟡 Средняя надежность (0.6-0.8)
       - Косвенное совпадение
       - Требует уточнения
       - Частичное подтверждение
    
      🔴 Низкая надежность (<0.6)
       - Нет точных совпадений
       - Неполные данные
       - Требуется проверка
         
      2. Пример отображения:
         
      Вопрос: "Прочность стали Ст3сп"
      Ответ: "500-650 МПа" 
      Надежность: 🟢 0.92
      Источник: ГОСТ 14637-89
         
      3. Дополнительная информация:
       - Указание источника данных
       - Дата актуальности
       - Предупреждения о возможных ограничениях
    

validate_answer_quality()

  • Проверка семантической согласованности

    Проверка семантической согласованности - это анализ логической связности и правильности ответа:
    
    1. Уровни проверки:
       
    А. Внутренняя согласованность:
    - Отсутствие противоречий в ответе
    - Логическая связь между частями
    - Корректность технических терминов
    
    Б. Внешняя согласованность:
    - Соответствие нормативам
    - Соответствие физическим законам
    - Соответствие техническим ограничениям
       
    
    2. Пример проверки:
       
    Ответ: "Сталь Ст3сп имеет предел прочности 380-490 МПа при толщине проката 20 мм"
    
    Проверяется:
    ✓ Диапазон значений реалистичен
    ✓ Единицы измерения корректны
    ✓ Указана важная характеристика (толщина)
    ✓ Значения соответствуют ГОСТу
       
    
    3. Выявление несогласованностей:
       
    Неправильно: "Сталь имеет прочность 5000 МПа"
    Почему: Значение нереалистично для данного типа стали
    
    Правильно: "Сталь имеет прочность 500 МПа"
    Почему: Значение соответствует характеристикам материала
    
  • Валидация по базе знаний

    • Оценка полноты ответов

        Оценка полноты ответов - это проверка наличия всей необходимой информации в ответе:
      
        1. Критерии полноты:
         
        А. Обязательные компоненты:
        - Числовые значения
        - Единицы измерения
        - Условия применения
        - Ссылка на стандарт
      
        Б. Контекстная информация:
        - Ограничения
        - Диапазоны
        - Особые условия
      
        2. Пример оценки:
      
        Неполный ответ:
        "Прочность стали Ст3сп составляет 500 МПа"
      
        Полный ответ:
        "Прочность стали Ст3сп:
        - Значение: 500-650 МПа
        - Температура испытаний: 20°C
        - Толщина проката: до 20 мм
        - Категория: 5
        - ГОСТ: 14637-89"
      
      
        3. Шкала полноты:
      
        100% - Все компоненты присутствуют
        75% - Основные значения + часть условий
        50% - Только основные значения
        25% - Неполные/неточные данные
      
        Давайте разберу подробнее систему оценки полноты ответов:
      
        1. Типы информации в ответе:
           
        ОСНОВНЫЕ ДАННЫЕ:
        - Числовые характеристики
        - Единицы измерения
        - Марка материала
      
        УСЛОВИЯ:
        - Температура
        - Размеры
        - Категория качества
      
        НОРМАТИВЫ:
        - ГОСТ/Стандарт
        - Методика испытаний
        - Класс точности
         
      
        2. Практический пример:
         
        Вопрос: "Какая прочность стали Ст3сп?"
      
        Оценка ответов:
      
        25% полноты:
        "500 МПа"
        ❌ Нет условий
        ❌ Нет стандарта
        ❌ Нет диапазона
      
        50% полноты:
        "Прочность стали Ст3сп: 500-650 МПа при 20°C"
        ✓ Есть диапазон
        ✓ Есть температура
        ❌ Нет размеров
        ❌ Нет стандарта
      
        100% полноты:
        "Прочность стали Ст3сп:
        - Временное сопротивление: 500-650 МПа
        - Температура испытаний: 20°C
        - Толщина проката: до 20 мм
        - Категория: 5
        - По ГОСТ 14637-89"
        ✓ Все необходимые параметры
        ✓ Все условия
        ✓ Ссылка на стандарт
      
  • Выявление противоречий

    Выявление противоречий - это проверка несоответствий в данных ответа:
    
    1. Типы противоречий:
     
    ЛОГИЧЕСКИЕ:
    - Взаимоисключающие утверждения
    - Нарушение физических законов
    - Несоответствие размерностей
    
    ТЕХНИЧЕСКИЕ:
    - Несоответствие ГОСТу
    - Выход за допустимые пределы
    - Конфликт характеристик
    
    КОНТЕКСТНЫЕ:
    - Несоответствие условиям
    - Конфликт с другими ответами
    - Нарушение зависимостей
     
    
    2. Примеры противоречий:
     
    ❌ Неверно:
    "Сталь Ст3сп имеет прочность 500 МПа при -200°C и толщине 100 мм"
    Противоречия:
    - Температура вне диапазона испытаний
    - Толщина больше допустимой по ГОСТу
    
    ✓ Верно:
    "Сталь Ст3сп имеет прочность 500 МПа при 20°C и толщине 20 мм"
     
    
    3. Правила проверки:
     
    - Сравнение с нормативами
    - Проверка физической реализуемости
    - Анализ взаимосвязей параметров
    

filter_low_confidence_answers()

  • Фильтрация ответов с низкой уверенностью

  • Предотвращение неточных ответов

  • Повышение доверия пользователей

      Повышение доверия пользователей - это комплекс мер для обеспечения прозрачности и надежности ответов:
    
      1. Информационная прозрачность:
       
      ОТОБРАЖЕНИЕ:
      - Уровень уверенности в ответе
      - Источник данных
      - Метод получения ответа
    
      ВИЗУАЛИЗАЦИЯ:
      🟢 Высокая достоверность (>90%)
      🟡 Средняя достоверность (70-90%)
      🔴 Низкая достоверность (<70%)
       
    
      2. Подтверждение надежности:
       
      ССЫЛКИ:
      - Точная ссылка на ГОСТ/стандарт
      - Номер раздела/пункта
      - Дата актуальности
    
      ДОПОЛНИТЕЛЬНО:
      - История изменений
      - Статистика использования
      - Обратная связь от других пользователей
       
    
      3. Интерактивные элементы:
       
      ВОЗМОЖНОСТИ:
      - Запрос уточнений
      - Просмотр похожих вопросов
      - Обратная связь
      - Отметка полезности ответа
    

Методы кластеризации и валидации

optimize_question_clusters()

  • Иерархическая кластеризация
  • Плотностная кластеризация (DBSCAN)
  • Оптимизация границ кластеров
  • Динамическое обновление

cross_validate_answers()

  • K-блочная валидация
  • Стратифицированная выборка
  • Анализ ошибок
  • Отслеживание метрик

Методы генерации ответов

ensemble_answer_generation()

  • Взвешенное голосование
  • Стекинг моделей
  • Выбор по уверенности
  • Динамическая настройка весов

contextual_answer_generation()

  • Учет контекста вопроса
  • Анализ связанных вопросов
  • Улучшение полноты ответов

Методы анализа и адаптации

analyze_failure_patterns()

  • Отслеживание проблемных вопросов
  • Категоризация ошибок
  • Выявление слабых мест модели

adaptive_training_cycle()

  • Непрерывное обучение на новых данных
  • Периодическое обновление модели
  • Поддержание актуальности ответов

fine_tune_on_feedback()

  • Обучение на основе обратной связи
  • Улучшение точности ответов
  • Адаптация к пользовательским потребностям

suggest_similar_unanswered_questions()

  • Поиск похожих вопросов без ответов
  • Расширение базы знаний
  • Улучшение покрытия тем

Метрики эффективности

  • Точность ответов
  • Время отклика
  • Использование памяти
  • Оценки уверенности
  • Результаты кросс-валидации

Рекомендации по интеграции

  1. Поэтапное внедрение методов
  2. Независимое тестирование
  3. Мониторинг производительности
  4. Валидация на тестовой выборке
  5. Документирование конфигураций

Алгоритмы/технологии которые есть в запасе и которые можно отдельно обсудить:

  • добавление новых вопросов в обученную модель, обновляя TF-IDF векторизацию с помощью partial_fit
  • матчинг вопросов и в целом матчинг терминов
  • распознавание таблиц и ячеек таблиц, если они являются графическими элементами
  • оптимизации алгоритмов
  • ИИ copilot по ГОСТам для документооборота в структурах сделок
  • openapi backend api
  • другие

Результат: 3е место в хакатоне

https://habr.com/ru/companies/omk-it/articles/850434/

https://habr.com/ru/companies/omk-it/posts/860640/

https://codeboost.ru/aidiscovery

Контакты:

https://t.me/aidialog

О архитекторе и разработчике:

https://codeboost.ru/about

About

QA ИИ для работы с рассуждениями по ГОСТам

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published