TGViewer
замогильный уровень разработки замогильный уровень разработки @funeral_driven_development · 45 subscribers
Post #45 139
♿️ночной высер♿️
расскажу о паттерне FAN IN FAN OUT
🧬🧬🧬
Начну с примера, и небольшое вступление:
Тащемто не хватило мне фантазии на развитие бота, решил сделать системы аля AI на своих данных. Подробнее об архитектуре расскажу позже(во время рефакторинга).
Мне понадобилось сохранять данные в векторной базе данных, выбор пал(зря) на Qdrant. Для сохранения данных нам надо перевести слова в вектора, и сохранить в базе где потом по векторам и будет найден текст(в идеале текст в "синтезируется" той самой чатГПТ моделью). Тут есть ограничение, слова(текст) в вектор "превращается" с помощью другой модели, у которой ограничение на 92 слова/вектора, так как текст может быть супер большим мы будем использовать КАЛКАРЕНСИ с паттерном FAN OUT, а потому сделаем FAN IN. С помощью ГОРУТИН мы запустим текст/92 слова запросов в модель - это и будет часть FAN OUT, из текста(потока данных) делаем несколько потоков

for _, chunk := range chunks {
wg.Add(1)
go func(n []string) {
defer wg.Done()

embeddings, err := es.CreateEmbedding(chunk)
if err != nil {
return
}
embeddingsFloat32 := make([][]float32, len(embeddings))
for i, emb := range embeddings {
embeddingsFloat32[i] = make([]float32, len(emb))
for j, val := range emb {
embeddingsFloat32[i][j] = float32(val)
}
}

results <- vectorWithPayload{
vector: embeddingsFloat32,
payload: strings.Join(chunk, " "),
}

}(chunk)
}

Для имплементации паттерна нам нужен пакет sync и WaitGroup(из прошлых постов) и гоурутины
Создаем канал с данными в который будем записывать все результаты наших гоурутин
Проходимся циклом по кускам текста/данных и каждая гоурутина записыват в канал данные которые получила из апи модели + я добавляю оригинальный текст/кусок текста что бы сопоставлять в будущем в поиске по векторам что же они нашли.
Когда канал будет готов, мы делаем FAN IN - проходимся по каналу(в некоторой степени это массив) и записываем в базу наши данные.
👻👻👻👻👻👻👻👻👻👻👻👻👻👻👻👻
П.C. у меня испыталка на сруби новый проект, поэтому редко посты, надеюсь в след месяце пойду по собесам по гошке.🤌
  • ⚡ 3
  • 😱 2
  • 🤯 1
More from @funeral_driven_development
  1. Oct 14, 2026Лимиты бигтех, хотя не так уж и биг, относительно, например гитлаба. 12кк токенов в минуту…
  2. Oct 13, 2026Когда пытаешься быть х10 программистом что бы получать х2 с двух работ, но вторая работа н…
  3. Oct 10, 2026Менеджеры дуреют с этой прикормки! пилим видосик с фичей для аутистов-разрабов brew instal…
  4. Sep 30, 2026Моя зарплата ещё правее
  5. Sep 25, 2026photo post
  6. Sep 21, 2026photo post
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →