Create Embeddings#
Рассмотрим пример робота, который берет инструкцию на автомобиль из текстового файла, разбивает ее на фрагменты и для каждого фрагмента вычисляет эмбеддинг - вектор признаков для последующего поиска нужных частей документа по сходству. Фрагменты текста вместе с соответствующими эмбеддингами записываются в CSV-файл. Данный проект является подготовительным для использования проекта SearchEmbeddings, и должен запускаться один единственный раз.
Проект робота состоит из одной диаграммы. Таким образом, если описывать пошагово, то данный робот работает следующим образом:
- Считывает содержимое указанного в свойствах файла.
- Разбивает это содержимое на фрагменты.
- Вычисляет для каждого элемента эмбеддинг.
- Записывает полученные эмбеддинги в Таблицы Данных.
- Сохраняет фрагменты текста с соответствующими эмбеддингами в CSV-файл.
Диаграмма проекта выглядит так (для удобства блоки диаграммы пронумерованы):
- Блок “Старт” (с этого блока начинается любая диаграмма).
- Блок “Считать строку из файла” считывает содержимое файла последовательно (строка за строкой). Для данного блока указаны следующие свойства:
- Имя файла (имя файла, из которого будет считываться информация);
- Кодировка (кодировка файла, из которого будет считываться информация);
- Пропускать пустые строки (при установке флага включается функция пропуска пустых строк при считывании информации из файла).
- Блок “Условие” проверяет указанное условие на истинность, после чего выполнение сценария продолжается в сторону выхода “Да” (если условие выполняется) или в сторону выхода “Нет” (если условие не выполнилось).
Условие записывается в формате: “переменная” равна (==)/ больше (>)/ меньше (<) “значение”.
Например: $a == “Привет”, то есть, если значение переменной $a равно “Привет”, то выход “Да”, в противном случае – выход “Нет”.
$Result > 5, то есть, если значение переменной $Result меньше 5, то выход “Да”, в противном случае – выход “Нет”.
В данном случае, в качестве условия установлено: $Lines.Count > 0, то есть, данное условие проверяет, если значение переменной $Lines больше нуля, то выход “Да”, в противном случае – выход “Нет”.
- Блок “Получить эмбеддинги” позволяет получить эмбеддинги по строке или списку строк с использованием сервиса Open AI. Для данного блока указаны следующие свойства:
- Текст (входной текст для которого будут рассчитаны эмбеддинги);
- Модель (модель нейросети для генерации ответа);
- Как таблица данных (при установке флага включается функция возвращения результата в виде таблицы данных с двумя колонками: “Text” и “Embeddings”);
- Таймаут (максимальное время ожидания ответа в секундах).
- Блок “Соединить Таблицы Данных” позволяет соединить две Таблицы Данных в одну. Для данного блока указаны следующие свойства:
- Первая Таблица Данных;
- Вторая Таблица Данных;
- Тип соединения (тип соединения таблиц, если схемы указанных таблиц различаются. В данном случае, тип “Add”, то есть добавить).
- Блок “Сохранить в CSV” позволяет сохранить Таблицу Данных в CSV-документ. Для данного блока указаны следующие свойства:
- Таблица Данных (Таблица Данных, которую необходимо сохранить в документе);
- Путь к файлу (путь к файлу, в который необходимо сохранить Таблицу Данных);
- Разделитель (символ разделителя);
- Кодировка (кодировка файла).
- Блок “Лог” позволяет выводить в лог произвольные сообщения и/или значения переменных в процессе работы сценария робота. Для данного блока указано свойство “Значение”. В кавычках указана текстовая константа, а имя переменной начинается с символа $.Т.е., данный блок записывает в лог робота сообщение о считывании строки из файла с указанием этой строки с помощью переменной.
- Блок “Добавить элемент в список” позволяет добавить указанный элемент в конец списка. Для данного блока указаны следующие свойства:
- Список (список в который необходимо добавить новый элемент);
- Элемент (переменная, которую необходимо добавить в список).
- Блок “Условие” проверяет указанное условие на истинность, после чего выполнение сценария продолжается в сторону выхода “Да” (если условие выполняется) или в сторону выхода “Нет” (если условие не выполнилось).
Условие записывается в формате: “переменная” равна (==)/ больше (>)/ меньше (<) “значение”.
Например: $a == “Привет”, то есть, если значение переменной $a равно “Привет”, то выход “Да”, в противном случае – выход “Нет”.
$Result > 5, то есть, если значение переменной $Result меньше 5, то выход “Да”, в противном случае – выход “Нет”.
В данном случае, в качестве условия установлено: $Lines.Count > 20, то есть, если значение переменной $Lines больше 20, то выход “Да”, в противном случае – выход “Нет”.
- Блок “Получить эмбеддинги” позволяет получить эмбеддинги по строке или списку строк с использованием сервиса Open AI. Для данного блока указаны следующие свойства:
- Текст (входной текст для которого будут рассчитаны эмбеддинги);
- Модель (модель нейросети для генерации ответа);
- Как таблица данных (при установке флага включается функция возвращения результата в виде таблицы данных с двумя колонками: “Text” и “Embeddings”);
- Таймаут (максимальное время ожидания ответа в секундах).
- Блок “Соединить Таблицы Данных” позволяет соединить две Таблицы Данных в одну. Для данного блока указаны следующие свойства:
- Первая Таблица Данных;
- Вторая Таблица Данных;
- Тип соединения (тип соединения таблиц, если схемы указанных таблиц различаются. В данном случае, тип “Add”, то есть добавить).
- Блок “Сохранить в CSV” позволяет сохранить Таблицу Данных в CSV-документ. Для данного блока указаны следующие свойства:
- Таблица Данных (Таблица Данных, которую необходимо сохранить в документе);
- Путь к файлу (путь к файлу, в который необходимо сохранить Таблицу Данных);
- Разделитель (символ разделителя);
- Кодировка (кодировка файла).
- Блок “Очистить список” позволяет очистить список путем удаления всех его элементов. Для данного блока указано свойство “Список” (список, который необходимо очистить).
- Блок “Конец” (этим блоком завершается работа сценария или возврат диаграммы подпроцесса в основной процесс).