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

18.3 Что действительно увидела модель

На предыдущей странице: сравнение и выбор фрагментов.

Соберём вопрос и выбранные фрагменты в ограниченный контекст. Проверим фактические номера токенов, а не только красиво составленный текст.

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

Retriever предлагает evidence, generator формирует ответ

Retrieval-augmented generation соединяет parametric model с внешней non-parametric memory. Типовой pipeline: преобразовать query, получить candidates, rerank, выбрать fragments в context budget, сгенерировать answer и сохранить citations. F12. Найденный текст не записывается в weights и не становится автоматически достоверным.

Пусть passage i имеет score s_i и token cost c_i. Учебная policy идёт по убыванию score и добавляет passage, если он помещается. Это deterministic greedy rule, не решение оптимального knapsack:

C={i1,…}:∑i∈Cci≤B.C=\{i_1,\ldots\}:\quad \sum_{i\in C}c_i\le B.

Что показывает модель. Context builder показывает budget, отобранные spans и mapping citation→source/version. Prompt обязан отделять retrieved data от system instructions: документ считается недоверенным content, а не командой. Ответ без evidence может быть разрешён только явной policy, например честным «источник не найден».

Граница применимости. RAG не гарантирует истину: document может быть неверным, retriever — пропустить нужное, generator — исказить context. Prompt injection внутри документа требует sandbox/privilege separation. Citation рядом с предложением не доказывает, что источник действительно поддерживает claim; нужна отдельная groundedness-проверка.

passages_18c=[(.9,3,'d1'),(.8,2,'d2'),(.7,4,'d3')]; budget_18c=5; selected_18c=[]
for score_18c,cost_18c,source_18c in sorted(passages_18c,key=lambda row_18c:-row_18c[0]):
    if cost_18c<=budget_18c:
        selected_18c.append(source_18c); budget_18c-=cost_18c
assert selected_18c==['d1','d2'] and budget_18c==0

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

Runtime ограничивает фактические model tokens и явно показывает truncation.

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

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