alterna ai
ALTERNA AI / ГЛАВА 18 · 01

18.1 Сначала найдём части документа

Мы умеем сравнивать представления и генерировать по входу.

Большой документ не всегда помещается в вопрос целиком. Разделим его на фрагменты и сохраним источник каждой части.

Поиск выбирает фрагменты; builder добавляет их к вопросу. Память, история и tool result имеют разные источники. Право действия проверяет программа, а цикл обязан иметь причину остановки.

Поиск работает не с «папкой знаний», а с адресуемыми фрагментами

Pipeline ingestion читает bytes, определяет формат, извлекает текст, нормализует допустимые различия и режет документ на chunks. Каждый chunk обязан сохранить provenance: document ID/version, диапазон offsets, заголовок, дату и права доступа. Без этих полей найденный текст трудно проверить, обновить или процитировать.

При window w и overlap o<w следующий start равен s+w-o. Overlap уменьшает риск разрыва локального контекста, но создаёт дубликаты и увеличивает index. Token-based boundaries зависят от tokenizer; character offsets нужны отдельно для подсветки исходника.

s0=0,sk+1=sk+w−o,ck=tsk:min⁡(sk+w,n).s_0=0,\qquad s_{k+1}=s_k+w-o, \qquad c_k=t_{s_k:\min(s_k+w,n)}.

Что показывает модель. Визуальная модель связывает каждый chunk с подсвеченным диапазоном исходного документа и показывает overlap как повтор, а не новое знание. Stable chunk ID должен зависеть от версии splitter и content hash; изменение документа требует invalidation старых vectors.

Граница применимости. Fixed windows не понимают структуру таблиц, кода или ссылок между разделами. OCR способен вносить ошибки до retrieval. Chunking не решает access control: фильтрация разрешённых документов должна происходить до выдачи context пользователю, включая shared cache.

tokens_18a="a b c d e f g".split(); window_18a,overlap_18a=4,1
chunks_18a=[]
for start_18a in range(0,len(tokens_18a),window_18a-overlap_18a):
    chunks_18a.append((start_18a,tokens_18a[start_18a:start_18a+window_18a]))
assert chunks_18a==[(0,['a','b','c','d']),(3,['d','e','f','g']),(6,['g'])]

Код повторяет только что разобранные операции. Полный проверяемыйPython-пример главы доступен отдельным файлом; показанный короткий фрагмент не заменяет его реализацию.

Stable IDs и source metadata позволяют проследить происхождение context.

Сравнение и выбор фрагментов. Как этот вопрос продолжает полученный результат?

Python-примеры главы 18 Академическая база →