Прибыль:
- Поймите, что встраивание превращает текст в вектор в семантическом пространстве и схожие значения являются близкими векторами.
- Объяснение того, как поиск ИНС работает с метриками сходства косинусов и точек.
- Выбор общих векторных баз данных с учетом стоимости, масштаба и необходимости фильтрации метаданных.
В основе RAG лежит единственный вопрос: «Какой фрагмент текста больше всего похож на вопрос пользователя?» Компьютер обрабатывает текст цифрами, а не буквально. Вот почему нам нужно сначала преобразовать текст в числа, несущие его смысл. Вот что такое встраивание: процесс преобразования текста в последовательность чисел (вектор), которая представляет значение этого текста. Закончив этот модуль, вы узнаете, как работает встраивание, как измеряется сходство и как выбрать правильную базу данных векторов.
Встраивание: перевод значения в координаты
Модель внедрения (специально обученный искусственный интеллект) преобразует предоставленный вами текст в вектор, например, из 1024 чисел. Думайте об этом векторе как о координате в многомерном пространстве. Магия вот в чем: близкие по смыслу тексты попадают в этом пространстве в близкие координаты.
Простой пример: «ежегодный отпуск», «право на отпуск» и «ежегодный оплачиваемый отпуск» используют разные слова, но означают одно и то же — их векторы близки друг к другу. «Зарплатный счет» — другое дело — его вектор далекий. Итак, пользователь спрашивает: «Сколько у меня дней отпуска?» По вашему запросу мы даже можем найти документ, в котором нет слова «отпуск», но написано «ежегодный отпуск составляет 14 дней». Это то, чего не может сделать классический поиск по ключевым словам (поиск, который точно соответствует слову).
Совет: воспринимайте встраивание как «отпечаток значения». Отпечатки двух предложений с одинаковым значением кажутся похожими; Даже если слова разные.
Важное правило: модель, которую вы используете при встраивании вопроса, должна быть той же моделью, которую вы используете при встраивании документов. Разные модели создают разные пространства; координаты становятся несравнимыми.
Как измерить сходство?
Существует несколько методов измерения степени сходства двух векторов. Наиболее распространенным является косинусное подобие: оно измеряет угол между двумя векторами. Если угол мал (векторы направлены в одну сторону), сходство высокое. Значение находится между −1 и 1; Близко к 1 = очень похоже.
критерий
Что он измеряет?
Когда это предпочтительнее?
косинус
Угол (направление) между векторами
Самый распространенный; по умолчанию в тексте семантическое сходство
Скалярное произведение
Направление + величина вместе
Если векторы нормализованы, это дает тот же результат, что и косинус; быстро
Евклидово (евклидово расстояние)
Расстояние по прямой между координатами
В некоторых сценариях кластеризации; меньше используется в тексте
На практике большинство моделей внедрения создают нормализованные векторы (размер установлен на 1); В этом случае косинус и скалярное произведение дают один и тот же порядок. Не парализуйте принятие решений: начните с косинуса.
Среди миллионов векторов сравнение их по одному происходит медленно. Вот почему векторные базы данных используют алгоритмы ANN (приблизительный ближайший сосед). ANN очень быстро находит «почти самое близкое», а не «точное самое близкое». Например, метод HNSW может возвращать результаты за несколько миллисекунд даже для 10 миллионов векторов. Вы получаете большую скорость за небольшую жертву в точности.
Что делает база данных векторов?
База данных векторов делает три вещи одновременно: (1) хранит векторы, (2) быстро находит векторы, наиболее похожие на вектор запроса, (3) фильтрует метаданные рядом с каждым вектором. Метаданные — это теги, которые вы прикрепляете к этой части: исходный файл, дата, отдел, уровень конфиденциальности и т. д. Фильтрация метаданных имеет решающее значение в корпоративной RAG; потому что вам нужно иметь возможность устанавливать ограничения, такие как «поиск только в документах финансового отдела 2025 года».
# Зарегистрируйтесь в векторной базе данных (conceptual)vektor_db.add( id="izin-politikasi-parca-3", vektor=embed("Ежегодный оплачиваемый отпуск - 14 дней..."), text="Ежегодный оплачиваемый отпуск - 14 дней...", Metadata={"source": "ik_el_kitabi.pdf", "department": "IK", "date": "2025-06", "privacy": "ик"})
# Поиск с фильтрацией метаданных (концептуальный)result = vektor_db.search( vektor=embed("сколько дней отпуска у меня есть?"), top_k=4, filter={"department": "HR", "privacy": ["internal", "on"]})
Выбор правильной базы данных
транспортное средство
Рекомендуемый аспект
Подходящая ситуация
Встроенный/файловый (встроенная библиотека)
Без установки, одна машина
Прототип, небольшой комплект (<несколько сотен тысяч деталей)
Управляемый облачный сервис
Масштабирование и обслуживание не являются вашей ответственностью.
Производство, быстрорастущие данные, небольшая команда
Открытый исходный код на вашем собственном сервере
Полный контроль, ваши данные остаются вашими
Обязательство конфиденциальности, существующая инфраструктура
Дополнение к существующей базе данных
Вы не управляете отдельными системами
Добавление векторной поддержки в уже используемую вами БД
Спросите при выборе: Сколько будет штук? Насколько важна фильтрация метаданных? Могут ли данные выходить за пределы компании (конфиденциальность)? Может ли команда управлять инфраструктурой? Часто разумно начинать с малого и расширять по мере необходимости.
Слабый подход/Сильный подход
Слабое (хранение простого встраивания, без метаданных):
Просто сохраните текст и вектор. Поиск: возвращает 4 наиболее похожих вектора.# Проблема: нельзя фильтровать по типу «только текущие HR-документы»;# в ответ также могут быть включены старые/несанкционированные части.
Мощный (богатые метаданные + фильтрованный поиск):
Добавьте источник, дату, отдел и тег конфиденциальности к каждому фрагменту. Фильтрация по авторитету и актуальности пользователя во время поиска: filter = {"privacy": user_authority, "date_date": "2024-01"}# Таким образом, результат будет безопасным и актуальным.
Три мини-кейса
Случай 1 — Неправильное сочетание моделей. Команда внедрила документы по модели А, а вопросы по модели Б. Поиск дал бессмысленные результаты, а доля правильных ответов осталась на уровне 31%. Когда я переключился на одну модель (обе одной и той же модели встраивания), этот показатель подскочил до 88%. Урок: вопрос и документ должны находиться в одном месте.
Случай 2. Риск конфиденциальности без метаданных. В медицинской компании все документы отдела были сброшены в единый пул без метаданных. Когда продавец задавал вопрос, система контекстуализировала часть данных пациента. При добавлении метаданных + фильтра (по уровню авторизации) этот риск был устранен; В поиске 12 несанкционированных штук вообще не приносятся.
Случай 3 — Узкое место масштаба. Компания электронной коммерции провела поиск по 8 миллионам описаний продуктов с помощью простого метода «сканировать все»; Каждый запрос занимал 6 секунд. Когда мы перешли на ИНС на базе HNSW, время сократилось до 45 миллисекунд с потерей точности всего 1%. Урок: ИНС обязательна в большом наборе.
Распространенные ошибки
- Встраивание вопроса и документа в разные модели: результаты бессмысленны; всегда одна модель.
- Пропуск метаданных: фильтровать нельзя; Вы теряете контроль над конфиденциальностью и актуальностью.
- Принятие встраивания за шифрование: встраивание несет обратимую информацию; Ошибочно предполагать, что конфиденциальные данные «скрыты».
- Создание неоправданно большой инфраструктуры на небольшом наборе: гигантский кластер, управляемый из 5000 частей, — это ненужная сложность.
- Не беспокойтесь слишком сильно о критерии подобия: начните с косинуса в тексте; Точная настройка будет позже.
Внимание: встраивание встраивает значение текста в числа, но не «уничтожает» содержимое. В случае утечки векторной базы данных исходные сохраненные тексты (в большинстве установок текст также сохраняется) также будут скомпрометированы. Храните векторный репозиторий в такой же конфиденциальности, как и хранящиеся в нем документы.
В заключение
- Встраивание превращает текст в вектор чисел, несущий его значение; Подобные значения являются близкими векторами.
- Сходство часто измеряется косинусом; Для нормализованных векторов скалярное произведение дает тот же результат.
- В больших данных ИНС (например, HNSW) заменяет точный поиск: высокая скорость с небольшой жертвой точностью.
- База данных векторов осуществляет хранение векторов + поиск по сходству + фильтрацию метаданных; метаданные необходимы для корпоративной RAG.
- Вопрос и документ должны быть переведены с использованием одной и той же модели внедрения; в противном случае координаты нельзя будет сравнить.
Задача приложения
Извлеките 10 коротких отрывков (по 3–6 предложений каждый) из документа, выбранного вами в предыдущем разделе. (1) Создайте как минимум три тега метаданных для каждой части (источник, дата и третий, соответствующий контексту вашего бизнеса: отдел, продукт, конфиденциальность и т. д.). (2) Напишите, какой фильтр метаданных следует применить к 3 различным вопросам пользователя. (3) Найдите три пары вопросов и частей, которые выражают одно и то же значение разными словами (например, «право на отпуск» ↔ «ежегодный отпуск») и объясните в одном предложении, почему они не будут соответствовать поиску по ключевым словам, но будут соответствовать встраиванию.
контрольный список
- [ ] Могу сказать, что встраивание превращает текст в вектор в семантическом пространстве и подобные значения близки.
- Я знаю, что [] Косинусное сходство измеряет угол и является предпочтением по умолчанию в тексте.
- [ ] Я могу объяснить, почему ИНС необходима в больших данных.
- [ ] Я знаю, почему метаданные имеют решающее значение для обеспечения конфиденциальности и контроля актуальности.
- [ ] Я следую правилу перевода вопроса и документа с одной и той же моделью встраивания.