Constella — open-source desktop-приложение, которое индексирует локальные файлы и превращает их в единую базу знаний для поиска и AI-агентов.
Данные хранятся на устройстве: LanceDB используется для векторов, SQLite — для метаданных и knowledge graph.
Что умеет:
Схема примерно такая:
Файлы
↓
chunks + embeddings
↓
LanceDB + SQLite
↓
Knowledge Graph
↓
поиск / агенты / MCP
Please open Telegram to view this post
VIEW IN TELEGRAM
В SQL удобно считать SUM, AVG, COUNT, но почти никто не думает про PRODUCT. А в аналитике он часто нужен: вероятность цепочки событий, retention funnel, скоринговые модели, reliability, ML-фичи.
Проблема: если перемножать много маленьких чисел, например 0.97 * 0.91 * 0.88 * ..., быстро получишь underflow или потерю точности.
Математический трюк:
a * b * c = exp(ln(a) + ln(b) + ln(c))
То есть вместо прямого произведения считаем сумму логарифмов.
SELECT
user_id,
EXP(SUM(LN(probability))) AS total_probability
FROM events
WHERE probability > 0
GROUP BY user_id;
Где это полезно:
SELECT
user_id,
EXP(SUM(LN(conversion_rate))) AS funnel_survival_rate
FROM funnel_steps
GROUP BY user_id;
Это стандартный численный прием из математики, который делает расчет стабильнее.
Особенно полезно, когда у тебя много шагов в воронке, вероятностная модель, риск-скоринг или аналитика событий.
Главное правило: LN(x) работает только для x > 0, поэтому нули нужно обрабатывать отдельно. Например, если хотя бы одна вероятность равна нулю, итоговое произведение тоже будет ноль.
Please open Telegram to view this post
VIEW IN TELEGRAM
Нужно получить последнюю операцию каждого пользователя? В PostgreSQL можно не ранжировать всю таблицу через
ROW_NUMBER().
SELECT
u.id,
last_order.id,
last_order.created_at
FROM users AS u
LEFT JOIN LATERAL (
SELECT id, created_at
FROM orders
WHERE user_id = u.id
ORDER BY created_at DESC
LIMIT 1
) AS last_order ON true;
LATERAL запускает подзапрос отдельно для каждой строки слева и разрешает обращаться к u.id.
Добавьте индекс:
CREATE INDEX ON orders (user_id, created_at DESC);Тогда PostgreSQL сможет брать последнюю запись прямо из индекса, не сортируя все заказы пользователя.
Такой приём особенно полезен для задач:
Для больших таблиц это часто быстрее и проще, чем оконная функция по всему набору данных.
Please open Telegram to view this post
VIEW IN TELEGRAM
GraphForge занимает редкую нишу между NetworkX и серверными графовыми БД. Вы получаете встроенный графовый движок на Rust, полный openCypher и хранение проекта в обычной директории.
Что внутри:
from graphforge import GraphForge
graph = GraphForge("research/")
result = graph.execute("""
MATCH (a)-[:CITES]->(b)
RETURN a.title, b.title
""")
print(result.to_pandas())
При этом GraphForge честно позиционируется как инструмент исследовательского и notebook-масштаба. Для миллиардных графов, высокой нагрузки и многопользовательского доступа по-прежнему нужна серверная БД.
Python и Node.js доступны сейчас, Swift и Kotlin находятся в планах. Лицензия — Apache 2.0.
https://github.com/CurateLabs/graphforge
Please open Telegram to view this post
VIEW IN TELEGRAM
Как выгодно сдавать анализы? 🧪
Не все знают, что в ИНВИТРО есть простой способ получать бонусы и потом оплачивать ими анализы и исследования до 90%! Ниже 4 лайфхака:
Во-первых. После регистрации в программе лояльности вам начислят 500 бонусов, а в день рождения – ещё 2000 бонусов.
Во-вторых. За анализы после активации начисляют кешбэк 5%. И его можно увеличить – в личном кабинете выбрать до 3 отдельных услуг и получать по ним до 10% бонусами.
В-третьих. Можно также выбрать готовый пакет и получать до 15% бонусами на анализы, которые в него входят. Например, есть «Контроль над весом», «Здоровый желудок» и др. Выбранный пакет можно заменить через 30 дней.
В-четвёртых. Подойдите к администратору на кассе и скажите
Подключить повышенный кешбэк можно👉 на сайте. Нужно авторизоваться и открыть в личном кабинете раздел «Программа лояльности». 1 бонус = 1₸.
🫡 Всё про Data Science
🇷🇺 Читайте нас в MAX
Не все знают, что в ИНВИТРО есть простой способ получать бонусы и потом оплачивать ими анализы и исследования до 90%! Ниже 4 лайфхака:
Во-первых. После регистрации в программе лояльности вам начислят 500 бонусов, а в день рождения – ещё 2000 бонусов.
Во-вторых. За анализы после активации начисляют кешбэк 5%. И его можно увеличить – в личном кабинете выбрать до 3 отдельных услуг и получать по ним до 10% бонусами.
В-третьих. Можно также выбрать готовый пакет и получать до 15% бонусами на анализы, которые в него входят. Например, есть «Контроль над весом», «Здоровый желудок» и др. Выбранный пакет можно заменить через 30 дней.
Самое крутое – накопленными бонусами можно оплатить до 90% стоимости следующих услуг. Например, если анализы вышли на 10 000₸, то бонусами можно списать 9000!
В-четвёртых. Подойдите к администратору на кассе и скажите
ИНВИТРО26. После этого вам сделают скидку 20% на первую оплату. Работает во всех городах до 15 сентября 2026 года.Подключить повышенный кешбэк можно
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Каждый SQL-запрос SQLite сначала компилируется в байткод, а затем выполняется собственной виртуальной машиной VDBE.
Внутри — большой цикл диспетчеризации с почти 200 opcode.
И вот интересный момент: SQLite использует обычные
goto, чтобы быстро прыгать между общими ветками выполнения.«Код использует неструктурированные goto и выглядит не очень чисто. Но это сделано не из-за плохого стиля, так быстрее».
По замерам разработчиков, такой подход ускоряет
sqlite3_step() примерно на 1,5%.То есть здесь читаемость сознательно пожертвовали ради производительности.
Хорошее напоминание: в системном коде «красивее» не всегда значит «быстрее».
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Некрасивый код, который делает SQLite быстрым
Please open Telegram to view this post
VIEW IN TELEGRAM
Кандидат пытался пройти интервью с ИИ-помощником, но интервьюер внезапно спросил про самописные движки Ysasu Bibu и Ynna Zist.
Соискатель уверенно ответил, что работал с обеими
Please open Telegram to view this post
VIEW IN TELEGRAM
Часто пишут так:
SELECT COUNT(*)
FROM orders
WHERE user_id = 42;
А потом проверяют, больше ли результат нуля.
Но базе приходится посчитать все совпадения, хотя тебе нужна всего одна информация: есть хотя бы одна строка или нет.
Лучше использовать:
SELECT EXISTS (
SELECT 1
FROM orders
WHERE user_id = 42
);
EXISTS может остановить поиск сразу после первого совпадения.
На маленькой таблице разницы почти не заметишь. На миллионах строк и частых проверках это уже может серьёзно экономить ресурсы.
Если нужен ответ «да/нет» — не заставляй SQL считать всё.
Please open Telegram to view this post
VIEW IN TELEGRAM
ppt-master работает как skill для AI-IDE. Можно просто написать: «сделай презентацию из этого PDF», после чего агент сам разбирает материал, продумывает структуру, собирает дизайн и экспортирует .pptx. Поддерживаются PDF, DOCX, URL и Markdown.
Самая сильная часть проекта в том, что слайды не превращаются в набор картинок. Текст, фигуры, таблицы и графики экспортируются как нативные объекты PowerPoint, которые можно открыть и вручную отредактировать. Есть шаблоны, live preview, анимации, speaker notes и даже генерация озвучки с последующим встраиванием аудио в PPTX.
Работает с Claude Code, Cursor, VS Code + Copilot и другими agent harness. Сам пайплайн выполняется локально, кроме обращений к выбранной AI-модели.
PDF / DOCX / URL → AI-agent → структура → дизайн → настоящий editable .pptx
Автор отдельно пишет, что цель не заменить финальную ручную полировку, а убрать примерно 90% работы с пустого листа.
Please open Telegram to view this post
VIEW IN TELEGRAM