Alterna · учебный материал

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

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

Что в этом материале

Содержание и основные понятия

На предыдущей странице: сравнение и выбор фрагментов.
Соберём вопрос и выбранные фрагменты в ограниченный контекст. Проверим фактические номера токенов, а не только красиво составленный текст.
Поиск выбирает фрагменты; builder добавляет их к вопросу. Память, история и tool result имеют разные источники. Право действия проверяет программа, а цикл обязан иметь причину остановки.
Для изменения рисунка включитеJavaScript; расчёт и теория доступны далее.
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
=
{
i
1
,
…
}
:
∑
i
∈
C
c
i
≤
B
.
C=\{i_1,\ldots\}:\quad \sum_{i\in C}c_i\le B.
C
=
{
i
1
​
,
…
}
:
i
∈
C
∑
​
c
i
​
≤
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
Академическая база →

Структурная карта учебников