Технозаметки Малышева
13.3K subscribers
5.65K photos
2.15K videos
43 files
5.57K links
Новости инноваций из мира Искусственного Интеллекта. 🤖 [РКН: 7021469833 ]

Всё об ИИ, ИТ трендах и Технологической Сингулярности.

🤖: @ai_gptfreebot [бесплатный бот]
✍️: @tsingular_bot [каталог ботов и курсов]

💸: https://pay.cloudtips.ru/p/c8960bbb
Download Telegram
GraphRAG с Qdrant и Neo4j

Обычный RAG может терять связи между фактами из разных документов.

GraphRAG
решает проблему связанности атомарных фактов через граф знаний.

Qdrant изложил детальную пошаговую инструкцию как создать, наполнить и привязать graphRAG Neo4J к своей векторной базе для повышения качества ответов.

LLM, таким образом, получает не разрозненные куски текста, а структурированный контекст с графом.

Архитектура двухэтапная:
- Загрузка: LLM парсит текст в узлы и рёбра графа → Neo4j хранит связи, Qdrant — эмбеддинги

- Поиск: векторный поиск находит стартовые точки → Cypher-запрос вытаскивает подграф → всё идёт в промпт

Интересно, как скоро Qdrant добавят у себя поддержку GQL какой-нибудь, вроде того же cypher чтобы не держать 2 базы одновременно.

#GraphRAG #Qdrant #Neo4j #обучение
———
@tsingular
👍8✍4❤1⚡1
This media is not supported in your browser
VIEW IN TELEGRAM
⚡️ Запустили с Молти «Гибридную Фабрику Знаний»


Короче, решил прокачать Молти ещё дальше векторами и графом.

В итоге за 30 минут мы собрали монструозную архитектуру для точного извлечения смыслов из огромных массивов данных.
Отработали на серии из 5 книг, которые превратили в единую систему.

Что мы навертели под капотом:

🔹 Гибридный поиск (Qdrant + BM25)
Мы не верим только «смысловым» векторам — они часто мажут. Поэтому Молти выстроил двойной индекс в Qdrant. Плотные векторы ловят контекст, а BM25 мертвой хваткой цепляется за редкие имена и уникальные термины. Теперь ни одна деталь не пролетает мимо.

🔹 Графовый движок (Memgraph)
Весь текст мы пропускаем через «сито» из субагентов-аналитиков на базе opencode. Они вытаскивают сущности и связи, выстраивая в Memgraph живую карту отношений. Мы видим не просто наборы слов, а жесткую структуру: кто на кого повлиял, какой артефакт к кому попал и к каким последствиям это привело через три книги.
А главное,- они работают параллельно, поэтому 5 книг ушли в базу за 3 минуты! 4 vCPU на виртуалке.

🔹 Сквозные связи (Cross-Linking)
Это самое мощное. Молти «заякорил» каждый узел графа на конкретные точки в векторной базе. Теперь на вопрос «откуда у персонажа X взялся этот предмет?» система не «гадает», а мгновенно достает цепочку из графа и подтверждает её точными цитатами из первоисточника.

🔹 Агентный конвейер
Всё это ворочают автономные агенты Молти. Они сами грызут кодировки, шинкуют чанки, чистят мусор и через MERGE-логику наполняют базу в фоне, пока мы можем продолжать работать дальше.

Итог: Мы построили не просто поисковик, а Machine-Generated Knowledge Base. Систему, которая знает структуру данных на молекулярном уровне и исключает любые галлюцинации.
И все это без написания кода или открытия терминала, а просто продолжая чат в телеге.

Какой-то вайбтелеграмминг, получается.

Работаем дальше. ⚡️

#GraphRAG #Memgraph #Qdrant #Molti #KnowledgeFactory
------
@tsingular
3🤯29👍9🏆7🔥6❤5❤‍🔥1
Гиперболические эмбеддинги в Qdrant: как сжать каталог в 5 измерений и почему на этом ломается HNSW

Привычные векторные модели загоняют данные в плоское пространство.
Для каталогов товаров это тупик, - ветви дерева множатся экспоненциально, а объем плоского диска растет лишь полиномиально, сбивая листья в кучу.

📐 Дерево в пяти измерениях:
В пространстве отрицательной кривизны площадь растет по экспоненте, давая место ветвям.
В тесте Google Product Taxonomy (5 595 категорий):
• 5D-вектор Пуанкаре показал точность 0.905 MAP.
• 50D евклидов вектор взял лишь 0.658 MAP, потратив в 10 раз больше памяти.
Радиус кодирует глубину: в центре общее («обувь»), у края поиск сужается до конкретики («черные челси»).

💥 Провал HNSW и решение с Qdrant:
Попытка скормить эти координаты в HNSW не увенчались успехом.
Из-за 600-кратного разброса норм топология графа развалилась, - Recall@10 рухнул с 0.986 до 0.020.
Инженеры Qdrant обошли проблему связкой:
• 5D-векторы хранятся как евклидовы координаты с индексом квадрата нормы в payload.
• HNSW быстро отбирает кандидатов через prefetch.
• Серверный расчет в базе досчитывает геодезическое расстояние через обратный косинус.
При prefetch в 1 000 точек Recall@10 подскакивает до 0.920 в одном запросе.

⚖️ Ограничения метода:
У подхода два компромисса:
• Чем точнее модель, тем ближе точки к краю диска, где евклидово приближение слабее: приходится раздувать prefetch, нагружая CPU.
• Вне обучающей выборки точность падает до 0.539 MAP. Метод рассчитан на жесткие деревья, а не на произвольный текст.

💼 А нам зачем?:
Для каталогов на миллионы позиций это сжатие индекса в 10–20 раз.
Вместо сотен гигабайт памяти под тяжелые векторы хватит 5D-координат.
Сходство по углам и глубина по радиусу дают фасетный поиск прямо в базе без внешних деревьев.

#Qdrant #векторныебазы #эмбеддинги
———
@tsingular | Max | YouTube | RuTube | VK | VK Video | Дзен
✍11🔥4❤3⚡1
Qdrant предлагают новый подход в мультиязычном поиске

🔎 Qdrant и Pento показали miniCOIL EN-ES, экспериментальный поиск по английским и испанским текстам. Запрос на одном языке находит документы на другом через единый индекс, без отдельного перевода запроса.

🧩 Авторы объединили слова из словаря переводов в общие понятия. Английское и испанское названия дома занимают один участок поискового вектора. Каждое понятие получает восемь чисел, которые описывают его смысл в контексте: так модель учится различать разные значения одного слова. BM25 учитывает частоту и редкость, а нейросеть добавляет смысл; слова вне словаря обрабатывает обычный BM25.

🧠 Авторы развивают идею COIL, который сопоставлял контекстные представления одинаковых слов. Теперь через словарь можно связать слова разных языков. Небольшие обучаемые слои работают поверх многоязычной модели E5, а примеры для обучения подбирает Qwen3-Embedding.

📊 В тесте с испанскими запросами и английскими документами нужный фрагмент попадал в первые 100 результатов в 96,3% случаев, у перевода запроса с последующим BM25 было 94,9%. При этом первые десять результатов схема с переводом ранжировала лучше.

⚠️ Проверка ограничена примерно 7,5 тыс. фрагментов mMARCO и запросами, покрытыми обученным словарём. Документация уточняет, что при выборе понятий учитывали тексты части тестовых запросов. Результаты пока характеризуют этот ограниченный эксперимент.

💼 Подход интересен для многоязычного RAG, где документы хранятся на разных языках. Сейчас поддерживаются только английский и испанский, а код и веса опубликованы под CC BY-NC 4.0, только для некоммерческого использования.

📎 Модель · Методика проверки

Практический следующий шаг для авторов: расширить словарь и проверить поиск на новых запросах и реальных документах.

#Qdrant #miniCOIL #BM25 #RAG
———
@tsingular
⚡7🔥5❤2✍1
Qdrant 1.20 теперь включает BM25 по умолчанию

22 октября вышла версия 1.20.0. Раньше, чтобы ранжировать текстовый поиск по BM25, каждый документ и каждый запрос приходилось превращать в разреженный вектор: на это требовался отдельный прогон модели, а среднюю длину документа нужно было хранить самому, и она не менялась вместе с данными.

Теперь индекс создаётся с типом text и схемой оценки bm25, статистику база считает по самим данным, включая среднюю длину. В запросе указывают поле индекса и строку поиска, параметры k и b задаются на каждый запрос, перестраивать индекс для них не нужно.
Тот же запрос работает в гибридном поиске и для переранжирования уже найденных точек.

🔻 Для кода добавили отдельный токенизатор: он делит идентификаторы по подчёркиваниям и сменам регистра, включая аббревиатуры. Так getUserName, get_user_name и написание через пробел находят друг друга, а hashmap находит HashMap. Вместе с BM25 это даёт ранжирование по коду без эмбеддингов.

У индексов полезной нагрузки появился параметр nested: элементы массива объектов хранятся отдельно, и вложенный фильтр отвечает по индексам, не читая сами данные. На 100 тысячах точек с тремя вложенными фильтрами замер показал ускорение от 7 до 38 раз по сравнению с чтением самих данных, причём в том замере данные целиком лежали в памяти.

💼 Сжатие. turbo16 занимает вдвое меньше места, чем float32, и на 12 наборах совпадает с ним по recall@10 в пределах 0,001, а ошибка восстановления у него в 7,5 раза ниже, чем у float16. turbo8 занимает вдвое меньше, чем float16, и работает в 1,1–2,4 раза быстрее него на 11 наборах. Для меня здесь важен переезд: старый BM25 на разреженных векторах поддерживается, а текст, который уже лежит в полезной нагрузке, переключается на новый индекс без повторной загрузки.

📎 Документация по BM25 в полнотекстовом индексе

обновляемся

#Qdrant #RAG #BM25
———
@tsingular
🔥4⚡2✍2🤩2