Практикум по поиску для RAG

Эмбеддинги и векторный поиск: проверка выдачи

Разберите путь от текста до найденного фрагмента. Различайте обрезку входа и размерность эмбеддинга, проверьте совместимость моделей запроса и документов и сравните ANN с точным поиском. Затем решите, готова ли система к смене модели: отдельно оцените наличие новых векторов и поиск ответов на контрольные вопросы.

База → инженерная практика175 минут7 модулей12 вопросов
После курса

Что вы сможете сделать

  1. Различать входные токены и векторное представление текста.
  2. Проверять совместимость кодировщиков запроса и документов.
  3. Рассчитывать скалярное произведение, косинусное сходство и расстояние L2.
  4. Измерять совпадение ANN с точной выдачей отдельно от наличия ответа.
  5. Находить этап поиска или передачи контекста, который требует проверки.
  6. Диагностировать миграцию: проверить наличие новых векторов, совместимость моделей запроса и документов и качество на размеченных вопросах.
Модуль 1 из 7

1. Отделите текст от его вектора

Модель получает текст через входные токены и строит его векторное представление. Для поиска по предложениям нужен вектор предложения; список токенов и набор отдельных векторов токенов — другие объекты.

  • В Transformers 4.44.2 input_ids — номера токенов в словаре на входе модели. В SBERT пулинг (pooling) преобразует выход BERT или RoBERTa в один вектор предложения фиксированного размера.

    Проверить тезис: Текстовый эмбеддинг 01

  • В исследовании SBERT результат на ранее не виденной теме аргументов был ниже, чем при проверке на смешанных темах. Успех на одном наборе не заменяет оценку вашей задачи.

    Проверить тезис: Текстовый эмбеддинг 04

  • В Sentence Transformers max_seq_length ограничивает входную последовательность и обрезает более длинный вход; truncate_dim сокращает число координат — чисел в выходном векторе. Это разные этапы: изменение выходной размерности само по себе не удлиняет вход.

    Проверить тезис: Текстовый эмбеддинг 05 06

  • Для all-MiniLM-L6-v2 карточка модели указывает плотный выходной вектор размерности 384 и усечение входа длиннее 256 WordPiece-токенов по умолчанию. 256 здесь — не число слов; проверяйте поведение именно используемого способа загрузки.

    Проверить тезис: Текстовый эмбеддинг 07

Модуль 2 из 7

2. Проверьте пару кодировщиков

Запрос и документы могут обрабатывать разные модели, предназначенные для совместного поиска. Равное число координат позволяет вычислить оценку, но не доказывает, что она отражает нужное сходство.

  • В DPR вопрос и фрагмент обрабатывают два независимых кодировщика, обученных для поиска по скалярному произведению их векторов.

    Проверить тезис: Текстовый эмбеддинг 02

  • Одинаковая размерность не подтверждает ни совместимость кодировщиков, ни качество поиска на ваших документах.

    Проверить тезис: Текстовый эмбеддинг 03

Модуль 3 из 7

3. Рассчитайте сходство и расстояние

Скалярное произведение зависит от направлений и длин векторов, косинусное сходство — от направлений. Для L2 ищут меньшие расстояния. Следующие числа — учебный пример, а не результат работы модели.

  • Учебный расчёт: для q=(1,0), A=(1,1), B=(3,4) скалярное произведение равно 1 для A и 3 для B; выше стоит B.

    Проверить тезис: Векторный поиск 02

  • Косинусное сходство тех же векторов равно 1/√2 ≈ 0,707 для A и 3/5 = 0,6 для B; выше стоит A.

    Проверить тезис: Векторный поиск 03

  • В описанном способе Faiss ненулевые векторы документов и запроса приводят к длине 1, затем ищут максимум скалярного произведения. Для METRIC_L2 Faiss возвращает квадрат расстояния; само расстояние получают извлечением корня.

    Проверить тезис: Векторный поиск 02 03

Модуль 4 из 7

4. Сравните ANN с точным списком

Точная выдача — контрольный список ближайших векторов по заданной метрике. Чтобы оценить пропуски ANN, сравните списки на том же запросе, наборе векторов и значении k. При равных оценках заранее задайте одно правило выбора соседей.

  • В этом курсе recall@k = |точный top-k ∩ приближённый top-k| / k. Списки содержат по k различных идентификаторов; набор векторов, запрос, метрика и правило разрешения равных оценок одинаковы.

    Проверить тезис: Приближённый поиск ближайших соседей 02

  • В учебном примере точный список — A, B, C, приближённый — A, D, E. Совпал один из трёх точных соседей: recall@3 = 1/3.

    Проверить тезис: Приближённый поиск ближайших соседей 02

  • В HNSW поиск проходит по многоуровневому графу от верхнего уровня к нижнему. Это один алгоритм ANN, а не обязательное устройство любого приближённого поиска.

    Проверить тезис: Приближённый поиск ближайших соседей 01

Модуль 5 из 7

5. Отделите соседство от основания ответа

Нужно различать три результата: найден ли ближайший вектор, содержит ли его текст ответ на вопрос и подтверждает ли переданный модели контекст итоговое утверждение. Ошибка на одном этапе не устанавливает причину ошибок на остальных.

  • Точный векторный поиск находит соседей по выбранной метрике. В DPR top-k accuracy — доля вопросов, для которых в первых k фрагментах есть ответ; знаменатель — число вопросов.

    Проверить тезис: Векторный поиск 04 · RAG 05

  • Совпадение ANN с точным списком и доля вопросов с найденным ответом — разные показатели. Их нельзя заменять друг другом.

    Проверить тезис: Приближённый поиск ближайших соседей 03

  • Даже полное совпадение соседей не проверяет поддержку итогового утверждения. Для этого читают указанные фрагменты и учитывают их совместное обоснование.

    Проверить тезис: Векторный поиск 04 · RAG 07

Модуль 6 из 7

6. Сравните варианты без смешения причин

Чтобы сравнить два варианта поиска, сохраните набор вопросов и коллекцию документов. Меняйте один этап за раз: так проще связать изменение выдачи с причиной. Отдельно проверяйте передачу найденных фрагментов модели и её ответ.

  • Перед сравнением запишите модели, снимок коллекции, метрику, k и контрольные вопросы. Это условия учебной проверки, а не обязательная настройка каждой системы.

    Проверить тезис: Текстовый эмбеддинг 03 · Векторный поиск 01

  • Для ANN посчитайте совпадение с точной выдачей. Для поиска ответа посчитайте долю вопросов, по которым найден хотя бы один фрагмент с ответом.

    Проверить тезис: Приближённый поиск ближайших соседей 02 · RAG 05

  • Ранг фрагмента не доказывает поддержку ответа. Сопоставьте каждое существенное утверждение с текстом указанных источников.

    Проверить тезис: RAG 07 · Повторная сортировка найденных фрагментов 01

Модуль 7 из 7

7. Проверьте готовность к смене модели

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

  • В руководстве Qdrant по смене модели исходные тексты заново кодируют новой моделью. Построение индекса по прежним векторам не выполняет этот пересчёт: проверьте, какой моделью получены сохранённые векторы.

    Проверить тезис: Векторный поиск 05

  • В Qdrant одна запись может хранить несколько именованных векторов. При поиске using выбирает векторы нужного имени. Проверьте, какой моделью они получены и совместима ли с ней модель запроса. Одинаковая размерность сама по себе этого не доказывает.

    Проверить тезис: Векторный поиск 06 · Текстовый эмбеддинг 03

  • Наличие нового вектора у каждой нужной записи проверяет полноту пересчёта. Качество выдачи проверяют отдельно на размеченных вопросах. Доля вопросов с ответом в первых k фрагментах и совпадение ANN-соседей с точным списком — разные показатели.

    Проверить тезис: Векторный поиск 07 · RAG 05 · Приближённый поиск ближайших соседей 03

Финишная прямая

Проверьте инженерное мышление

Вопросы проверяют не память на аббревиатуры, а умение не делать лишних выводов.

01Для индекса поиска предложений через SBERT нужно одно числовое представление каждого предложения. Какой результат сохранить?
02Документы перекодировали новой моделью, а кодировщик запросов оставили прежним. Размерности совпали, но выдача ухудшилась. Что проверит именно совместимость пары?
03Команда воспроизводит DPR из статьи. Какую схему кодирования и сравнения выбрать?
04Учебные векторы: q=(1,0), A=(1,1), B=(3,4). Кто выше при поиске по скалярному произведению и по косинусному сходству?
05В Faiss METRIC_INNER_PRODUCT векторы документов имеют длину 1, а ненулевой вектор запроса — длину 2. Нужно получать значения косинусного сходства. Что изменить?
06Faiss IndexFlatL2 вернул значения 4 и 9 для двух соседей. Чему равны сами евклидовы расстояния?
07Для одного запроса точный top-3 — A, B, C, приближённый — A, D, E. Набор векторов и метрика одинаковы, равных оценок нет. Каков recall@3 по определению курса?
08На 10 вопросах сравнили точный и приближённый top-3 при одинаковых условиях, без равных оценок. Всего совпали 24 из 30 соседей; в приближённой выдаче ответ найден для 6 вопросов. Каковы средний recall@3 курса и top-3 accuracy DPR?
09ANN полностью совпал с точным top-k. Найденные фрагменты переданы модели, но нужно проверить, обосновано ли число в её ответе. Какой шаг это проверяет?
10В учебном запуске SentenceTransformer сохраняет только первые 256 из 310 входных токенов; нужная оговорка начинается с 290-го токена. Вектор имеет 384 координаты. Поможет ли truncate_dim=192 передать модели эту оговорку?
11Команда переходит с модели A на B и сохранила исходные тексты. После пересборки поискового индекса в нём остались векторы модели A. Какой следующий шаг создаст данные для поиска с новой моделью?
12В миграции по руководству Qdrant у всех записей есть новые векторы модели B. Поиск выбирает их имя через using, но запросы ещё кодирует прежняя модель A. На одинаковых размеченных вопросах ответ находят реже. Какой шаг нужен до приёмки?
Проверяемая база

Источники курса

Полные сведения о первоисточниках приведены один раз для всего курса. Под тезисами — ссылки на соответствующие утверждения Архивариума.

  • Первичная публикация

    Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks

    ACL, EMNLP-IJCNLP 2019 · EMNLP-IJCNLP 2019, Anthology ID D19-1410, pp. 3982-3992

    Прочитаны аннотация и PDF §§1, 3, 4, 4.3. Используются фиксированное векторное представление после pooling и зависимость результата от задачи.

    Открыть первоисточник
  • Официальная документация

    Transformers 4.44.2: Tokenizer

    Hugging Face · Transformers v4.44.2; Tokenizer: __call__, convert_tokens_to_ids, BatchEncoding.

    Проверены целочисленные идентификаторы токенов, их связь со словарём и передача через input_ids на вход модели. Формат контейнера может быть списком, массивом или тензором.

    Открыть первоисточник
  • Официальная документация

    SentenceTransformer — Sentence Transformers documentation

    Sentence Transformers · Rolling API documentation, read 2026-10-25; package version not pinned

    Прочитаны описания max_seq_length, truncate_dim и prompts. Проверены разные предметы ограничений: входная последовательность и выходной вектор. Документация прочитана; локальный запуск модели не выполнялся.

    Открыть первоисточник
  • Официальная документация

    sentence-transformers/all-MiniLM-L6-v2 — model card

    Sentence Transformers · Rolling model card, read 2026-10-25; model commit not pinned

    Прочитаны описание модели, Usage (Sentence-Transformers) и Intended uses: 384 компонента вектора и обрезка входа длиннее 256 WordPiece-токенов по умолчанию. Число не приравнивается к словам; точный бюджет пользовательского текста и иные способы загрузки не проверены.

    Открыть первоисточник
  • Первичная публикация

    Dense Passage Retrieval for Open-Domain Question Answering

    ACL, EMNLP 2020 · EMNLP 2020, Anthology ID 2020.emnlp-main.550, pp. 6769–6781

    Разделы 2–3: отбор фрагментов и top-k retrieval accuracy. Знаменатель этой метрики — число проверенных вопросов.

    Открыть первоисточник
  • Официальная документация

    MetricType and distances

    facebookresearch/faiss Wiki · Faiss wiki, редакция страницы от 2024-12-03; прочитана 2026-10-14, версия библиотеки не заявляется.

    Прочитаны METRIC_L2, METRIC_INNER_PRODUCT и cosine similarity. Указана нормализация для описанного способа; не переносить на все библиотеки.

    Открыть первоисточник
  • Официальная документация

    Getting started

    facebookresearch/faiss Wiki · Faiss wiki, редакция страницы от 2020-06-28; прочитана 2026-10-14, версия библиотеки не заявляется.

    Прочитаны IndexFlatL2 и Searching: brute-force L2, поиск k соседей и сортировка по возрастанию расстояния в этом примере.

    Открыть первоисточник
  • Первичная публикация

    Efficient and robust approximate nearest neighbor search using Hierarchical Navigable Small World graphs

    arXiv · arXiv:1603.09320v4, revised 2018-08-14

    Прочитан PDF arXiv:1603.09320v4, разделы 3–4 и алгоритм 5. Используется схема поиска по уровням графа без универсальных параметров и обещаний производительности.

    Открыть первоисточник
  • Первичная публикация

    Enabling Large Language Models to Generate Text with Citations

    ACL, EMNLP 2023 · EMNLP 2023, Anthology ID 2023.emnlp-main.398, pp. 6465–6488

    Разделы 2, 3.3 и 4.2: ссылки на фрагменты, проверка их совместной поддержки утверждения и вариант VANILLA. Проверка ссылок не устанавливает независимую истинность источников.

    Открыть первоисточник
  • Первичная публикация

    Passage Re-ranking with BERT

    arXiv · arXiv:1901.04085v5, revised 2020-04-14

    Раздел 2 версии v5 перечитан в HTML 25.10.2026: каскад BM25 → BERT, совместный вход запроса и фрагмента, независимая оценка пар и ограничения 64/512 токенов. Числа относятся к этой реализации.

    Открыть первоисточник
  • Официальная документация

    Migrate to a New Embedding Model

    Qdrant · Rolling documentation read 2026-10-25; tutorial states Tested with Qdrant 1.19.0

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

    Открыть первоисточник
  • Официальная документация

    Vectors — Named Vectors

    Qdrant · Rolling documentation read 2026-10-25; Named Vectors and query examples

    Прочитаны Named Vectors и пример поиска с using: несколько векторов одной записи, раздельные конфигурации и выбор пространства. Изменение схемы существующей коллекции здесь не описывается.

    Открыть первоисточник
Подтвердите действие