А что если можно определить свои собственные типы сущностей без обучения отдельной модели?
Named Entity Recognition (NER) вытаскивает из текста ключевые данные вроде имен, дат и организаций. Но стандартные модели обычно зашиты под фиксированный набор типов, типа PERSON, ORG, DATE и т.п.
Если надо вытянуть что-то более специфичное, обычно приходится обучать свою модель на тысячах размеченных примеров.
GLiNER решает это за счёт zero-shot извлечения сущностей: можно тащить любые типы без обучения.
Плюсы:
• Сразу работает на любом домене текста, без подготовки
• Поддерживает несколько типов сущностей за один проход
• Возвращает confidence для каждой найденной сущности
• Легко интегрируется в spaCy и другие NLP-пайплайны
Полная статья: https://bit.ly/4pdiNrz
Запустите этот код: https://bit.ly/4s6wEkZ
Кроме того, GLiNER является открытым исходным кодом! Установите его с помощью команды «pip install gliner».
👉 @DataSciencegx
Named Entity Recognition (NER) вытаскивает из текста ключевые данные вроде имен, дат и организаций. Но стандартные модели обычно зашиты под фиксированный набор типов, типа PERSON, ORG, DATE и т.п.
Если надо вытянуть что-то более специфичное, обычно приходится обучать свою модель на тысячах размеченных примеров.
GLiNER решает это за счёт zero-shot извлечения сущностей: можно тащить любые типы без обучения.
Плюсы:
• Сразу работает на любом домене текста, без подготовки
• Поддерживает несколько типов сущностей за один проход
• Возвращает confidence для каждой найденной сущности
• Легко интегрируется в spaCy и другие NLP-пайплайны
Полная статья: https://bit.ly/4pdiNrz
Запустите этот код: https://bit.ly/4s6wEkZ
Кроме того, GLiNER является открытым исходным кодом! Установите его с помощью команды «pip install gliner».
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
Google обучил модель на миллионах пользовательских сообщений.
Не увидев ни одного сообщения.
Это называется federated learning. Его используют Google, Apple, Meta и почти все крупные техкомпании.
Объясняю, как это работает.
Представь, что ты хочешь сделать клавиатуру, которая предсказывает следующий ввод.
Лучшие данные для обучения — реальные сообщения с миллионов телефонов.
Но собирать их нельзя: приватность, чувствительные данные, пользователи просто взбунтуются.
Federated learning переворачивает подход.
Вместо того чтобы тащить данные к модели, ты тащишь модель к данным.
Вот как это выглядит на практике.
Шаг 1. Отправляем модель на устройства
Телефон скачивает небольшую нейросеть. Она живет локально, прямо на девайсе.
→ это глобальная модель
Шаг 2. Обучаем там, где живут данные
Пока ты печатаешь, телефон незаметно учится твоим паттернам.
Он считает, как модель должна улучшиться.
→ это локальные градиенты
Шаг 3. Возвращаем только обучение, не данные
На сервер уходят обновления весов.
Не сообщения. Не история ввода. Только математика.
→ этап агрегации обновлений
Шаг 4. Усредняем по тысячам устройств
Сервер объединяет апдейты с тысяч телефонов.
Общие паттерны усиливаются, индивидуальные особенности взаимно гасятся.
→ классический
Четыре шага.
Ни один сырой пользовательский данные не покидает устройство.
Только аккуратная координация.
Самое важное:
это открывает доступ к данным, которые раньше были принципиально недоступны.
Больницы могут обучать модели для диагностики рака, не обмениваясь снимками пациентов.
Банки строят антифрод, не раскрывая транзакции.
Умные дома учатся предпочтениям, не отправляя личные моменты в облако.
Приватность и польза — не взаимоисключающие вещи.
Наоборот: уважение границ данных делает такие модели возможными.
Так что прежде чем централизовать все подряд, стоит задуматься:
👉 @DataSciencegx
Не увидев ни одного сообщения.
Это называется federated learning. Его используют Google, Apple, Meta и почти все крупные техкомпании.
Объясняю, как это работает.
Представь, что ты хочешь сделать клавиатуру, которая предсказывает следующий ввод.
Лучшие данные для обучения — реальные сообщения с миллионов телефонов.
Но собирать их нельзя: приватность, чувствительные данные, пользователи просто взбунтуются.
Federated learning переворачивает подход.
Вместо того чтобы тащить данные к модели, ты тащишь модель к данным.
Вот как это выглядит на практике.
Шаг 1. Отправляем модель на устройства
Телефон скачивает небольшую нейросеть. Она живет локально, прямо на девайсе.
→ это глобальная модель
WШаг 2. Обучаем там, где живут данные
Пока ты печатаешь, телефон незаметно учится твоим паттернам.
"omw" → "буду через 10 минут".Он считает, как модель должна улучшиться.
→ это локальные градиенты
ΔWШаг 3. Возвращаем только обучение, не данные
На сервер уходят обновления весов.
Не сообщения. Не история ввода. Только математика.
→ этап агрегации обновлений
Шаг 4. Усредняем по тысячам устройств
Сервер объединяет апдейты с тысяч телефонов.
Общие паттерны усиливаются, индивидуальные особенности взаимно гасятся.
→ классический
FedAvgW_new = W + (1 / n) × Σ(ΔWₖ)Четыре шага.
Ни один сырой пользовательский данные не покидает устройство.
Только аккуратная координация.
Самое важное:
это открывает доступ к данным, которые раньше были принципиально недоступны.
Больницы могут обучать модели для диагностики рака, не обмениваясь снимками пациентов.
Банки строят антифрод, не раскрывая транзакции.
Умные дома учатся предпочтениям, не отправляя личные моменты в облако.
Приватность и польза — не взаимоисключающие вещи.
Наоборот: уважение границ данных делает такие модели возможными.
Так что прежде чем централизовать все подряд, стоит задуматься:
лучшие данные для обучения уже существуют — просто они заперты на устройствах, к которым ты никогда не получишь прямой доступ.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6❤4🌚2
Превращай PDF-файлы в чистые данные, готовые для LLM.
Dolphin — это open-source фреймворк для парсинга документов, который конвертирует PDF в структурированные форматы: Markdown, HTML, LaTeX и JSON.
Работает в два этапа.
Этап 1: детальный анализ макета на уровне страницы. Определяются элементы и их порядок в соответствии с естественным порядком чтения.
Этап 2: параллельный парсинг элементов с использованием разных типов якорей и task-специфичных промптов.
Ключевые возможности:
» Двухэтапный подход analyze-then-parse на базе одной VLM
» Обнадёживающая производительность на задачах парсинга документов
» Генерация последовательности элементов в естественном порядке чтения
» Гетерогенные anchor-промпты для разных типов элементов документа
» Эффективный механизм параллельного парсинга
Проект на 100% open source.
👉 @DataSciencegx
Dolphin — это open-source фреймворк для парсинга документов, который конвертирует PDF в структурированные форматы: Markdown, HTML, LaTeX и JSON.
Работает в два этапа.
Этап 1: детальный анализ макета на уровне страницы. Определяются элементы и их порядок в соответствии с естественным порядком чтения.
Этап 2: параллельный парсинг элементов с использованием разных типов якорей и task-специфичных промптов.
Ключевые возможности:
» Двухэтапный подход analyze-then-parse на базе одной VLM
» Обнадёживающая производительность на задачах парсинга документов
» Генерация последовательности элементов в естественном порядке чтения
» Гетерогенные anchor-промпты для разных типов элементов документа
» Эффективный механизм параллельного парсинга
Проект на 100% open source.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤10
This media is not supported in your browser
VIEW IN TELEGRAM
Самый ожидаемый модуль по техникам оптимизации в машинном обучении наконец вышел.
В нем разобраны базовые вещи:
варианты SGD
выпуклые и невыпуклые задачи
Momentum и ускорение Нестерова
Adam, RMSprop
ландшафты функции потерь
регуляризация
Batch Normalization
метод Ньютона и множители Лагранжа
Читать здесь — https://www.tensortonic.com/ml-math
👉 @DataSciencegx
В нем разобраны базовые вещи:
варианты SGD
выпуклые и невыпуклые задачи
Momentum и ускорение Нестерова
Adam, RMSprop
ландшафты функции потерь
регуляризация
Batch Normalization
метод Ньютона и множители Лагранжа
Читать здесь — https://www.tensortonic.com/ml-math
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8😁1
12 новых продвинутых типов RAG
▪️ Mindscape-Aware RAG (MiA-RAG)
▪️ Многошаговый RAG с памятью на основе гиперграфов
▪️ QuCo-RAG
▪️ HiFi-RAG
▪️ Двунаправленный RAG
▪️ TV-RAG
▪️ MegaRAG
▪️ AffordanceRAG
▪️ Graph-O1
▪️ SignRAG
▪️ Гибридный RAG для многоязычного question answering по документам
▪️ RAGPart и RAGMask
👉 @DataSciencegx
▪️ Mindscape-Aware RAG (MiA-RAG)
▪️ Многошаговый RAG с памятью на основе гиперграфов
▪️ QuCo-RAG
▪️ HiFi-RAG
▪️ Двунаправленный RAG
▪️ TV-RAG
▪️ MegaRAG
▪️ AffordanceRAG
▪️ Graph-O1
▪️ SignRAG
▪️ Гибридный RAG для многоязычного question answering по документам
▪️ RAGPart и RAGMask
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
This media is not supported in your browser
VIEW IN TELEGRAM
Фраза «у меня нет GPU» официально умерла.
VS Code теперь умеет напрямую подключаться к Google Colab.
→ Бесплатная T4 GPU прямо в редакторе.
→ Файлы локально у тебя, вычисления на их стороне.
👉 @DataSciencegx
VS Code теперь умеет напрямую подключаться к Google Colab.
→ Бесплатная T4 GPU прямо в редакторе.
→ Файлы локально у тебя, вычисления на их стороне.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤30👍5😁1
This media is not supported in your browser
VIEW IN TELEGRAM
Microsoft реально перевернули игру 🤯
Они уже давно выложили в open source bitnet.cpp — фреймворк для инференса 1-битных LLM.
Он позволяет гонять модели на 100B параметров прямо на локальном CPU, без всяких GPU.
- инференс быстрее в 6.17 раза
- потребление энергии на CPU меньше на 82.2%
И да, это 100% open source.
👉 @DataSciencegx
Они уже давно выложили в open source bitnet.cpp — фреймворк для инференса 1-битных LLM.
Он позволяет гонять модели на 100B параметров прямо на локальном CPU, без всяких GPU.
- инференс быстрее в 6.17 раза
- потребление энергии на CPU меньше на 82.2%
И да, это 100% open source.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
Что происходит, когда Parquet-файл становится слишком большим и его уже неудобно читать?
При записи больших датасетов в Parquet обычно получается либо один огромный файл, который медленно читается, либо приходится вручную резать данные на более мелкие файлы.
С Polars PartitionMaxSize выходные данные автоматически разбиваются на несколько Parquet-файлов по заданному лимиту размера.
Это дает:
• параллельное чтение на нескольких ядрах
• более быструю и надежную передачу данных в облачном хранилище
Полная статья: [https://bit.ly/4bjGOsc]
Запустить код: [https://bit.ly/49mswob]
👉 @DataSciencegx
При записи больших датасетов в Parquet обычно получается либо один огромный файл, который медленно читается, либо приходится вручную резать данные на более мелкие файлы.
С Polars PartitionMaxSize выходные данные автоматически разбиваются на несколько Parquet-файлов по заданному лимиту размера.
Это дает:
• параллельное чтение на нескольких ядрах
• более быструю и надежную передачу данных в облачном хранилище
Полная статья: [https://bit.ly/4bjGOsc]
Запустить код: [https://bit.ly/49mswob]
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5❤3
Можно делать поиск за ~200 мс по 40 миллионам текстов, используя только CPU-сервер, 8 ГБ RAM и 45 ГБ диска.
Фокус простой: бинарный поиск + рескоринг в int8.
Если хочешь сразу пощупать руками, есть демо по 40 млн текстов из Wikipedia. Без логина и прочих заморочек.
Стратегия инференса такая:
Эмбедим запрос dense-моделью в обычный fp32-вектор
Квантуем fp32-эмбеддинг в бинарный формат, он в 32 раза меньше
Через приблизительный или точный бинарный индекс вытаскиваем, например, 40 документов (примерно в 20 раз быстрее, чем fp32-индекс)
С диска подгружаем int8-эмбеддинги для этих топ-40 документов
Делаем рескоринг: fp32-эмбеддинг запроса × 40 int8-эмбеддингов
Сортируем эти 40 документов по новым скором, берём топ-10
Загружаем заголовки и тексты топ-10 документов
Документы эмбедятся один раз, и дальше эти эмбеддинги используются сразу в двух представлениях:
- бинарный индекс (я использовал IndexBinaryFlat для точного поиска и IndexBinaryIVF для приближённого)
- int8-view, то есть способ быстро читать int8-эмбеддинги с диска по ID документа
В итоге вместо fp32-эмбеддингов ты хранишь:
- бинарный индекс (в 32 раза меньше)
- int8-эмбеддинги (в 4 раза меньше)
Плюс в памяти держится только бинарный индекс, так что по RAM экономия тоже x32 по сравнению с fp32-поиском.
Для сравнения: обычный fp32-ретривал на такой задаче потребовал бы около 180 ГБ RAM, 180 ГБ диска под эмбеддинги и был бы в 20–25 раз медленнее.
Бинарный ретривал с int8-рескорингом укладывается примерно в 6 ГБ RAM и ~45 ГБ диска под эмбеддинги.
Если загружать, скажем, в 4 раза больше документов через бинарный индекс и потом рескорить их в int8, можно вернуть около 99% качества fp32-поиска (против ~97% у чисто бинарного поиска): https://huggingface.co/blog/embedding-quantization#scalar-int8-rescoring
👉 @DataSciencegx
Фокус простой: бинарный поиск + рескоринг в int8.
Если хочешь сразу пощупать руками, есть демо по 40 млн текстов из Wikipedia. Без логина и прочих заморочек.
Стратегия инференса такая:
Эмбедим запрос dense-моделью в обычный fp32-вектор
Квантуем fp32-эмбеддинг в бинарный формат, он в 32 раза меньше
Через приблизительный или точный бинарный индекс вытаскиваем, например, 40 документов (примерно в 20 раз быстрее, чем fp32-индекс)
С диска подгружаем int8-эмбеддинги для этих топ-40 документов
Делаем рескоринг: fp32-эмбеддинг запроса × 40 int8-эмбеддингов
Сортируем эти 40 документов по новым скором, берём топ-10
Загружаем заголовки и тексты топ-10 документов
Документы эмбедятся один раз, и дальше эти эмбеддинги используются сразу в двух представлениях:
- бинарный индекс (я использовал IndexBinaryFlat для точного поиска и IndexBinaryIVF для приближённого)
- int8-view, то есть способ быстро читать int8-эмбеддинги с диска по ID документа
В итоге вместо fp32-эмбеддингов ты хранишь:
- бинарный индекс (в 32 раза меньше)
- int8-эмбеддинги (в 4 раза меньше)
Плюс в памяти держится только бинарный индекс, так что по RAM экономия тоже x32 по сравнению с fp32-поиском.
Для сравнения: обычный fp32-ретривал на такой задаче потребовал бы около 180 ГБ RAM, 180 ГБ диска под эмбеддинги и был бы в 20–25 раз медленнее.
Бинарный ретривал с int8-рескорингом укладывается примерно в 6 ГБ RAM и ~45 ГБ диска под эмбеддинги.
Если загружать, скажем, в 4 раза больше документов через бинарный индекс и потом рескорить их в int8, можно вернуть около 99% качества fp32-поиска (против ~97% у чисто бинарного поиска): https://huggingface.co/blog/embedding-quantization#scalar-int8-rescoring
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6❤5
Ralph Mode для Deep Agents
А что если дать агенту задачу и пусть он крутится бесконечно? Мы собрали Ralph Mode на базе Deep Agents именно для такого эксперимента.
Ralph Mode гоняет агента по циклу, каждый проход с чистым контекстом, а файловая система используется как память. Запустил, отошел, а потом остановил Ctrl+C когда хватит (или заранее поставил лимиты).
В этом видео показывают как прогнать Ralph Mode вместе с Deep Agents и автоматически собрать целый Python-курс.
Video: https://youtube.com/watch?v=yi4XNKcUS8Q
Repo: https://github.com/langchain-ai/deepagents/tree/ralph-mode-example/examples/ralph_mode
👉 @DataSciencegx
А что если дать агенту задачу и пусть он крутится бесконечно? Мы собрали Ralph Mode на базе Deep Agents именно для такого эксперимента.
Ralph Mode гоняет агента по циклу, каждый проход с чистым контекстом, а файловая система используется как память. Запустил, отошел, а потом остановил Ctrl+C когда хватит (или заранее поставил лимиты).
В этом видео показывают как прогнать Ralph Mode вместе с Deep Agents и автоматически собрать целый Python-курс.
Video: https://youtube.com/watch?v=yi4XNKcUS8Q
Repo: https://github.com/langchain-ai/deepagents/tree/ralph-mode-example/examples/ralph_mode
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
16 способов ускорить обучение нейросетей
И финальное правило: профилируй код, чтобы находить и устранять bottleneck'и в производительности.
👉 @DataSciencegx
Используй эффективные оптимайзеры типа AdamW, Adam и т.п.
Гони на аппаратные ускорители (GPU/TPU).
Раздуй batch size по максимуму.
Подключай Momentum.
Пробуй Bayesian Optimization если пространство гиперпараметров большое.
Выставляй max_workers в DataLoader.
Включай pin_memory в DataLoader.
Обучай в mixed precision.
Применяй инициализацию He или Xavier для более быстрой сходимости (обычно помогает).
Используй activation checkpointing чтобы экономить память (время выполнения вырастет).
Включай multi-GPU обучение через Model/Data/Pipeline/Tensor параллелизм.
Для крупных моделей бери DeepSpeed, FSDP, YaFSDP и т.п.
Нормализуй данные уже после загрузки на GPU (актуально для целочисленных данных вроде пикселей).
Применяй gradient accumulation (иногда даёт небольшой плюс).
Всегда используй DistributedDataParallel вместо DataParallel.
torch.rand(2,2, device=...) создаёт тензор сразу на GPU.
torch.rand(2,2).cuda() сначала создаёт на CPU, а потом гонит на GPU.
И финальное правило: профилируй код, чтобы находить и устранять bottleneck'и в производительности.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
Интересная штука: десктопное приложение, которое позволяет гонять AI-модели локально на своей машине. Без API-ключей. Без облака. Ничего никуда не уходит.
Всё крутится у тебя на компьютере, так что полный контроль, приватность и возможность экспериментировать с open-source моделями оффлайн
100% исходный код🐶
👉 @DataSciencegx
Всё крутится у тебя на компьютере, так что полный контроль, приватность и возможность экспериментировать с open-source моделями оффлайн
100% исходный код
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2🤔1
Самый полный обзор по RL, который я видел.
Его написал Кевин Мёрфи из Google DeepMind, у которого больше 128k цитирований.
Чем это отличается от других материалов по RL:
→ Есть мост между классическим RL и текущей эпохой LLM:
Отдельная глава про LLM и RL, где разобрано:
RLHF, RLAIF и reward modeling
PPO, GRPO, DPO, RLOO, REINFORCE++
Обучение reasoning-моделей
Multi-turn RL для агентов
Масштабирование вычислений на inference (test-time compute scaling)
→ База объяснена очень чётко
Все основные алгоритмы вроде value-based методов, policy gradients и actor-critic разобраны с математической строгостью.
→ Model-based RL и world models тоже раскрыты нормально
Есть Dreamer, MuZero, MCTS и дальше по списку — именно туда сейчас движется область.
→ Раздел про multi-agent RL
Теория игр, равновесие Нэша и MARL для LLM-агентов.
https://arxiv.org/pdf/2412.05265
👉 @DataSciencegx
Его написал Кевин Мёрфи из Google DeepMind, у которого больше 128k цитирований.
Чем это отличается от других материалов по RL:
→ Есть мост между классическим RL и текущей эпохой LLM:
Отдельная глава про LLM и RL, где разобрано:
RLHF, RLAIF и reward modeling
PPO, GRPO, DPO, RLOO, REINFORCE++
Обучение reasoning-моделей
Multi-turn RL для агентов
Масштабирование вычислений на inference (test-time compute scaling)
→ База объяснена очень чётко
Все основные алгоритмы вроде value-based методов, policy gradients и actor-critic разобраны с математической строгостью.
→ Model-based RL и world models тоже раскрыты нормально
Есть Dreamer, MuZero, MCTS и дальше по списку — именно туда сейчас движется область.
→ Раздел про multi-agent RL
Теория игр, равновесие Нэша и MARL для LLM-агентов.
https://arxiv.org/pdf/2412.05265
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5❤2
PDF для обучения LLM? 👀
Тулкит для работы с PDF под задачи LLM.
7B VL-модель для аккуратного текста и структурирования. Выдаёт 82.4 accuracy, дешевле на GPU, тянет сложные документы и изображения, заточено под обучение. Реально меняет игру в AI-пайплайнах.
- https://github.com/allenai/olmocr
👉 @DataSciencegx
Тулкит для работы с PDF под задачи LLM.
7B VL-модель для аккуратного текста и структурирования. Выдаёт 82.4 accuracy, дешевле на GPU, тянет сложные документы и изображения, заточено под обучение. Реально меняет игру в AI-пайплайнах.
- https://github.com/allenai/olmocr
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
This media is not supported in your browser
VIEW IN TELEGRAM
Все обсуждают n8n, но стоит присмотреться к Sim.
Это платформа с открытым исходником для сборки AI-агентов:
✓ стек Next.js + Bun + PostgreSQL + Zustand
✓ можно подключать любой AI-модель
✓ можно развернуть на своем сервере
→ [https://github.com/simstudioai/sim]
👉 @DataSciencegx
Это платформа с открытым исходником для сборки AI-агентов:
✓ стек Next.js + Bun + PostgreSQL + Zustand
✓ можно подключать любой AI-модель
✓ можно развернуть на своем сервере
→ [https://github.com/simstudioai/sim]
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤1
Векторные базы данных под AI-память заменили на MP4-файлы.
Memvid позволяет хранить миллионы текстовых чанков внутри одного видео и дает очень быстрый семантический поиск без какой-либо инфраструктуры баз данных.
Полностью open-source.
👉 @DataSciencegx
Memvid позволяет хранить миллионы текстовых чанков внутри одного видео и дает очень быстрый семантический поиск без какой-либо инфраструктуры баз данных.
Полностью open-source.
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔8👍2😁1
Open-source чанкинг текста в RAG-пайплайнах часто считают мелкой деталью. А по факту это один из самых жирных bottleneck’ов, когда дело доходит до продакшн-масштабов.
memchunk решает эту проблему в лоб: семантические границы чанков, высокая пропускная способность, и всё это заточено под реальные продакшн-нагрузки, а не под демки.
memchunk это низкоуровневая библиотека для чанкинга на Rust, заточенная под скорость и корректность.
Она режет текст по естественным границам, не рубит предложения пополам и разгоняется до 1 TB/s за счёт SIMD, lookup-таблиц и обратного поиска.
👉 @DataSciencegx
memchunk решает эту проблему в лоб: семантические границы чанков, высокая пропускная способность, и всё это заточено под реальные продакшн-нагрузки, а не под демки.
memchunk это низкоуровневая библиотека для чанкинга на Rust, заточенная под скорость и корректность.
Она режет текст по естественным границам, не рубит предложения пополам и разгоняется до 1 TB/s за счёт SIMD, lookup-таблиц и обратного поиска.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5
Бывало, что семантический поиск вроде бы попадает в тему, но не в твои требования?
Ищешь "latest ML research", а в выдаче куча релевантных работ… но за 2019 год.
Проблема в том, что similarity не понимает ограничений. Чтобы получить "год >= 2024", нужно фильтровать метаданные на уровне базы.
В ChromaDB это делается через where: сначала база фильтрует по условиям, потом ранжирует по similarity.
Полезные операторы:
• $eq и $ne — точное сравнение
• $gt, $gte, $lt, $lte — диапазоны
• $in, $nin — принадлежность множеству
• $and, $or — комбинирование условий
👉 @DataSciencegx
Ищешь "latest ML research", а в выдаче куча релевантных работ… но за 2019 год.
Проблема в том, что similarity не понимает ограничений. Чтобы получить "год >= 2024", нужно фильтровать метаданные на уровне базы.
В ChromaDB это делается через where: сначала база фильтрует по условиям, потом ранжирует по similarity.
Полезные операторы:
• $eq и $ne — точное сравнение
• $gt, $gte, $lt, $lte — диапазоны
• $in, $nin — принадлежность множеству
• $and, $or — комбинирование условий
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2