RAG Pipeline 4/N: Гибридный поиск – почему одних векторов мало

Параметр Значение Bloom L4 (Анализ) SFIA Уровень 3 Dreyfus Competent Артефакт BM25 encoder + RRF fusion скрипт Проверка Hybrid search находит результаты, которые dense и sparse пропускают по отдельности TL;DR Dense-векторы находят похожее по смыслу, но теряют точные совпадения команд. BM25 находит ключевые слова, но не понимает синонимы. Гибридный поиск запускает оба параллельно и сливает результаты через RRF (Reciprocal Rank Fusion). Веса: dense 0.7, sparse 0.3. Итого ~80ms на запрос. ...

27 мая 2026 · 19 минут · 4036 слов · DevOps Way

День 3: ветки и merge – fast-forward против --no-ff

Цель урока После урока вы умеете создать feature-ветку и слить её в main двумя разными способами (fast-forward и --no-ff), читаете git log --graph, понимаете разницу между тремя стратегиями merge (ff / no-ff / squash) и решаете merge-конфликт по маркерам <<<<<<< ======= >>>>>>>. Параметр Значение Bloom Применение SFIA Уровень 3 Время 40 минут Артефакт ~/.gitconfig с merge.ff = false, merge.conflictStyle = diff3, alias graph Проверка git log --graph показывает два merge-коммита с разной формой; конфликт решён Теория за 3 минуты Ветка в Git – это указатель на коммит. Не копия, не папка, не «параллельный мир». Одна строчка в файле .git/refs/heads/main с SHA. ...

16 апреля 2026 · 9 минут · 1764 слова · DevOps Way

Интеграция Hashicorp Vault с FreeIPA: Управление секретами в DevOps

Архитектура интеграции graph TB A[Пользователь] B[Vault Server] C[FreeIPA LDAP] A -->|1. Логин| B B -->|2. Проверка| C C -->|3. OK| B B -->|4. Token| A A -->|5. Секреты| B Процесс аутентификации: Пользователь вводит LDAP учётные данные Vault запрашивает FreeIPA LDAP FreeIPA проверяет учётные данные Vault выдаёт токен доступа Пользователь работает с секретами Серия статей: все части Установка FreeIPA NFS + Autofs интеграция Hashicorp Vault интеграция (эта статья) Требования Компонент Требования FreeIPA Настроен и работает (часть 1) Vault Server Linux, 2GB RAM Клиенты Vault CLI Сеть Доступ к FreeIPA:389 Часть 1: Установка Vault Установка на RHEL/CentOS # Репозиторий HashiCorp dnf config-manager --add-repo https://rpm.releases.hashicorp.com/RHEL/hashicorp.repo # Установка dnf install -y vault # Проверка vault --version Конфигурация Vault mkdir -p /etc/vault.d mkdir -p /opt/vault/data cat > /etc/vault.d/vault.hcl << 'EOF' # Vault конфигурация для интеграции с FreeIPA storage "file" { path = "/opt/vault/data" } listener "tcp" { address = "0.0.0.0:8200" tls_disable = 1 } api_addr = "http://192.168.1.30:8200" ui = true EOF chown -R vault:vault /opt/vault /etc/vault.d chmod 640 /etc/vault.d/vault.hcl Важно: tls_disable = 1 только для лаборатории! В production используйте TLS! ...

15 декабря 2025 · 8 минут · 1610 слов · DevOps Way

Networking 20/80, уровень 4: HTTP и TLS – протокол, на котором всё держится

Пятый из семи уровней. Соединение установлено – теперь про то, что по нему говорят. HTTP как язык, на котором общается почти весь веб, и TLS как конверт, в который этот язык заворачивается. Читать статус-коды и вывод curl -v как родной текст – базовый навык любого дежурного. "HTTP – язык, на котором общается 99% веб-сервисов. TLS – конверт, в который этот язык заворачивается. DevOps должен читать HTTP как родной." Откуда это пошло 1991 – Tim Berners-Lee (CERN) создаёт HTTP/0.9. Одна команда: GET /page.html. Одно соединение – один документ. Никаких заголовков, только текст. ...

30 июля 2026 · 8 минут · 1 слово · DevOps Way

RAG Pipeline 5/N: Cross-encoder reranking – когда порядок важнее полноты

В предыдущих сериях: Qdrant (1/N), эмбеддинги (2/N), нарезка на чанки (3/N), гибридный поиск (4/N). Нужный чанк стабильно залетает в top-15. Но порядок внутри этих 15 результатов определяет, какой чанк окажется в top-1. А top-1 – это то, что видит пользователь (или LLM при генерации ответа). Этот пост о том, как заставить систему вчитываться в результаты. Переранжирование: дешёвый двухступенчатый каскад, который не меняет recall, но переставляет результаты так, чтобы лучший оказывался первым. Проблема: RRF не читает документы Гибридный поиск (пост 4/N) работает так: ...

2 июня 2026 · 8 минут · 1 слово · DevOps Way

День 4: rebase vs merge – когда переписать историю, когда сохранить

Цель урока После урока вы умеете перестроить feature-ветку поверх свежего main через git rebase, понимаете разницу между rebase и merge на уровне графа, используете rebase -i для чистки коммитов перед PR (squash / reword / drop) и знаете золотое правило: не ребейсить то, что уже запушено в публичную ветку. Параметр Значение Bloom Применение, частично Анализ SFIA Уровень 3 Время 45 минут Артефакт ~/.gitconfig с pull.rebase = true, rebase.autoStash = true, alias rb, rbi Проверка Feature-ветка успешно ребейзнута поверх main; git log --graph показывает линейную историю Теория: rebase – это не merge git merge соединяет две ветки merge-коммитом, сохраняя факт ветвления: ...

16 апреля 2026 · 11 минут · 2176 слов · DevOps Way

Networking 20/80, уровень 5: Firewall и сетевая безопасность

Шестой из семи уровней. Ты умеешь пускать трафик – теперь про то, как его фильтровать. Межсетевой экран (firewall) – не "стена", а решение для каждого пакета: пропустить, отбросить молча или отказать явно. Разница между DROP и REJECT однажды сэкономит тебе час отладки "зависшего" клиента. "Межсетевой экран – не стена, а фильтр. Он не "блокирует всё", а решает для каждого пакета: пропустить (ACCEPT), отбросить молча (DROP) или отказать явно (REJECT)." Откуда это пошло 1988 – первый сетевой червь (Morris Worm) заразил ~6000 машин из ~60000 подключённых к интернету, и мир осознал: сети нужна защита. К 1989–1992 в DEC и AT&T Bell Labs появились пакетные фильтры – проверять каждый пакет по правилам (src/dst IP, порт, протокол) и пропускать либо блокировать. ...

8 августа 2026 · 9 минут · 1734 слова · DevOps Way

RAG Pipeline 6/N: Бенчмарк – от 20% до 98%, а потом 52.7% на чужих данных

В предыдущих сериях: Qdrant (1/N), эмбеддинги (2/N), нарезка на чанки (3/N), гибридный поиск (4/N), переранжирование (5/N). Конвейер (pipeline) – вся цепочка от запроса до ответа – построен и работает. Но насколько хорошо? Пока нет цифры, оценка "хорошо" остаётся субъективной. Повод для замера: проект AgentMemory заявляет 95.2% recall@5 на бенчмарке LongMemEval-S. Recall@5 (полнота поиска) – это доля вопросов, для которых нужный фрагмент попал в первую пятёрку результатов. Решил проверить эту цифру у себя: прогнал тот же метод через свой конвейер, но на реальных данных. ...

11 июня 2026 · 13 минут · 2617 слов · DevOps Way

День 5: git hooks – как отловить мусор до коммита

Цель урока После урока вы умеете написать и установить pre-commit и commit-msg hook на чистом bash (без Husky / Node / Python), понимаете почему hooks живут локально и как распространить их на команду через core.hooksPath + папку в репозитории. Можете добавить проверку секретов, trailing whitespace, формата Conventional Commits. Параметр Значение Bloom Применение SFIA Уровень 3 Время 40 минут Артефакт repo/.githooks/pre-commit + commit-msg + core.hooksPath = .githooks Проверка Коммит с секретом блокируется; коммит с кривым сообщением блокируется; git commit --no-verify обходит (и это ожидаемо) Теория: что такое git hook Hook – это исполняемый файл в папке .git/hooks/, который Git вызывает на определённое событие. Если файл есть и имеет бит +x – Git запустит его и смотрит на exit code: 0 – продолжить операцию, не 0 – отменить. ...

16 апреля 2026 · 8 минут · 1632 слова · DevOps Way

Networking 20/80, уровень 6: Балансировка нагрузки и сети Kubernetes

Седьмой, финальный уровень мини-курса "Networking 20/80". Всё предыдущее сходится здесь: адреса, DNS, TCP, HTTP и межсетевые экраны складываются в то, как запрос снаружи попадает в pod и распределяется между репликами. L4 против L7, четыре типа Service, Ingress – и общая картина сети в Kubernetes целиком. "В Kubernetes нет понятия "сервер". Есть pod-ы, которые рождаются и умирают. Service – абстракция, которая превращает хаос в стабильную точку доступа (endpoint). Ingress – дверь снаружи." ...

8 августа 2026 · 9 минут · 1 слово · DevOps Way

День 6: bisect – Git находит сломавший коммит за вас

Цель урока После урока вы умеете найти коммит, внёсший регрессию, за log₂(N) шагов через git bisect; различаете bad, good, skip; умеете автоматизировать поиск через git bisect run с любым тест-скриптом. Параметр Значение Bloom Применение, Анализ SFIA Уровень 2–3 Время 30–40 минут Артефакт test-bisect.sh – тест-детектор под bisect run Проверка Мини-тест + сценарий «найди виновника за 4 шага» Теория за 3 минуты Git-история – это DAG коммитов. Каждый коммит знает, от какого родителя он произошёл. ...

16 апреля 2026 · 6 минут · 1 слово · DevOps Way

День 7: cherry-pick и rerere – перенос коммитов и память Git о конфликтах

Цель урока После урока вы умеете переносить отдельные коммиты между ветками через cherry-pick, различаете случаи, когда это уместно, и когда правильнее merge/rebase. Включили rerere глобально и понимаете, как Git запоминает ваше решение конфликта, чтобы применить его автоматически в следующий раз. Параметр Значение Bloom Применение, Анализ SFIA Уровень 2–3 Время 35–45 минут Артефакт rerere.enabled = true в ~/.gitconfig + алиас pick Проверка Мини-тест + сценарий с повторным конфликтом Теория за 3 минуты git cherry-pick <sha> берёт один коммит с одной ветки и применяет как новый коммит на текущую. Новый коммит имеет другой SHA, но тот же diff и то же сообщение. ...

16 апреля 2026 · 7 минут · 1380 слов · DevOps Way