После разбиения документов в коллекцию блоков следующим шагом является обогащение каждого блока путем очистки и расширения блоков метаданными. Очистка блоков позволяет добиться лучших совпадений для семантических запросов в векторном поиске. Добавление сведений позволяет поддерживать поиск за пределами семантического поиска блоков. Очистка и расширение включают расширение схемы для блока.
В этой статье рассматриваются различные способы расширения блоков, включая некоторые распространенные операции очистки, которые можно выполнять на блоках, чтобы улучшить сравнение векторов, и описывает некоторые общие поля метаданных, которые можно добавить в блоки для расширения индекса поиска.
Этот материал входит в цикл статей. Ознакомьтесь с введением.
Рисунок 1. Обогащение блоков с помощью метаданных
Уборка
Фрагментирование данных поддерживает рабочую нагрузку в своих усилиях по поиску наиболее релевантных блоков, как правило, путем векторизации этих блоков и их хранения в векторной базе данных. Оптимизированный векторный поиск возвращает только те строки в этой базе данных, которые имеют ближайшие семантические совпадения с запросом. Цель очистки данных для поддержки совпадений закрытия путем устранения потенциальных различий, которые не являются материалом для семантики текста. Ниже приведены некоторые распространенные процедуры очистки.
Примечание.
Вы хотите вернуть исходный нечищенный фрагмент в качестве результата запроса, поэтому вы добавите дополнительное поле для хранения чистых и векторизованных данных.
- Нижнее значение — нижнее значение позволяет словам, которые прописываются в начале предложения, чтобы соответствовать тем же словам в предложении. Внедрение обычно учитывает регистр, то есть "Cheetah" и "cheetah" приведет к другому вектору для одного логического слова. Например, для внедренного запроса: "что быстрее, геета или puma?" Следующее внедрение: "гееты быстрее, чем pumas" является более близким совпадением, чем внедрение "Cheetahs быстрее, чем pumas". Некоторые стратегии нижнего регистра строчные буквы всех слов, включая правильные существительные, в то время как другие стратегии включают только нижнее число первых слов в предложении.
- Удалить слова стоп- Стоп-слова являются такими словами, как "a", "an" и "the", которые обычно происходят в предложениях. Вы можете удалить стоп-слова, чтобы уменьшить размерность результирующего вектора. Удаление слов остановки позволит как "геета быстрее, чем puma", так и "геета быстрее, чем puma", чтобы оба были векторно равны "геете быстрее пумы". Однако важно понимать, что некоторые стоп-слова содержат семантический смысл. Например, "не" может рассматриваться как стоп-слово, но будет содержать значительное семантические значения. Важно проверить влияние удаления стоп-слов.
- Исправление ошибок орфографии . Неправильное слово не соответствует правильному написанию слова в модели внедрения. Например, "обман" (sic) не совпадает с "геетой" в внедрении. Чтобы устранить эту проблему, необходимо исправить ошибки орфографии.
- Удаление символов юникода. Удаление символов Юникода может снизить шум в блоках и уменьшить размерность. Как и стоп-слова, некоторые символы Юникода могут содержать соответствующие сведения. Важно проверить влияние удаления символов Юникода.
- Нормализация — нормализация текста в таких стандартах, как расширение аббревиаций, преобразование чисел в слова и расширение сокращений, таких как "Я" в "Я" может помочь повысить производительность векторных поисков.
Расширение блоков
Семантические поиски по векторным блокам хорошо работают для некоторых типов запросов, но не для других. В зависимости от типов запросов, необходимых для поддержки, может потребоваться расширить блоки с дополнительными сведениями. Дополнительные поля метаданных хранятся в той же строке, что и внедрение, и их можно использовать в решении поиска как фильтры или как часть поиска.
Рисунок 2. Использование дополненных метаданных в решении поиска
Столбцы метаданных, которые необходимо добавить, зависят от решений, относящихся к вашему домену проблемы. Это включает в себя тип данных, которые у вас есть, и типы запросов, которые требуется поддерживать. Необходимо проанализировать взаимодействие с пользователем, доступные данные и качество результатов, которые вы пытаетесь достичь. Оттуда можно определить, какие метаданные помогут вам решить требования рабочей нагрузки.
Ниже приведены некоторые распространенные поля метаданных, а также исходный фрагмент текста, некоторые рекомендации по их потенциальному использованию и средствам или методам, которые обычно используются для создания содержимого метаданных.
- Идентификатор — это поле метаданных ключа, которое используется для уникальной идентификации блока. Уникальный идентификатор полезен при обработке, чтобы определить, существует ли блок в хранилище или нет. Идентификатор может быть хэшом определенного ключевого поля. Средства: хэширование библиотеки
- Заголовок — это полезное возвращаемое значение для блока. Он содержит краткую сводку содержимого в блоке. Сводка также может быть полезна для запроса с индексированного поиска, так как он может содержать ключевые слова для сопоставления. Инструменты: большая языковая модель
- Сводка . Сводка похожа на заголовок, что это общее возвращаемое значение и может использоваться в индексированных поисках. Сводки обычно длиннее заголовка. Инструменты: большая языковая модель
- Рефрессирование фрагмента — рефрессирование блока может быть полезным в качестве поля векторного поиска, так как рефрессирование фиксирует вариации на языке, например синонимы и парафразирование. Инструменты: большая языковая модель
- Ключевые слова — поиск по ключевым словам хорошо подходит для данных, которые являются неконтекстальными, для поиска точного совпадения, а также когда определенный термин или значение имеет важное значение. Например, у автоматического производителя могут быть проверки или данные о производительности для каждой модели в течение нескольких лет. Обзор продукта X за год 2009 года семантически похож на "Обзор продукта X для 2010" и "Обзор продукта Y за 2009 год". В этом случае вы будете лучше соответствовать ключевым словам для продукта и года. Средства: большая языковая модель, RAKE, KeyBERT, MultiRake
- Сущности — это определенные элементы информации, такие как люди, организации и расположения. Как и ключевые слова, сущности хорошо подходит для точного поиска соответствия или когда конкретные сущности важны. Инструменты: SpaCy, Стэнфорд именованный распознаватель сущностей (SNER, scikit-learn, набор средств естественного языка (NLTK).
- Чистый фрагмент текста — чистый фрагмент текста. Инструменты: большая языковая модель
- Вопросы, на которые может ответить блок. Иногда запрос, внедренный и внедренный блок не является отличным совпадением. Например, запрос может быть небольшим относительно размера блока. Возможно, лучше сформулировать запросы, которые блок может ответить, и выполнить векторный поиск между фактическим запросом пользователя и предварительно сформированными запросами. Инструменты: большая языковая модель
- Источник — источник блока может быть ценным в качестве возвращаемого значения для запросов. Он позволяет запросу ссылаться на исходный источник.
- Язык — язык блока может быть хорошим в качестве фильтра в запросах.
Расширение экономики
Использование больших языковых моделей для расширения блоков может быть дорогостоящим. Необходимо вычислить стоимость каждого обогащения, которую вы рассматриваете, и умножить его на предполагаемое количество блоков с течением времени. Эти сведения следует использовать вместе с тестированием этих обогащенных полей в рамках поиска, чтобы принять хорошее бизнес-решение.