Pull to refresh
5
Ильшат Хамитов@kaufmanendy

Software Engineer — Backend и frontend разработка

22
Subscribers
Send message

Спасибо, в следующий раз когда когда вернусь к этой задаче попробую все чанки в один запрос положить

Я глубоко не копал RAG, просто выделил неделю на изучение и не больше, и поделился тем что узнал и сделал с 0 знаниями

Сейчас есть база с векторными колонками, и я ищу совпадения вектора входного поискового запроса с векторами чанков а также с специальной графовой версий чанка, там под капотом тоже происходит поиск синусом

И после фильтрации я и получаю вместо 11000 чанков 5

Там уже это все есть, в итоге после фильтрации из 11000 записей емебедниг чанков по входному запросу получаем 5 чанков с контекстом и есть входной запрос от пользователя

Запрос пользователя нужно привести к нужному нам формату - это делается через дополнительные запросы к нейронке

Потом этот "нормализованный" запрос + история переписки прогоняем для каждого чанка и используем специальный промпт который определяет есть ли ответ на заданный вопрос в текущем контексте

После прогона по всем чанкам и нахождения ответа мы формируем ответ пользователю тоже через специальный промпт который дополнительно трансформирует ответ используя историю переписки

На вход приходят разные виды документов: переписки из чата, посты из хабра, резюме с хедхантер, спарсенный сайт визитки

Документ можно разделить на разные категории, документ бьется на чанки и у каждого чанка своя категория, запрос от пользователя имеет свою категорию, история может иметь другую отличную от последнего запроса категорию

В зависимости от категорий мы используем разные промпты при трансформации входных, промежуточных и выходных данных

export enum Category {
  telegram = 'telegram',
  /**
   *  рекламные, массовые или нерелевантные сообщения;
   */
  spam = 'spam',
  /**
   * предложения о работе на полный рабочий день (штат, фултайм, постоянная занятость);
   */
  job = 'job',
  /**
   * вопросы о найме, формировании или усилении команды;
   */
  hiring = 'hiring',
  /**
   * вопросы о собеседованиях, подготовке к ним, оценке кандидатов;
   */
  interview = 'interview',
  ...
}

Тут я больше изучал как вообще можно строить эти RAG системы и какие компоненты там могут быть

Я добавил там на сайте возможность посмотреть какие именно промпты запускались и там теперь видно почему долго

Запускается ведь не один промпт, а много, для того чтобы из 11000 чанков сделать 5 и уже в 5 искать нужные данные, все зависит еще и от самого вопроса, чем он ближе к данным которые в базе тем быстрее отработают все логики

Так как я использую бесплатные лимиты, я стараюсь не делать параллельных запросов - у некоторых провайдеров на это тоже стоят ограничения. Но если делать production-ready RAG-систему и купить платный доступ к нейросетям или развернуть их на собственном железе, то многие задачи можно распараллелить и существенно ускорить поиск ответа.

Добавил различные промежуточные тексты, чтобы было понятнее что происходит и вывожу провайдера и модель которая используется

вот эти файлы на куски разбиты https://github.com/site15/rag-system/tree/main/sources

файлов: 450, размер общий: 16.5 MiB (17,311,147 bytes)

куски разной длины

да, спасибо за комментарий, вижу что там все бесплатные запросы кончились у всех активных провайдеров, поэтому оно так и повисло, ща вот пишу заглушку чтобы оно хотя-бы уведомляло об этом в обратку

О! Спасибо, я как раз искал похожие проекты, по изучаю их апи

Я там добавил пример с чартами, сделал на скорую руку бажное скорее всего, просто чтобы показать что можно и графики, это же Ionicframework тот же браузер просто запакован в APK

Курсы валют
Курсы валют
Отображение на сайте
Отображение на сайте
Форма редактирования виджета
Форма редактирования виджета

Если что мобильное приложение уже опубликовано https://github.com/site15/my-dashboard/releases/tag/mobile%400.21.0

Вот коммит с изменениями https://github.com/site15/my-dashboard/commit/d54f0cfd6548d4c83af3e088baf08b6ccb5cc3ec

если кто то захочет сделать свое мобильное приложение с фронтом и бэком и деплоем, то можно взять этот проект как стартер и модифицировать под себя, то что написала одна нейронка, поймет и другая

а из пользы я в нем фиксирую то что я хожу три раза в день на беговой дорожке и пью воду, выпил нажал плюсик

Свой велосипед любой может написать, в этом ничего сложного нет

Просто нужно учитывать то как потом людей искать на проект, и как люди после велосипеда будут работу искать

Нест дает архитектуру и некий стандарт по написанию кода

Я как работник приходя в контору с нестом сразу могу приступить к работе, мне не нужно изучать как использовать велосипед, и тем более как в нём реализовывать что то новое которое не вписывается в текущую архитектуру и нужно будет сидеть ломать голову придумывать и тратить время, а контора не очень любит оплачивать такие вещи и придётся быстро на коленке чет накостылить

Я как контора при найме людей предпочту специалистов у которых в голове уже есть некая структура и они не будут тратить время на изобретение и починку своих велосипедов, и мне нужно чтобы человек максимально быстро начал разрабатывать бизнес функционал и легко вошёл в текущий процесс разработки

А пример я просил, так как если человек написал некий свой мини нест, то не грех бы им поделится, а не просто говорить что выкинули нест и стало круто, а может и не выкинули, или проект был очень маленький и на мини несте не выйдет красиво написать чет большое с кучей микро сервисов

очень хочется увидеть не большой пример проекта с нест и без нест пусть на REST, так как проблемы неста многие узнают после 3х месяцев разработки, но альтернатива - это писать свой мини нест, и это обычно стопорит и народ остается в нест, до тех пор пока в проекте не происходит смены лида с текущего на некого джун+ который просто выкидывает нест и пишет свой набор велосипедов под конкретный проект

в итоге в этот проект сложно нанимать людей, так как никто не хочет заниматься нонейм великом

и когда этот горе джун+ уходит через пол года компании приходится как-то жить с этим великом долго

можешь сделать репозиторий в гитхаб, монорепа где два проекта с нест и без нест?

Неа, так не пробовал, мне интересен был Vercel изначально и к нему я уже начал искать онлайн бд, позже может чекнут функции supabase, пока не критично

Спасибо большое за комментарий)

увы именно то что мне нужно я не смог найти(

export const DATE_INPUT_FORMATS = {
  'en-US': 'MM/dd/yyyy HH:mm:ss',
  'en-GB': 'dd/MM/yyyy HH:mm:ss',
  'ar-SA': 'dd/MM/yyyy هه:sس',
  'bg-BG': 'd.M.yyyy H:m:s ч.',
  'ca-ES': 'dd/MM/yyyy H:mm:ss',
  'cs-CZ': 'd.M.yyyy H:mm:ss',
  'da-DK': 'dd-MM-yyyy HH:mm:ss',
  'de-DE': 'dd.MM.yyyy HH:mm:ss',
  'el-GR': 'd/M/yyyy h:mm:ss πμ|μμ',
  'es-MX': 'dd/MM/yyyy H:mm:ss',
  'fi-FI': 'd.M.yyyy klo H.mm.ss',
  'fr-FR': 'dd/MM/yyyy HH:mm:ss',
  'he-IL': 'dd/MM/yyyy HH:mm:ss',
  'hi-IN': 'dd-MM-yyyy hh:mm:ss बजे',
  'hr-HR': 'd.M.yyyy. H:mm:ss',
  'hu-HU': 'yyyy.MM.dd. H:mm:ss',
  'id-ID': 'dd/MM/yyyy HH:mm:ss',
  'is-IS': 'd.M.yyyy kl. HH:mm:ss',
  'it-IT': 'dd/MM/yyyy HH:mm:ss',
  'ja-JP': 'yyyy/MM/dd HH:mm:ss',
  'ko-KR': 'yyyy년 MM월 dd일 HH시 mm분 ss초',
  'lt-LT': 'yyyy.MM.dd. HH:mm:ss',
  'lv-LV': 'yyyy.gada MM.mēnesis dd.diena HH:mm:ss',
  'ms-MY': 'dd/MM/yyyy HH:mm:ss',
  'nl-NL': 'dd-MM-yyyy HH:mm:ss',
  'no-NO': 'dd.MM.yyyy HH:mm:ss',
  'pl-PL': 'dd.MM.yyyy HH:mm:ss',
  'pt-BR': 'dd/MM/yyyy HH:mm:ss',
  'ro-RO': 'dd.MM.yyyy HH:mm:ss',
  'ru-RU': 'dd.MM.yyyy HH:mm:ss',
  'sk-SK': 'd. M. yyyy H:mm:ss',
  'sl-SI': 'd.M.yyyy H:mm:ss',
  'sr-RS': 'dd.MM.yyyy. HH:mm:ss',
  'sv-SE': 'yyyy-MM-dd HH:mm:ss',
  'th-TH': 'วันที่ d เดือน M ปี yyyy เวลา H:mm:ss',
  'tr-TR': 'dd.MM.yyyy HH:mm:ss',
  'uk-UA': 'dd.MM.yyyy HH:mm:ss',
  'vi-VN': 'dd/MM/yyyy HH:mm:ss',
  'zh-CN': 'yyyy年MM月dd日 HH时mm分ss秒',
  'zh-TW': 'yyyy年MM月dd日 HH時mm分ss秒',
};

Я этот список сгенерировал с помощью гигачат, если вы дадите мне пример такой либы то я с удовольствием ее внедрю и оставлю коммент ссылку на ответ в коде)

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

в качестве работника я не смогу работу найти по такой специальности ((

в качестве директоре я не смогу найти грамотных специалистов по этой специальности ((

ну тема мне интересна очень, так как не каждый рискнет мутить чет свое крупное и на столько отличающееся от обычных практик

переводить из одной в другую проще, да, качество кода не главное в этом проекте, главное донести основные мысли

Ну я сталкивался при разработке СРМ, с тем что люди хотят видеть конкретную таймзон, не важно что у них комп или телефон подтягивает таймзон из сети.

Хозяин бизнеса может дать доступы сотрудникам из разных регионов и с разными настройками времени и временных зон на их компьютерах, и чтобы не возникало путаницы, проще вообще игнорировать время компьютера клиента и отображать серверное время + таймзон который задал директор.

1

Information

Rating
Does not participate
Location
Уфа, Башкортостан(Башкирия), Россия
Date of birth
Registered
Activity

Specialization

Бэкенд разработчик, Фронтенд разработчик
Ведущий
NestJS
Angular
Управление разработкой
Автоматизация процессов