SEMANTIC CHUNKING · РЕЗАТЬ ПО СМЫСЛУ
Перед поиском документ режут на куски (чанки), и каждый кусок потом находят отдельно. Если разрез прошёл посреди мысли, поиск достанет половину условия. Semantic chunking режет там, где меняется тема.
01 · документ тендер на ноутбуки · 20 предложений
предмет закупкитребования к участникупоставкаоплатагарантия
Документ без заголовков, сплошным текстом. Цвета — это разметка, которую я сделал, когда писал текст. Алгоритмы её не видят, по ней мы потом проверим результат.
02 · по 200 символов самый простой способ
03 · semantic chunking эмбеддинг → расстояние → порог
Столбик — насколько смысл двух предложений слева от промежутка отличается от двух справа (1 − косинус средних эмбеддингов). Режем там, где столбик выше порога и выше соседей. ● — где на самом деле меняется тема.
04 · итог сверка с разметкой автора
Эмбеддинги настоящие: каждое предложение я прогнал через модель all-MiniLM-L6-v2 (384 числа, ONNX) и вшил результат в страницу. Расстояния, пики, порог и разрезы считаются здесь, в браузере. Модель англоязычная, поэтому документ на английском. Для украинских документов взяли бы многоязычную, например multilingual-e5.
~/ai $ chunk(doc)