COMRAD404 / GLOSSARY

Контекстное извлечение (Contextual Retrieval)

Contextual Retrieval

Contextual Retrieval — техника Anthropic для RAG, где каждый чанк дополняют коротким контекстом из исходного документа до эмбеддинга и BM25-индексации. Это уменьшает промахи поиска, когда чанкинг обрезает смысл.

TL;DR

Техника RAG, в которой к каждому чанку добавляют короткий контекст из исходного документа перед построением эмбеддингов и BM25-индекса.

Contextual Retrieval — это техника для RAG, в которой к каждому чанку документа добавляют короткий, чанк-специфичный контекст до построения эмбеддингов и индекса BM25. Anthropic впервые описала её в engineering-посте от 19 сентября 2024 года как способ снизить промахи поиска, когда обычный чанкинг вырезает важные соседние детали.

Английский термин: Contextual Retrieval. Также встречается: Contextual Embeddings и Contextual BM25 — это две части одной схемы у Anthropic; в русскоязычном тексте чаще оставляют оригинал или говорят «контекстное извлечение».

Простыми словами

Можно представить, что вы вырезали абзац из большой инструкции. Без дополнительной подписи он выглядит как обрывок, а не как часть целого документа. Contextual Retrieval прикладывает к такому абзацу короткую записку: где он находится, о чём именно речь и зачем этот кусок нужен.

Именно эта записка помогает поиску не перепутать похожие фрагменты. Грубо говоря, вы ищете не голый чанк, а чанк с его местом в контексте документа.

Как это работает

По официальному описанию Anthropic, схема состоит из двух шагов: сначала для чанка получают краткий контекст из полного документа и самого чанка, а затем этот контекст добавляют перед индексированием.

Документ ──> чанки
             │
             ├─> Claude пишет короткий чанк-специфичный контекст
             │
             ├─> контекст + чанк ──> embeddings index
             │
             └─> контекст + чанк ──> BM25 index
                           ↓
                 first-pass retrieval
                           ↓
                 reranking top 20
                           ↓
                        ответ

Anthropic отдельно называет две версии метода: Contextual Embeddings и Contextual BM25. В их рекомендациях retrieval-пайплайн включает первый проход по примерно 150 чанкам и reranking топ-20.

На своём бенчмарке Anthropic пишет о снижении top-20 retrieval failure на 35% только за счёт contextual embeddings и на 49% при добавлении contextual BM25. Это полезный ориентир, но не универсальная гарантия: результат зависит от ваших документов, запросов и способа оценки.

Где применяется

  • Внутренние базы знаний, где абзацы и разделы теряют смысл после чанкинга.
  • Поиск по длинным политикам, техдокам и юридическим материалам, где важны соседние определения и оговорки.
  • RAG-ассистенты на Claude API и других стековых решениях, где нужно уменьшить число нерелевантных чанков до генерации ответа.
  • Эксперименты с retrieval-пайплайнами в коде и ноутбуках из официальных cookbooks и demo-репозиториев Anthropic.

Если вы ищете не технику, а готовое поведение внутри самого Claude, это уже другой слой: help page про RAG for Projects говорит, что функция доступна на Free, Pro, Max, Team и Enterprise и включается автоматически, когда knowledge проекта приближается к лимиту контекста.

Практический пример

Ниже — схематичный сценарий для собственной базы документов. Это не готовый SDK-вызов Anthropic, а иллюстрация логики.

for chunk in chunks:
    # Сжато объясняем, где чанк находится в исходном документе и что он означает
    context = llm_summarize(document, chunk)

    # Добавляем контекст перед индексированием
    enriched_text = context + 'nn' + chunk.text

    embed(enriched_text)      # contextual embeddings
    bm25_index.add(enriched_text)  # contextual BM25

Если запрос пользователя относится к оговорке из соседнего раздела, обогащённый чанк чаще поднимется в выдаче, чем голый фрагмент без подписи. После этого reranking отбирает уже небольшой набор кандидатов для финального ответа.

Чем отличается от…

Термин Что делает Главное отличие
Обычный чанкинг Режет документ на фрагменты и индексирует их как есть. Контекст вокруг куска теряется, а Contextual Retrieval добавляет его обратно до индексации.
Reranking Переоценивает уже найденные кандидаты после первого поиска. Это более поздний этап пайплайна; Contextual Retrieval работает раньше — на этапе подготовки индекса.
Prompt tuning (мягкий промпт) Меняет поведение модели через промпт или мягкую настройку. Не трогает индекс и retrieval-слой.

Если вы хотите совсем быстро отделить генеративные параметры от retrieval-подходов, смотрите также Temperature (параметр генерации): температура влияет на случайность ответа, но не на построение индекса. А для safety-слоя полезен материал AI Safety (безопасность ИИ) — Contextual Retrieval не заменяет ограничения доступа и проверку источников.

Ограничения и заблуждения

  • Заблуждение: это отдельный публичный endpoint или SDK-фича с кнопкой «включить». На практике: по публичным материалам Anthropic это техника и паттерн индексации, а не отдельный продуктовый API.
  • Заблуждение: метод всегда улучшает качество. На практике: Anthropic показывает эффект на своём бенчмарке, но в вашей системе его нужно измерять отдельно.
  • Заблуждение: это то же самое, что RAG for Projects в Claude. На практике: это разные уровни: один — техника подготовки чанков, второй — продуктовая функция проекта.
  • Заблуждение: за Contextual Retrieval есть отдельный тариф. На практике: в pricing docs Anthropic отдельной строки нет; стоимость завязана на обычные токены и prompt caching. В текущей документации читаемые запросы prompt caching биллятся по 0.1x базового input, записи на 5 минут — по 1.25x, на 1 час — по 2x.
  • Практическая оговорка: Anthropic пишет, что API-доступ зависит от официальной доступности Claude в вашей стране; в странах без официального доступа API может быть недоступен.

Практический вывод: Contextual Retrieval полезен, когда чанки без соседнего контекста начинают путать поиск. Но это не магия и не отдельный продукт — проверяйте эффект на своих данных и своём retrieval-пайплайне.

Связанные термины, инструменты и исследования

Для проверки самой методики и её оценки смотрите официальный пост Anthropic и приложение Appendix II: там есть описание процедуры, примеры и материалы бенчмарка.

Источники

Вопросы и ответы

Это отдельная функция Claude API?

По публичным материалам Anthropic — нет. Это техника предварительной обработки и индексации, а не отдельный endpoint с собственной кнопкой включения.

Чем Contextual Retrieval отличается от обычного RAG?

В обычном RAG индексируют исходные чанки как есть. Здесь каждый чанк сначала дополняют кратким контекстом, и только потом строят embeddings и BM25-индекс.

Нужно ли это, если у меня уже есть reranking?

Не обязательно, но это дополняющие уровни. Reranking работает после первого поиска, а Contextual Retrieval улучшает сам материал, из которого ищутся кандидаты.

Как это влияет на стоимость?

Отдельной строки в pricing docs Anthropic нет. Вы платите за обычное использование Claude/API и, если применяете prompt caching, по текущим правилам кеширования.

Можно ли использовать, если Claude API недоступен в моей стране?

Anthropic пишет, что доступ к API зависит от официальной доступности Claude в вашей стране. Если Claude не доступен официально, API-доступ может быть недоступен тоже.

Источники

SOURCES

Вопросы и ответы

FAQ
Это отдельная функция Claude API?

По публичным материалам Anthropic — нет. Это техника предварительной обработки и индексации, а не отдельный endpoint с собственной кнопкой включения.

Чем Contextual Retrieval отличается от обычного RAG?

В обычном RAG индексируют исходные чанки как есть. Здесь каждый чанк сначала дополняют кратким контекстом, и только потом строят embeddings и BM25-индекс.

Нужно ли это, если у меня уже есть reranking?

Не обязательно, но это дополняющие уровни. Reranking работает после первого поиска, а Contextual Retrieval улучшает сам материал, из которого ищутся кандидаты.

Как это влияет на стоимость?

Отдельной строки в pricing docs Anthropic нет. Вы платите за обычное использование Claude/API и, если применяете prompt caching, по текущим правилам кеширования.

Можно ли использовать, если Claude API недоступен в моей стране?

Anthropic пишет, что доступ к API зависит от официальной доступности Claude в вашей стране. Если Claude не доступен официально, API-доступ может быть недоступен тоже.

Читайте также

LINKS