Pull to refresh

Comments 2

В статье дается какой-то класс, но не видно как этот инструмент применяется. Нет примеров встраивания.

По самому классу, код не выглядит ни отшлифованным, ни готовым к использованию в промышленной системе.

Несколько примеров.

Использование console.log. Для системы с централизованным логированием весь этот вывод должен направляться в класс/интерфейс логгера с учетом уровней логирования.

Обработка ошибок. Наверняка часть ошибок не обязана выбрасываться наружу, а может быть обработана на месте, например, через повтор операции (бывает что сеть дала сбой и надо сделать переподключение/переотправку).

Часть последовательных await может быть объединена в Promise.all(). Например, вот эти две строки:

this.embedder = await pipeline('feature-extraction', 'Xenova/all-MiniLM-L6-v2');
await this.createTable();

Тут нам ничего не мешает создавать или проверять наличие таблицы пока выполняется какая-то сторонняя обработка.

Вот тут не ясно зачем вам await внутри callback если вы и так промис ждете из него, а обработку ошибок внутри callback не делаете:

   const result = await this.driver.tableClient.withSession(async function(session) {
      return await session.executeQuery(query);
    });

У вас в close делается освобождение занятых классом ресурсов. Для этого в typescript завели специальный инструмент.

Коллега - вы 100% правы, спасибо за замечания и комментарии:

  1. Я сейчас доделываю проект (прикручиваю использование embedder-а от Yandex и так же хочу использовать модель от Yandex - мы используем Yandex Cloud и в этом проекте хочу по максимуму использовать те возможности, которые дает текущая инфраструктура. Как закончу - выложу уже полноценный пример

  2. Это действительно не product ready код, а некоторый прототип. Цель моего проекта - изучить использование ИИ для решения практических задач (в моем случае - анализ данных из YouTrack). Кроме того, должен признаться, что я практически не знаю JavaScript (моим основным языком программирования последние лет 10 был Java). Как писал в начале поста, в качестве эксперимента я использую подход Vibe Coding и 80% этого кода написана ИИ. Выводы может выложу отдельным постом, но если кратко - для быстрых прототипов - супер ускоряет, для Production кода можно аккуратно использовать как ассистент, джунам надо вообще запрещать его использование.

Цель поста была подсветить несколько нюансов использования YDB как векторной базы - как сохранить вектор, как по нему потом найти. Пришлось повозиться с передачей параметров (как правильно передать List<Float>) и как правильно сделать batch insert. Я обновлю окончание поста чтобы не вводить читателей в заблуждение

Sign up to leave a comment.

Articles