Практикум по поиску для RAG
Эмбеддинги и векторный поиск: проверка выдачи
Разберите путь от текста до найденного фрагмента. Различайте обрезку входа и размерность эмбеддинга, проверьте совместимость моделей запроса и документов и сравните ANN с точным поиском. Затем решите, готова ли система к смене модели: отдельно оцените наличие новых векторов и поиск ответов на контрольные вопросы.
Что вы сможете сделать
- Различать входные токены и векторное представление текста.
- Проверять совместимость кодировщиков запроса и документов.
- Рассчитывать скалярное произведение, косинусное сходство и расстояние L2.
- Измерять совпадение ANN с точной выдачей отдельно от наличия ответа.
- Находить этап поиска или передачи контекста, который требует проверки.
- Диагностировать миграцию: проверить наличие новых векторов, совместимость моделей запроса и документов и качество на размеченных вопросах.
1. Отделите текст от его вектора
Модель получает текст через входные токены и строит его векторное представление. Для поиска по предложениям нужен вектор предложения; список токенов и набор отдельных векторов токенов — другие объекты.
В Transformers 4.44.2 input_ids — номера токенов в словаре на входе модели. В SBERT пулинг (pooling) преобразует выход BERT или RoBERTa в один вектор предложения фиксированного размера.
Проверить тезис: Текстовый эмбеддинг 01
В исследовании SBERT результат на ранее не виденной теме аргументов был ниже, чем при проверке на смешанных темах. Успех на одном наборе не заменяет оценку вашей задачи.
Проверить тезис: Текстовый эмбеддинг 04
В Sentence Transformers max_seq_length ограничивает входную последовательность и обрезает более длинный вход; truncate_dim сокращает число координат — чисел в выходном векторе. Это разные этапы: изменение выходной размерности само по себе не удлиняет вход.
Для all-MiniLM-L6-v2 карточка модели указывает плотный выходной вектор размерности 384 и усечение входа длиннее 256 WordPiece-токенов по умолчанию. 256 здесь — не число слов; проверяйте поведение именно используемого способа загрузки.
Проверить тезис: Текстовый эмбеддинг 07
2. Проверьте пару кодировщиков
Запрос и документы могут обрабатывать разные модели, предназначенные для совместного поиска. Равное число координат позволяет вычислить оценку, но не доказывает, что она отражает нужное сходство.
В DPR вопрос и фрагмент обрабатывают два независимых кодировщика, обученных для поиска по скалярному произведению их векторов.
Проверить тезис: Текстовый эмбеддинг 02
Одинаковая размерность не подтверждает ни совместимость кодировщиков, ни качество поиска на ваших документах.
Проверить тезис: Текстовый эмбеддинг 03
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 возвращает квадрат расстояния; само расстояние получают извлечением корня.
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. Отделите соседство от основания ответа
Нужно различать три результата: найден ли ближайший вектор, содержит ли его текст ответ на вопрос и подтверждает ли переданный модели контекст итоговое утверждение. Ошибка на одном этапе не устанавливает причину ошибок на остальных.
Точный векторный поиск находит соседей по выбранной метрике. В DPR top-k accuracy — доля вопросов, для которых в первых k фрагментах есть ответ; знаменатель — число вопросов.
Совпадение ANN с точным списком и доля вопросов с найденным ответом — разные показатели. Их нельзя заменять друг другом.
Проверить тезис: Приближённый поиск ближайших соседей 03
Даже полное совпадение соседей не проверяет поддержку итогового утверждения. Для этого читают указанные фрагменты и учитывают их совместное обоснование.
6. Сравните варианты без смешения причин
Чтобы сравнить два варианта поиска, сохраните набор вопросов и коллекцию документов. Меняйте один этап за раз: так проще связать изменение выдачи с причиной. Отдельно проверяйте передачу найденных фрагментов модели и её ответ.
Перед сравнением запишите модели, снимок коллекции, метрику, k и контрольные вопросы. Это условия учебной проверки, а не обязательная настройка каждой системы.
Проверить тезис: Текстовый эмбеддинг 03 · Векторный поиск 01
Для ANN посчитайте совпадение с точной выдачей. Для поиска ответа посчитайте долю вопросов, по которым найден хотя бы один фрагмент с ответом.
Проверить тезис: Приближённый поиск ближайших соседей 02 · RAG 05
Ранг фрагмента не доказывает поддержку ответа. Сопоставьте каждое существенное утверждение с текстом указанных источников.
Проверить тезис: RAG 07 · Повторная сортировка найденных фрагментов 01
7. Проверьте готовность к смене модели
Пересборка индекса по старым векторам не создаёт эмбеддинги новой модели. Перед переключением проверьте наличие новых векторов и качество поиска на размеченных вопросах. Модель запроса должна быть совместима с моделью, создавшей векторы документов.
В руководстве Qdrant по смене модели исходные тексты заново кодируют новой моделью. Построение индекса по прежним векторам не выполняет этот пересчёт: проверьте, какой моделью получены сохранённые векторы.
Проверить тезис: Векторный поиск 05
В Qdrant одна запись может хранить несколько именованных векторов. При поиске using выбирает векторы нужного имени. Проверьте, какой моделью они получены и совместима ли с ней модель запроса. Одинаковая размерность сама по себе этого не доказывает.
Проверить тезис: Векторный поиск 06 · Текстовый эмбеддинг 03
Наличие нового вектора у каждой нужной записи проверяет полноту пересчёта. Качество выдачи проверяют отдельно на размеченных вопросах. Доля вопросов с ответом в первых k фрагментах и совпадение ANN-соседей с точным списком — разные показатели.
Проверить тезис: Векторный поиск 07 · RAG 05 · Приближённый поиск ближайших соседей 03
Проверьте инженерное мышление
Вопросы проверяют не память на аббревиатуры, а умение не делать лишних выводов.
Источники курса
Полные сведения о первоисточниках приведены один раз для всего курса. Под тезисами — ссылки на соответствующие утверждения Архивариума.
- Первичная публикация
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: несколько векторов одной записи, раздельные конфигурации и выбор пространства. Изменение схемы существующей коллекции здесь не описывается.
Открыть первоисточник