В AWS re:Invent В 2023 году мы объявили об общедоступности баз знаний для Amazon Bedrock. С помощью баз знаний для Amazon Bedrock вы можете безопасно подключать базовые модели (FM) в Amazon Bedrock к данным вашей компании, используя полностью управляемую модель извлечения дополненной генерации (RAG).
Для приложений на основе RAG точность сгенерированных ответов FM зависит от контекста, предоставленного модели. Контексты извлекаются из векторных хранилищ на основе запросов пользователей. В недавно выпущенной функции гибридного поиска баз знаний для Amazon Bedrock можно комбинировать семантический поиск с поиском по ключевым словам. Однако во многих ситуациях вам может потребоваться получить документы, созданные в определенный период или помеченные определенными категориями. Чтобы уточнить результаты поиска, вы можете фильтровать их на основе метаданных документа, чтобы повысить точность поиска, что, в свою очередь, приводит к созданию более релевантных форм FM, соответствующих вашим интересам.
В этом посте мы обсуждаем новую функцию пользовательской фильтрации метаданных в базах знаний для Amazon Bedrock, которую вы можете использовать для улучшения результатов поиска путем предварительной фильтрации результатов поиска из векторных хранилищ.
Обзор фильтрации метаданных
До выпуска фильтрации метаданных все семантически релевантные фрагменты до заранее установленного максимума будут возвращаться в качестве контекста, который FM будет использовать для генерации ответа. Теперь с помощью фильтров метаданных вы можете извлекать не только семантически релевантные фрагменты, но и четко определенное подмножество этих релевантных фрагментов на основе примененных фильтров метаданных и связанных значений.
Благодаря этой функции теперь вы можете предоставить собственный файл метаданных (каждый размером до 10 КБ) для каждого документа в базе знаний. Вы можете применять фильтры к полученным данным, предписывая векторному хранилищу выполнить предварительную фильтрацию на основе метаданных документа, а затем выполнить поиск соответствующих документов. Таким образом, вы получаете контроль над полученными документами, особенно если ваши запросы неоднозначны. Например, вы можете использовать юридические документы со схожими терминами для разных контекстов или фильмы со схожим сюжетом, выпущенные в разные годы. Кроме того, уменьшая количество фрагментов, по которым выполняется поиск, вы получаете преимущества в производительности, такие как сокращение циклов ЦП и стоимости запроса к векторному хранилищу, а также повышение точности.
Чтобы использовать функцию фильтрации метаданных, вам необходимо предоставить файлы метаданных вместе с файлами исходных данных с тем же именем, что и файл исходных данных, и .metadata.json
суффикс. Метаданные могут быть строковыми, числовыми или логическими. Ниже приведен пример содержимого файла метаданных:
Функция фильтрации метаданных баз знаний для Amazon Bedrock доступна в регионах AWS Восток США (Сев. Вирджиния) и Запад США (Орегон).
Ниже приведены распространенные случаи использования фильтрации метаданных:
- Документальный чат-бот для компании-разработчика программного обеспечения – Это позволяет пользователям находить информацию о продукте и руководства по устранению неполадок. Например, фильтры по версии операционной системы или приложения могут помочь избежать получения устаревших или нерелевантных документов.
- Диалоговый поиск заявки организации – Это позволяет пользователям осуществлять поиск по документам, канбанам, расшифровкам записей собраний и другим ресурсам. Используя фильтры метаданных по рабочим группам, бизнес-подразделениям или идентификаторам проектов, вы можете персонализировать чат и улучшить совместную работу. Примером может быть «Каков статус проекта Sphinx и возникающие риски», где пользователи могут фильтровать документы по конкретному проекту или типу источника (например, электронная почта или документы совещаний).
- Интеллектуальный поиск разработчиков ПО – Это позволяет разработчикам искать информацию о конкретном выпуске. Фильтры по версии выпуска и типу документа (например, код, ссылка на API или проблема) могут помочь определить нужные документы.
Обзор решения
В следующих разделах мы покажем, как подготовить набор данных для использования в качестве базы знаний, а затем выполнить запрос с фильтрацией метаданных. Вы можете выполнить запрос с помощью консоли управления AWS или SDK.
Подготовьте набор данных для баз знаний для Amazon Bedrock.
Для этого поста мы используем образец набора данных о вымышленных видеоиграх, чтобы проиллюстрировать, как принимать и извлекать метаданные с помощью баз знаний для Amazon Bedrock. Если вы хотите следовать инструкциям в своей учетной записи AWS, загрузите файл.
Если вы хотите добавить метаданные в документы в существующей базе знаний, создайте файлы метаданных с ожидаемым именем файла и схемой, а затем перейдите к шагу синхронизации данных с базой знаний, чтобы начать добавочную загрузку.
В нашем примере набора данных документ каждой игры представляет собой отдельный файл CSV (например, s3://$bucket_name/video_game/$game_id.csv
) со следующими столбцами:
title
, description
, genres
, year
, publisher
, score
Метаданные каждой игры имеют суффикс .metadata.json
(например, s3://$bucket_name/video_game/$game_id.csv.metadata.json
) по следующей схеме:
Создайте базу знаний для Amazon Bedrock.
Инструкции по созданию новой базы знаний см. в разделе Создание базы знаний. В этом примере мы используем следующие настройки:
- На Настроить источник данных страница, под Стратегия дроблениявыбирать Нет фрагментациипоскольку вы уже выполнили предварительную обработку документов на предыдущем шаге.
- в Модель вложений раздел, выберите Вложения Titan G1 — текст.
- в База данных векторов раздел, выберите Быстрое создание нового векторного хранилища. Функция фильтрации метаданных доступна для всех поддерживаемых векторных хранилищ.
Синхронизировать набор данных с базой знаний
После того как вы создадите базу знаний и ваши файлы данных и файлы метаданных будут помещены в корзину Amazon Simple Storage Service (Amazon S3), вы можете начать инкрементный прием. Инструкции см. в разделе Синхронизация для добавления источников данных в базу знаний.
Запрос с фильтрацией метаданных на консоли Amazon Bedrock
Чтобы использовать параметры фильтрации метаданных в консоли Amazon Bedrock, выполните следующие действия:
- На консоли Amazon Bedrock выберите Базы знаний в панели навигации.
- Выберите базу знаний, которую вы создали.
- Выбирать Тестовая база знаний.
- Выбрать Конфигурации значок, затем разверните Фильтры.
- Введите условие в формате: ключ = значение (например, жанры = Стратегия) и нажмите Входить.
- Чтобы изменить ключ, значение или оператор, выберите условие.
- Продолжайте с оставшимися условиями (например, (жанры = Стратегия И год >= 2023) ИЛИ (рейтинг >= 9))
- По завершении введите запрос в поле сообщения, затем выберите Бегать.
Для этого поста вводим запрос «Стратегическая игра с крутой графикой, выпущенная после 2023 года».
Запрос с фильтрацией метаданных с помощью SDK
Чтобы использовать SDK, сначала создайте клиент для среды выполнения Agents for Amazon Bedrock:
Затем создайте фильтр (ниже приведены примеры):
Передайте фильтр retrievalConfiguration
API поиска или API RetvieveAndGenerate:
В следующей таблице перечислены несколько ответов с различными условиями фильтрации метаданных.
Запрос | Фильтрация метаданных | Полученные документы | Наблюдения |
«Стратегическая игра с крутой графикой, выпущенная после 2023 года» | Выключенный |
* Viking Saga: The Sea Raider, год: 2023, жанры: Стратегия * Средневековый замок: Осада и завоевание, год:2022 годжанры: Стратегии * Кибернетическая революция: Восстание машин, год:2022 годжанры: Стратегии |
2/5 игр соответствуют условию (жанры = Стратегия и год >= 2023) |
На | * Viking Saga: The Sea Raider, год: 2023, жанры: Стратегия * Fantasy Kingdoms: Chronicles of Eldoria, год:2023, жанры: Стратегии |
2/2 игр соответствуют условию (жанры = Стратегия и год >= 2023) |
Помимо пользовательских метаданных, вы также можете фильтровать с помощью префиксов S3 (это встроенные метаданные, поэтому вам не нужно предоставлять какие-либо файлы метаданных). Например, если вы организуете игровые документы по префиксам по издателю (например, s3://$bucket_name/video_game/$publisher/$game_id.csv
), вы можете фильтровать по конкретному издателю (например, neo_tokyo_games
), используя следующий синтаксис:
Очистить
Чтобы очистить ресурсы, выполните следующие действия:
- Удалить базу знаний:
- На консоли Amazon Bedrock выберите Базы знаний под оркестровка в панели навигации.
- Выберите базу знаний, которую вы создали.
- Обратите внимание на имя роли сервиса AWS Identity and Access Management (IAM) в Обзор базы знаний раздел.
- в База данных векторов раздел обратите внимание на сборник ARN.
- Выбирать Удалитьзатем введите «Удалить» для подтверждения.
- Удалить базу данных векторов:
- В консоли Amazon OpenSearch Service выберите Коллекции под Бессерверный в панели навигации.
- Введите коллекцию ARN, которую вы сохранили, в строку поиска.
- Выберите коллекцию и выберите Удалить.
- Введите подтверждение в запросе подтверждения, затем выберите Удалить.
- Удалите роль службы IAM:
- На консоли IAM выберите Роли в панели навигации.
- Найдите имя роли, которое вы указали ранее.
- Выберите роль и выберите Удалить.
- Введите имя роли в запросе подтверждения и удалите роль.
- Удалите образец набора данных:
- На консоли Amazon S3 перейдите к корзине S3, которую вы использовали.
- Выберите префикс и файлы, затем выберите Удалить.
- Введите «удалить навсегда» в запросе подтверждения удаления.
Заключение
В этом посте мы рассмотрели функцию фильтрации метаданных в базах знаний для Amazon Bedrock. Вы узнали, как добавлять в документы собственные метаданные и использовать их в качестве фильтров при получении и запросе документов с помощью консоли Amazon Bedrock и SDK. Это помогает повысить точность контекста, делая ответы на запросы еще более актуальными и одновременно снижая затраты на запросы к базе данных векторов.
Дополнительные ресурсы см. в следующих разделах:
Об авторах
Корвус Ли — старший архитектор решений GenAI Labs в Лондоне. Он увлечен проектированием и разработкой прототипов, которые используют генеративный искусственный интеллект для решения проблем клиентов. Он также следит за последними разработками в области генеративного искусственного интеллекта и методов поиска, применяя их к реальным сценариям.
Ахмед Эвис — старший архитектор решений в AWS GenAI Labs, помогающий клиентам создавать прототипы генеративного ИИ для решения бизнес-задач. Когда он не сотрудничает с клиентами, ему нравится играть со своими детьми и готовить.
Крис Пекора — специалист по генеративному искусственному интеллекту в Amazon Web Services. Он увлечен созданием инновационных продуктов и решений, уделяя при этом внимание науке, ориентированной на потребности клиентов. Когда он не проводит эксперименты и не следит за последними разработками в области GenAI, он любит проводить время со своими детьми.