Сохранение знаний (Knowledge Retention)¶
Метрика Knowledge Retention оценивает, насколько хорошо AI запоминает и использует контекст из предыдущих частей разговора. В многоходовых диалогах критически важно, чтобы ассистент помнил имя пользователя, его предпочтения, ранее упомянутые ограничения и другую существенную информацию.
Как это работает¶
Оценка проходит в три этапа:
- Форматирование диалога (Dialogue Formatting) -- формирует полную историю разговора в структурированном виде
- Оценка удержания (Retention Assessment) -- проверяет, запомнил ли AI контекст из ранних ходов и применяет ли его в более поздних ответах
- Генерация вердикта (Verdict Generation) -- выносит единый вердикт по общему качеству удержания контекста
Метрика обращает внимание не только на явное упоминание ранее сказанного, но и на неявное использование контекста (например, предложение блюда без арахиса, если пользователь упомянул аллергию).
Параметры¶
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
model | str | обязательный | Любая модель: "gpt-4o", "anthropic:claude-3-5-sonnet-latest", "google:gemini-2.0-flash", "ollama:llama3" или CustomLLMClient |
threshold | float | 0.7 | Минимальная оценка для прохождения |
temperature | float | 0.5 | Строгость агрегации |
Обязательные поля¶
Требуется ConversationalEvalTestCase.
Использование¶
В этом примере пользователь в первом ходе сообщает своё имя и аллергию на арахис. Метрика проверяет, использует ли AI эту информацию в последующих ответах:
from eval_lib import (
KnowledgeRetentionMetric,
ConversationalEvalTestCase,
EvalTestCase,
evaluate_conversations,
)
import asyncio
conversation = ConversationalEvalTestCase(
turns=[
EvalTestCase(
input="My name is Alice and I'm allergic to peanuts.",
actual_output="Nice to meet you, Alice! I'll make note of your peanut allergy."
),
EvalTestCase(
input="Can you suggest a dessert?",
actual_output="How about a chocolate lava cake? It's peanut-free, so it's safe for you, Alice!"
),
EvalTestCase(
input="What about a snack?",
actual_output="I'd suggest fruit and cheese. No peanuts involved!"
# AI remembers the allergy from turn 1
),
]
)
metric = KnowledgeRetentionMetric(model="gpt-4o", threshold=0.7)
results = asyncio.run(evaluate_conversations([conversation], [metric]))
В данном примере AI демонстрирует хорошее сохранение знаний: обращается к пользователю по имени и учитывает аллергию при каждой рекомендации.
Стоимость¶
2 вызова LLM API за одну оценку.
Когда использовать¶
Эта метрика особенно важна в следующих сценариях:
- Длинные многоходовые диалоги -- где контекст из начала разговора может быть "забыт" на более поздних этапах
- Персональные ассистенты -- которые должны помнить предпочтения, имя, историю взаимодействий пользователя
- Сценарии клиентской поддержки -- где контекст проблемы должен сохраняться от хода к ходу, чтобы пользователю не приходилось повторяться
- Любой диалоговый AI -- где потеря контекста ухудшает качество взаимодействия и вызывает раздражение пользователя