Forwarded from Machinelearning
🦑 SQL Squid Game: 9 уровней. 1 работа Дата Сайентиста. Ваша жизнь на кону 🔫.
Развлечение на выходные - Игра в Кальмара с SQL. Это бесплатный образовательный тренажер по работе с БД, по мотивам Netflix's Squid Game, SQL Murder Mystery и других известных SQL-игр.
❓О чем игра?
Вы только что были приняты на работу в качестве Дата Сайентиста в загадочную организацию Squid Game.
Таинственный работодатель, управляющий игрой, пообещал вам полностью удаленную работу, на которой вы будете составлять промпты, работать с pandas и генеративным ИИ
Но, как это обычно бывает в индустрии данных, вас подставили и обманули.
Оказалось, что работа связана с аналитикой данных на SQL, а работа не полностью удаленная, а гибридная: 5 дней в офисе, а 2 дня удаленно.
Не успели вы отказаться от работы , как работодатель приставил к вашей голове пистолет и начал требовать ответов на различные бизнес-вопросы.
Вы должны написать SQL-запросы, чтобы ответить ему - иначе вас ждет печальный конец 💀
📌 Как играть
- На каждом уровне вам будут даны задачи, а также одна или несколько таблиц и их схема.
Вам будет дана ячейка решения, в которую вы должны будете записать свое решение и отправить его на проверку.
Каждый уровень становится сложнее.
PS: Для прохождения SQL Squid Games, вам нужно хорошо знать SQL.А если хотите освежить свои знания или выучить SQL с нуля, вот 33 интерактивных учебника от Datalemur авторов игры из которых вы узнаете все, что нужно знать, чтобы пройти игру.
📲 Начать игру
@ai_machinelearning_big_data
#sql #tutorial #educationalgame
Развлечение на выходные - Игра в Кальмара с SQL. Это бесплатный образовательный тренажер по работе с БД, по мотивам Netflix's Squid Game, SQL Murder Mystery и других известных SQL-игр.
❓О чем игра?
Вы только что были приняты на работу в качестве Дата Сайентиста в загадочную организацию Squid Game.
Таинственный работодатель, управляющий игрой, пообещал вам полностью удаленную работу, на которой вы будете составлять промпты, работать с pandas и генеративным ИИ
Но, как это обычно бывает в индустрии данных, вас подставили и обманули.
Оказалось, что работа связана с аналитикой данных на SQL, а работа не полностью удаленная, а гибридная: 5 дней в офисе, а 2 дня удаленно.
Не успели вы отказаться от работы , как работодатель приставил к вашей голове пистолет и начал требовать ответов на различные бизнес-вопросы.
Вы должны написать SQL-запросы, чтобы ответить ему - иначе вас ждет печальный конец 💀
📌 Как играть
- На каждом уровне вам будут даны задачи, а также одна или несколько таблиц и их схема.
Вам будет дана ячейка решения, в которую вы должны будете записать свое решение и отправить его на проверку.
Каждый уровень становится сложнее.
PS: Для прохождения SQL Squid Games, вам нужно хорошо знать SQL.А если хотите освежить свои знания или выучить SQL с нуля, вот 33 интерактивных учебника от Datalemur авторов игры из которых вы узнаете все, что нужно знать, чтобы пройти игру.
📲 Начать игру
@ai_machinelearning_big_data
#sql #tutorial #educationalgame
@sql_lib
Please open Telegram to view this post
VIEW IN TELEGRAM
#курс #dataanalysis
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡️ Подборка больших и полезных датасетов для работы с данных:
Sky-T1-data-17k — универсальный датасет, созданный для тренировки модели Sky-T1-32B, представляющей собой развитие модели MiniMax-Text-01. Эта модель уверенно опережает GPT-4o и Gemini-2 на тестах с длинными контекстами.
XMIDI Dataset — масштабный музыкальный датасет с детальными метками эмоций и жанров. Включает 108 023 MIDI-файлов, что делает его самым крупным набором данных подобного типа.
AceMath-Data — серия датасетов, использованных компанией NVIDIA для обучения своей топовой модели AceMath-72B-Instruct. Эта модель заметно превосходит GPT-4o и Claude-3.5 Sonnet в решении математических задач.
@sql_lib
#sql #datasets #opensource
Sky-T1-data-17k — универсальный датасет, созданный для тренировки модели Sky-T1-32B, представляющей собой развитие модели MiniMax-Text-01. Эта модель уверенно опережает GPT-4o и Gemini-2 на тестах с длинными контекстами.
XMIDI Dataset — масштабный музыкальный датасет с детальными метками эмоций и жанров. Включает 108 023 MIDI-файлов, что делает его самым крупным набором данных подобного типа.
AceMath-Data — серия датасетов, использованных компанией NVIDIA для обучения своей топовой модели AceMath-72B-Instruct. Эта модель заметно превосходит GPT-4o и Claude-3.5 Sonnet в решении математических задач.
@sql_lib
#sql #datasets #opensource
Please open Telegram to view this post
VIEW IN TELEGRAM
800+ SQL Server Interview Questions and Answers .pdf
1 MB
Он также включает задачи для самостоятельной работы и множество примеров.
Сборник отлично подходит для тех, кто хочет прокачать свои навыки работы с SQL, освежить знания и проверить свои знания.
▪ GitHub
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Сегодня все говорят о цифровой трансформации и внедрении искусственного интеллекта в бизнес-процессы. Но многие забывают, что ИИ без данных не бывает. Именно качественные, актуальные и правильно структурированные данные определяют успех проекта в области машинного обучения и глубокого анализа.
Читать статью
Please open Telegram to view this post
VIEW IN TELEGRAM
🛠 PostgreSQL – одна из самых мощных, популярных и быстроразвивающихся реляционных СУБД с открытым исходным кодом.
Ее документация – это настоящий кладезь знаний:
Всегда актуальна: Отражает последнюю версию и все новейшие возможности (актуально для 2025!).
Исчерпывающая: От основ SQL и установки до продвинутых тем администрирования, репликации, расширений и внутреннего устройства.
- Авторитетная: Написана и поддерживается разработчиками СУБД.
Структурированная: Легко навигировать, подходит как для новичков, так и для опытных профессионалов.
- Полностью бесплатная: Доступна всем и всегда.
По сути, это полноценный, постоянно обновляемый учебник и справочник по одной из важнейших технологий баз данных сегодня. Если вы работаете с данными или только планируете начать – это обязательный ресурс!
🔗 Ссылка на документацию PostgreSQL (Русская версия):
https://postgrespro.ru/docs/postgresql/ (Примечание: Это версия от Postgres Professional, одного из ключевых
контрибьюторов PostgreSQL, которая обычно наиболее оперативно обновляется на русском языке).
Или официальная ссылка на международном сайте (выберите язык): https://www.postgresql.org/docs/current/
#БазыДанных #БД #DataBases #PostgreSQL #SQL #Программирование #IT #БесплатныеКниги #Обучение #OpenSource #Актуально2024 #Postgres
Ее документация – это настоящий кладезь знаний:
Всегда актуальна: Отражает последнюю версию и все новейшие возможности (актуально для 2025!).
Исчерпывающая: От основ SQL и установки до продвинутых тем администрирования, репликации, расширений и внутреннего устройства.
- Авторитетная: Написана и поддерживается разработчиками СУБД.
Структурированная: Легко навигировать, подходит как для новичков, так и для опытных профессионалов.
- Полностью бесплатная: Доступна всем и всегда.
По сути, это полноценный, постоянно обновляемый учебник и справочник по одной из важнейших технологий баз данных сегодня. Если вы работаете с данными или только планируете начать – это обязательный ресурс!
🔗 Ссылка на документацию PostgreSQL (Русская версия):
https://postgrespro.ru/docs/postgresql/ (Примечание: Это версия от Postgres Professional, одного из ключевых
контрибьюторов PostgreSQL, которая обычно наиболее оперативно обновляется на русском языке).
Или официальная ссылка на международном сайте (выберите язык): https://www.postgresql.org/docs/current/
#БазыДанных #БД #DataBases #PostgreSQL #SQL #Программирование #IT #БесплатныеКниги #Обучение #OpenSource #Актуально2024 #Postgres
⚡️Легкий способ получать свежие обновления и следить за трендами в разработке на вашем языке. Находите свой стек и подписывайтесь:
Python: t.me/pythonl
Linux: t.me/linuxacademiya
Собеседования DS: t.me/machinelearning_interview
Нерйросети t.me/ai_machinelearning_big_data
C++ t.me/cpluspluc
Docker: t.me/DevopsDocker
Хакинг: t.me/linuxkalii
Devops: t.me/DevOPSitsec
Data Science: t.me/data_analysis_ml
Javascript: t.me/javascriptv
C#: t.me/csharp_ci
Java: t.me/javatg
Базы данных: t.me/sqlhub
Python собеседования: t.me/python_job_interview
Мобильная разработка: t.me/mobdevelop
Golang: t.me/Golang_google
React: t.me/react_tg
Rust: t.me/rust_code
ИИ: t.me/vistehno
PHP: t.me/phpshka
Android: t.me/android_its
Frontend: t.me/front
Big Data: t.me/bigdatai
МАТЕМАТИКА: t.me/data_math
Kubernets: t.me/kubernetc
Разработка игр: https://yangx.top/gamedev
Haskell: t.me/haskell_tg
Физика: t.me/fizmat
💼 Папка с вакансиями: t.me/addlist/_zyy_jQ_QUsyM2Vi
Папка Go разработчика: t.me/addlist/MUtJEeJSxeY2YTFi
Папка Python разработчика: t.me/addlist/eEPya-HF6mkxMGIy
Папка ML: https://yangx.top/addlist/2Ls-snqEeytkMDgy
Папка FRONTEND: https://yangx.top/addlist/mzMMG3RPZhY2M2Iy
😆ИТ-Мемы: t.me/memes_prog
🇬🇧Английский: t.me/english_forprogrammers
🧠ИИ: t.me/vistehno
🎓954ГБ ОПЕНСОРС КУРСОВ: @courses
📕Ит-книги бесплатно: https://yangx.top/addlist/BkskQciUW_FhNjEy
Python: t.me/pythonl
Linux: t.me/linuxacademiya
Собеседования DS: t.me/machinelearning_interview
Нерйросети t.me/ai_machinelearning_big_data
C++ t.me/cpluspluc
Docker: t.me/DevopsDocker
Хакинг: t.me/linuxkalii
Devops: t.me/DevOPSitsec
Data Science: t.me/data_analysis_ml
Javascript: t.me/javascriptv
C#: t.me/csharp_ci
Java: t.me/javatg
Базы данных: t.me/sqlhub
Python собеседования: t.me/python_job_interview
Мобильная разработка: t.me/mobdevelop
Golang: t.me/Golang_google
React: t.me/react_tg
Rust: t.me/rust_code
ИИ: t.me/vistehno
PHP: t.me/phpshka
Android: t.me/android_its
Frontend: t.me/front
Big Data: t.me/bigdatai
МАТЕМАТИКА: t.me/data_math
Kubernets: t.me/kubernetc
Разработка игр: https://yangx.top/gamedev
Haskell: t.me/haskell_tg
Физика: t.me/fizmat
💼 Папка с вакансиями: t.me/addlist/_zyy_jQ_QUsyM2Vi
Папка Go разработчика: t.me/addlist/MUtJEeJSxeY2YTFi
Папка Python разработчика: t.me/addlist/eEPya-HF6mkxMGIy
Папка ML: https://yangx.top/addlist/2Ls-snqEeytkMDgy
Папка FRONTEND: https://yangx.top/addlist/mzMMG3RPZhY2M2Iy
😆ИТ-Мемы: t.me/memes_prog
🇬🇧Английский: t.me/english_forprogrammers
🧠ИИ: t.me/vistehno
🎓954ГБ ОПЕНСОРС КУРСОВ: @courses
📕Ит-книги бесплатно: https://yangx.top/addlist/BkskQciUW_FhNjEy
📌 Основные возможности
SchemaCrawler:
Генерация диаграмм: Создание ER-диаграмм с использованием Graphviz, поддержка форматов PNG, SVG, PDF и HTML с встроенными SVG.
Фильтрация объектов: Использование регулярных выражений для фильтрации таблиц, представлений и столбцов, что позволяет сосредоточиться на интересующих элементах схемы.
schemacrawler.com
Поддержка различных форматов вывода: Экспорт схемы в текстовом, JSON, YAML и HTML форматах, что удобно для документирования и отслеживания изменений.
schemacrawler.com
Интеграция с другими инструментами: Возможность генерации диаграмм в форматах Mermaid, PlantUML и dbdiagram.io для последующего редактирования в сторонних приложениях.
Автоматизация и скриптинг: Поддержка скриптов на JavaScript, Python, Groovy и Ruby для автоматизации задач и интеграции в CI/CD процессы.
Анализ качества схемы (Lint): Возможность выявления потенциальных проблем в дизайне базы данных, таких как отсутствие первичных ключей или избыточные индексы.
Гибкая настройка: Широкие возможности конфигурации через файлы настроек или командную строку, включая отображение/скрытие имен схем, порядковых номеров столбцов, кардинальности связей и т.д.
Пример использования:
Чтобы создать диаграмму схемы базы данных в формате PNG, можно использовать следующую команду:
schemacrawler --server=postgresql --host=localhost --database=mydb --user=postgres --password=secret \
--info-level=standard --command=schema --output-format=png --output-file=diagram.png
Эта команда подключится к базе данных PostgreSQL и создаст ER-диаграмму с основными элементами схемы.
Установка и запуск:
Установка: Скачайте дистрибутив SchemaCrawler с официального сайта и распакуйте его в удобное место.
schemacrawler.com
Предварительные требования: Убедитесь, что установлены Java (версия 8 или выше) и Graphviz (если планируется генерация диаграмм).
Запуск: Используйте скрипты schemacrawler.sh (для Unix) или schemacrawler.cmd (для Windows) для запуска инструмента.
schemacrawler.com
https://www.schemacrawler.com/diagramming.html
Please open Telegram to view this post
VIEW IN TELEGRAM
📘 SQL Notes for Professionals — незаменимый справочник для разработчиков
Если ты работаешь с базами данных или только начинаешь изучать SQL, обязательно загляни в книгу *SQL Notes for Professionals*. Она представляет собой тщательно собранный справочник, составленный из лучших материалов Stack Overflow Documentation.
▪ Что внутри?
• Краткие и понятные объяснения по синтаксису SQL
• Примеры запросов и структур данных
• Советы по работе с
• Практическая информация для повседневной работы с реляционными базами данных
▪ Кому подойдёт?
• Новичкам — для быстрого старта
• Опытным разработчикам — как удобный справочник под рукой
• Всем, кто хочет систематизировать знания и избежать типичных ошибок
🔍 Важно знать
Эта книга — неофициальное, бесплатное учебное пособие, созданное на основе открытой документации Stack Overflow. Контент лицензирован по Creative Commons BY-SA. Использование информации осуществляется на свой страх и риск — авторы не гарантируют её абсолютную точность.
📥 *Идеальный материал для тех, кто предпочитает учиться на практических примерах и хочет всегда иметь под рукой концентрированное знание SQL.*
📎 Ссылка на скачивание
Если ты работаешь с базами данных или только начинаешь изучать SQL, обязательно загляни в книгу *SQL Notes for Professionals*. Она представляет собой тщательно собранный справочник, составленный из лучших материалов Stack Overflow Documentation.
▪ Что внутри?
• Краткие и понятные объяснения по синтаксису SQL
• Примеры запросов и структур данных
• Советы по работе с
SELECT
, JOIN
, GROUP BY
, транзакциями и многим другим • Практическая информация для повседневной работы с реляционными базами данных
▪ Кому подойдёт?
• Новичкам — для быстрого старта
• Опытным разработчикам — как удобный справочник под рукой
• Всем, кто хочет систематизировать знания и избежать типичных ошибок
🔍 Важно знать
Эта книга — неофициальное, бесплатное учебное пособие, созданное на основе открытой документации Stack Overflow. Контент лицензирован по Creative Commons BY-SA. Использование информации осуществляется на свой страх и риск — авторы не гарантируют её абсолютную точность.
📥 *Идеальный материал для тех, кто предпочитает учиться на практических примерах и хочет всегда иметь под рукой концентрированное знание SQL.*
📎 Ссылка на скачивание
🧠 SQL-задача с подвохом: “Найди самого активного… по количеству разных друзей”
📘 Условие
У тебя есть таблица дружбы:
Здесь каждая строка означает, что
Записи всегда односторонние: если есть
Нужно написать запрос, который найдёт пользователя с наибольшим числом уникальных друзей.
❓ Пример попытки:
🔍 Вопрос:
1) В чём здесь может быть логическая ошибка?
2) Какую строку подсчитает
3) Когда нужно использовать
4) Как обойти случай, если один и тот же друг записан несколько раз?
✅ Разбор подвоха
💣 Проблема: один пользователь может быть записан как друг несколько раз, особенно если приложение допускает дубли (или "перезапросы дружбы").
Пример:
В этом случае:
Но реальных друзей у пользователя
✅ Решение:
Используй
🎯 Дополнительно можно убрать самого пользователя из списка друзей (на случай ошибок):
⚠️ Подвох
•
•
• Иногда friendship бывает и симметричной, тогда нужна защита от двойного счёта
📘 Условие
У тебя есть таблица дружбы:
friends(user_id, friend_id)
Здесь каждая строка означает, что
user_id
дружит с friend_id
. Записи всегда односторонние: если есть
(1, 2)
, это не значит, что будет (2, 1)
.Нужно написать запрос, который найдёт пользователя с наибольшим числом уникальных друзей.
❓ Пример попытки:
SELECT user_id, COUNT(friend_id) AS total_friends
FROM friends
GROUP BY user_id
ORDER BY total_friends DESC
LIMIT 1;
🔍 Вопрос:
1) В чём здесь может быть логическая ошибка?
2) Какую строку подсчитает
COUNT(friend_id)
? 3) Когда нужно использовать
COUNT(DISTINCT friend_id)
? 4) Как обойти случай, если один и тот же друг записан несколько раз?
✅ Разбор подвоха
💣 Проблема: один пользователь может быть записан как друг несколько раз, особенно если приложение допускает дубли (или "перезапросы дружбы").
Пример:
INSERT INTO friends VALUES (1, 2), (1, 2), (1, 3);
В этом случае:
SELECT COUNT(friend_id) FROM friends WHERE user_id = 1;
-- → вернёт 3
Но реальных друзей у пользователя
1
— только 2: 2
и 3
.✅ Решение:
Используй
COUNT(DISTINCT friend_id)
:
SELECT user_id, COUNT(DISTINCT friend_id) AS unique_friends
FROM friends
GROUP BY user_id
ORDER BY unique_friends DESC
LIMIT 1;
🎯 Дополнительно можно убрать самого пользователя из списка друзей (на случай ошибок):
WHERE user_id != friend_id
⚠️ Подвох
•
COUNT()
без DISTINCT
ловит даже опытных — особенно если в БД возможны дубли •
LIMIT 1
не гарантирует "уникального победителя", если у нескольких одинаковый счёт • Иногда friendship бывает и симметричной, тогда нужна защита от двойного счёта
Подробный разбор проектирования баз данных: нормализация, схемы, целостность данных. Больше, чем просто SQL.
🔗 Читать онлайн или скачать (PDF)
Please open Telegram to view this post
VIEW IN TELEGRAM
SQL_cheatsheet.pdf
754.9 KB
⚡️ SQL-шпаргалка, которая выручит в интервью, проекте и проде
Полный мастер-гайд по SQL в одном PDF: практичные примеры, чёткие объяснения и никакой воды.
Что внутри:
• 💬 Создание баз, таблиц и изменение схем
• 💬 Запросы любого уровня сложности: JOIN, GROUP BY, HAVING, PARTITION
• 💬 Подзапросы, CTE, оконные функции: ROW_NUMBER, RANK, DENSE_RANK
• 💬 VIEW, временные таблицы и работа с дубликатами
• 💬 Даты, строки, преобразования и агрегации
• 💬 Очистка данных, разбиение по разделителям
• 💬 UNION, INTERSECT, EXCEPT — управление сложными выборками
Затрагиваются и продвинутые кейсы:
• Парсинг адресов
• Кастомная сортировка
• Использование ISNULL и COALESCE
🧠 Это не просто набор команд — это концентрат боевого SQL-опыта.
Подходит для:
➡️ Подготовки к SQL-интервью
➡️ BI и аналитики
➡️ Web-разработки с базами
➡️ Встраивания SQL в проекты на Python, Go, Java и других языках
Полный мастер-гайд по SQL в одном PDF: практичные примеры, чёткие объяснения и никакой воды.
Что внутри:
• 💬 Создание баз, таблиц и изменение схем
• 💬 Запросы любого уровня сложности: JOIN, GROUP BY, HAVING, PARTITION
• 💬 Подзапросы, CTE, оконные функции: ROW_NUMBER, RANK, DENSE_RANK
• 💬 VIEW, временные таблицы и работа с дубликатами
• 💬 Даты, строки, преобразования и агрегации
• 💬 Очистка данных, разбиение по разделителям
• 💬 UNION, INTERSECT, EXCEPT — управление сложными выборками
Затрагиваются и продвинутые кейсы:
• Парсинг адресов
• Кастомная сортировка
• Использование ISNULL и COALESCE
🧠 Это не просто набор команд — это концентрат боевого SQL-опыта.
Подходит для:
➡️ Подготовки к SQL-интервью
➡️ BI и аналитики
➡️ Web-разработки с базами
➡️ Встраивания SQL в проекты на Python, Go, Java и других языках
Forwarded from Python/ django
Руководство_по_ускорению_и_оптимизации_Python_кода.pdf
264.6 KB
Без лишней теории — только рабочие практики, которые используют разработчики в боевых проектах.
Внутри:
• Как искать bottleneck'и и профилировать код
• Где и когда использовать Numba, Cython, PyPy
• Ускорение Pandas, NumPy, переход на Polars
• Асинхронность, кеши, JIT, сборка, автопрофилировка — всё по полочкам
• Только нужные инструменты: scalene, py-spy, uvloop, Poetry, Nuitka
⚙️ Написано просто, чётко и с прицелом на production.
📌 Полная версия онлайн
@pythonl
Please open Telegram to view this post
VIEW IN TELEGRAM
🔢 PGVector: векторный поиск прямо в PostgreSQL — гайд
Если ты работаешь с embedding'ами (OpenAI, HuggingFace, LLMs) и хочешь делать семантический поиск в SQL — тебе нужен
📦 Установка PGVector (Linux)
Или просто:
• macOS:
• Docker:
• PostgreSQL 13+ (через APT/YUM)
🔌 Подключение расширения в базе
После этого ты можешь использовать новый тип данных
🧱 Пример использования
Создаём таблицу:
Добавляем данные:
Поиск ближайшего вектора:
🧠 Операторы сравнения
PGVector поддерживает несколько видов расстояний между векторами:
-
-
-
-
-
-
Также можно усреднять вектора:
🚀 Индексация для быстрого поиска
HNSW (лучшее качество):
Параметры можно настраивать:
#### IVFFlat (быстрее создаётся, но чуть менее точный):
🔍 Проверка версии и обновление
📌 Особенности
- Работает с PostgreSQL 13+
- Поддержка до 2000 измерений
- Расширяемый синтаксис
- Можно использовать
- Подходит для RAG-пайплайнов, NLP и встраивания LLM-поиска в обычные SQL-приложения
🔗 Подробнее
💡 Храни embedding'и прямо в PostgreSQL — и делай семантический поиск без внешних векторных БД.
Если ты работаешь с embedding'ами (OpenAI, HuggingFace, LLMs) и хочешь делать семантический поиск в SQL — тебе нужен
pgvector
. Это расширение позволяет сохранять и сравнивать векторы прямо внутри PostgreSQL.📦 Установка PGVector (Linux)
git clone --branch v0.8.0 https://github.com/pgvector/pgvector.git
cd pgvector
make
sudo make install
Или просто:
• macOS:
brew install pgvector
• Docker:
pgvector/pgvector:pg17
• PostgreSQL 13+ (через APT/YUM)
🔌 Подключение расширения в базе
CREATE EXTENSION vector;
После этого ты можешь использовать новый тип данных
vector
.🧱 Пример использования
Создаём таблицу:
CREATE TABLE items (
id bigserial PRIMARY KEY,
embedding vector(3)
);
Добавляем данные:
INSERT INTO items (embedding) VALUES ('[1,2,3]'), ('[4,5,6]');
Поиск ближайшего вектора:
SELECT * FROM items
ORDER BY embedding <-> '[3,1,2]'
LIMIT 5;
🧠 Операторы сравнения
PGVector поддерживает несколько видов расстояний между векторами:
-
<->
— L2 (евклидово расстояние)-
<#>
— скалярное произведение-
<=>
— косинусное расстояние-
<+>
— Manhattan (L1)-
<~>
— Хэммингово расстояние (для битовых векторов)-
<%>
— Жаккар (для битовых векторов)Также можно усреднять вектора:
SELECT AVG(embedding) FROM items;
🚀 Индексация для быстрого поиска
HNSW (лучшее качество):
CREATE INDEX ON items USING hnsw (embedding vector_l2_ops);
Параметры можно настраивать:
SET hnsw.ef_search = 40;
#### IVFFlat (быстрее создаётся, но чуть менее точный):
CREATE INDEX ON items USING ivfflat (embedding vector_l2_ops) WITH (lists = 100);
SET ivfflat.probes = 10;
🔍 Проверка версии и обновление
SELECT extversion FROM pg_extension WHERE extname='vector';
ALTER EXTENSION vector UPDATE;
📌 Особенности
- Работает с PostgreSQL 13+
- Поддержка до 2000 измерений
- Расширяемый синтаксис
- Можно использовать
DISTINCT
, JOIN
, GROUP BY
, ORDER BY
и агрегации- Подходит для RAG-пайплайнов, NLP и встраивания LLM-поиска в обычные SQL-приложения
🔗 Подробнее
💡 Храни embedding'и прямо в PostgreSQL — и делай семантический поиск без внешних векторных БД.