tariel.ge › Полезное: бесплатные книги › ИИ изнутри: от нейрона до своей моделиБесплатно · автор Тариел Бежанидзе
← ИИ изнутри ЛИСТ 07Смысл в числахРЕВ. 1
Глава 07 · Смысл в числах

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

Соберём рабочий инструмент: поиск по смыслу в ваших собственных книгах. Всё локально, на вашем ноутбуке, и заодно станет понятно, как устроен RAG изнутри.

Что построим

У вас полтора десятка книг в HTML. Задача: спросить «почему лампа мигает после включения» и получить нужные куски текста — даже если слова «мигает» там нет, а есть «пульсации выпрямленного напряжения».

схема
ваши книги → нарезка на куски → эмбеддинг каждого куска → база векторов
                                                                 ↓
              ваш вопрос → эмбеддинг вопроса → поиск ближайших ──┘
                                                                 ↓
                                                        куски текста
                                                                 ↓
                                            (необязательно) языковая модель
                                                                 ↓
                                                             ответ
Важная мысль

Последние два шага необязательны. Часто достаточно самого поиска: вы получаете три нужных абзаца и читаете сами. Это быстрее, точнее и не содержит риска выдумывания. Языковую модель добавляют, когда нужен связный ответ, а не ссылки.

Шаг 1. Нарезка — от неё зависит всё

Самый недооценённый шаг. Слишком крупные куски — в ответ попадает много лишнего и смысл размывается. Слишком мелкие — теряется контекст, и кусок становится непонятен сам по себе.

Размер кускаЧто получается
ПредложениеСлишком узко: «Его надо заменить» — а что «его»?
Абзац (200–400 слов)Обычно оптимально
Раздел под заголовкомХорошо для структурированных книг вроде ваших
Глава целикомСлишком широко: вектор усредняет всё и ни на что не похож
Два приёма, сильно улучшающие результат

Шаг 2. Модель эмбеддингов

Это отдельная модель, не та, что генерирует текст. Её единственная работа — превращать текст в вектор.

скачать модель эмбеддингов
ollama pull nomic-embed-text
На что смотреть при выбореПочему
Поддержка русскогоМногие модели заметно слабее вне английского. Проверяйте на своих текстах
Размер вектораБольше — точнее и тяжелее. Типично 384–1024
Максимальная длина входаКусок не должен её превышать, иначе хвост обрежется молча
СкоростьВам предстоит прогнать тысячи кусков
Правило, которое легко нарушить

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

Шаг 3. Где хранить

ВариантКогда подходит
Просто список в памятиДо нескольких тысяч кусков. Для ваших книг — достаточно
Файл на дискеЧтобы не пересчитывать при каждом запуске
Векторная базаДесятки тысяч кусков и больше, нужны фильтры и обновления

Не начинайте с базы данных. Пятнадцать книг — это тысячи кусков, и перебор всех векторов занимает доли секунды. База нужна, когда кусков сотни тысяч.

Шаг 4. Поиск

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

ПриёмЧто даёт
Брать 5–10 кусков, а не 1Нужное часто не на первом месте
Отсекать по порогу близостиЕсли всё ниже 0,3 — ответа в базе просто нет, и лучше это сказать
Гибридный поискСовместить поиск по смыслу с обычным поиском по словам. Ловит точные термины и номера деталей
ПереранжированиеВзять 20 кандидатов и отсортировать более тяжёлой моделью. Заметно точнее, но медленнее
Гибридный поиск — почти обязателен

Поиск по смыслу плох там, где нужна буквальная точность: артикул «BUZ11», обозначение «C12», редкое слово. Обычный текстовый поиск это ловит, а смысловой — размывает. Их сумма работает заметно лучше каждого по отдельности, и это самое дешёвое улучшение качества.

Шаг 5. Ответ языковой модели

Если нужен связный ответ, а не список абзацев, найденные куски подаются модели вместе с вопросом. Формулировка запроса здесь решает многое.

рабочая формулировка
Ответь на вопрос, используя ТОЛЬКО приведённые ниже фрагменты.
Если в них нет ответа — так и скажи, не придумывай.
После каждого утверждения укажи, из какого фрагмента оно взято.

ФРАГМЕНТЫ:
[1] (Учебник по электрике, гл. 9) ...
[2] (LED, гл. 10) ...

ВОПРОС: почему лампа мигает после включения?
Это уменьшает выдумывание, но не отменяет его

Модель всё равно может сказать то, чего в фрагментах нет, — механизм в главе 11. Указание источника для каждого утверждения помогает: вы можете проверить за десять секунд. Считайте такой ответ черновиком со ссылками, а не истиной.

Что пойдёт не так и почему

СимптомПричинаЧто делать
Находит не тоКуски слишком большиеРезать мельче, добавить перекрытие
Находит обрывки без смыслаКуски слишком мелкиеРезать крупнее, дописывать заголовок
Полный мусор в выдачеРазные модели для вопроса и базыПересчитать базу одной моделью
Не находит точные терминыСмысловой поиск их размываетДобавить обычный текстовый поиск
Плохо с русскимМодель эмбеддингов слабая вне английскогоПопробовать другую, сравнить на своих текстах
Модель отвечает мимо фрагментовСлабая модель или размытая инструкцияЖёстче формулировка, модель крупнее

Как проверить, что получилось хорошо

Заведите два десятка вопросов, на которые вы знаете правильный ответ и знаете, в какой главе он лежит. Прогоняйте их после каждого изменения настроек.

Последний пункт — самый важный

Система, которая на любой вопрос что-то уверенно выдаёт, бесполезна. Проверяйте её на вопросах, ответа на которые заведомо нет: правильное поведение — сказать «не нашёл». Именно этот тест чаще всего пропускают, а он ловит самые дорогие ошибки.

Что дальше

Вернёмся к устройству. Механизм, который позволил всему этому взлететь, и главное изобретение последних лет.

Глава07 — Эмбеддинги на практике: поиск по своим книгам
БлокСмысл в числах
Далее08 — Внимание: как сеть решает, на что смотреть
Ревизия1
↑ Оглавление Предыдущая глава← 06 · Вектор как смысл: почему близкое оказывается рядом Следующая глава08 · Внимание: как сеть решает, на что смотреть →

Бесплатная книга · tariel.ge · версии инструментов и команды проверяйте в документации проектов

Книга бесплатна для чтения. Автор — Тариел Бежанидзе, компьютерный мастер в Батуми · tariel.ge · все бесплатные книги. Копировать текст целиком на другие сайты — только со ссылкой на источник.