Генеративный анализ данных

Базы знаний для Amazon Bedrock теперь поддерживают фильтрацию метаданных для повышения точности поиска | Веб-сервисы Amazon

Дата:

At AWS Re: Invent 2023 года мы объявили о широкой доступности Базы знаний для Amazon Bedrock. С помощью баз знаний для Amazon Bedrock вы можете безопасно соединять модели фундамента (FM) в Коренная порода Амазонки в данные вашей компании с помощью полностью управляемой модели извлечения дополненной генерации (RAG).

Для приложений на основе RAG точность сгенерированных ответов FM зависит от контекста, предоставленного модели. Контексты извлекаются из векторных хранилищ на основе запросов пользователей. В недавно выпущенной функции «Базы знаний для Amazon Bedrock» гибридный поиск, вы можете комбинировать семантический поиск с поиском по ключевым словам. Однако во многих ситуациях вам может потребоваться получить документы, созданные в определенный период или помеченные определенными категориями. Чтобы уточнить результаты поиска, вы можете фильтровать их на основе метаданных документа, чтобы повысить точность поиска, что, в свою очередь, приводит к созданию более релевантных форм FM, соответствующих вашим интересам.

В этом посте мы обсуждаем новую функцию пользовательской фильтрации метаданных в базах знаний для Amazon Bedrock, которую вы можете использовать для улучшения результатов поиска путем предварительной фильтрации результатов поиска из векторных хранилищ.

Обзор фильтрации метаданных

До выпуска фильтрации метаданных все семантически релевантные фрагменты до заранее установленного максимума будут возвращаться в качестве контекста, который FM будет использовать для генерации ответа. Теперь с помощью фильтров метаданных вы можете извлекать не только семантически релевантные фрагменты, но и четко определенное подмножество этих релевантных фрагментов на основе примененных фильтров метаданных и связанных значений.

Благодаря этой функции теперь вы можете предоставить собственный файл метаданных (каждый размером до 10 КБ) для каждого документа в базе знаний. Вы можете применять фильтры к полученным данным, предписывая векторному хранилищу выполнить предварительную фильтрацию на основе метаданных документа, а затем выполнить поиск соответствующих документов. Таким образом, вы получаете контроль над полученными документами, особенно если ваши запросы неоднозначны. Например, вы можете использовать юридические документы со схожими терминами для разных контекстов или фильмы со схожим сюжетом, выпущенные в разные годы. Кроме того, уменьшая количество фрагментов, по которым выполняется поиск, вы получаете преимущества в производительности, такие как сокращение циклов ЦП и стоимости запроса к векторному хранилищу, а также повышение точности.

Чтобы использовать функцию фильтрации метаданных, вам необходимо предоставить файлы метаданных вместе с файлами исходных данных с тем же именем, что и файл исходных данных, и .metadata.json суффикс. Метаданные могут быть строковыми, числовыми или логическими. Ниже приведен пример содержимого файла метаданных:

{
    "metadataAttributes" : { 
        "tag" : "project EVE",
        "year" :  2016,
        "team": "ninjas"
    }
}

Функция фильтрации метаданных баз знаний для 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) по следующей схеме:

{
  "metadataAttributes": {
    "id": number, 
    "genres": string,
    "year": number,
    "publisher": string,
    "score": number
  }
}

Создайте базу знаний для Amazon Bedrock.

Инструкции по созданию новой базы знаний см. Создать базу знаний. В этом примере мы используем следующие настройки:

  • На Настроить источник данных страница, под Стратегия дробления, наведите на Нет фрагментации, поскольку вы уже выполнили предварительную обработку документов на предыдущем шаге.
  • В Модель вложений раздел, выбрать Вложения Titan G1 — текст.
  • В База данных векторов раздел, выбрать Быстрое создание нового векторного хранилища. Функция фильтрации метаданных доступна для всех поддерживаемых векторных хранилищ.

Синхронизировать набор данных с базой знаний

После того как вы создадите базу знаний и ваши файлы данных и файлы метаданных будут помещены в Простой сервис хранения Amazon (Amazon S3), вы можете начать добавочный прием. Инструкции см. Синхронизируйте, чтобы добавить источники данных в базу знаний..

Запрос с фильтрацией метаданных на консоли Amazon Bedrock

Чтобы использовать параметры фильтрации метаданных в консоли Amazon Bedrock, выполните следующие действия:

  1. На консоли Amazon Bedrock выберите Базы знаний в навигационной панели.
  2. Выберите базу знаний, которую вы создали.
  3. Выберите Тестовая база знаний.
  4. Выберите Конфигурации значок, затем разверните Фильтры.
  5. Введите условие в формате: ключ = значение (например, жанры = Стратегия) и нажмите Enter.
  6. Чтобы изменить ключ, значение или оператор, выберите условие.
  7. Продолжайте с оставшимися условиями (например, (жанры = Стратегия И год >= 2023) ИЛИ (рейтинг >= 9))
  8. По завершении введите запрос в поле сообщения, затем выберите Run.

Для этого поста вводим запрос «Стратегическая игра с крутой графикой, выпущенная после 2023 года».

Запрос с фильтрацией метаданных с помощью SDK

Чтобы использовать SDK, сначала создайте клиент для Агенты Amazon Bedrock время выполнения:

import boto3

bedrock_agent_runtime = boto3.client(
    service_name = "bedrock-agent-runtime"
)

Затем создайте фильтр (ниже приведены примеры):

# genres = Strategy
single_filter= {
    "equals": {
        "key": "genres",
        "value": "Strategy"
    }
}

# genres = Strategy AND year >= 2023
one_group_filter= {
    "andAll": [
        {
            "equals": {
                "key": "genres",
                "value": "Strategy"
            }
        },
        {
            "GreaterThanOrEquals": {
                "key": "year",
                "value": 2023
            }
        }
    ]
}

# (genres = Strategy AND year >=2023) OR score >= 9
two_group_filter = {
    "orAll": [
        {
            "andAll": [
                {
                    "equals": {
                        "key": "genres",
                        "value": "Strategy"
                    }
                },
                {
                    "GreaterThanOrEquals": {
                        "key": "year",
                        "value": 2023
                    }
                }
            ]
        },
        {
            "GreaterThanOrEquals": {
                "key": "score",
                "value": "9"
            }
        }
    ]
}

Передайте фильтр retrievalConfiguration Поисковый API or ПолучитьИСгенерировать API:

retrievalConfiguration={
        "vectorSearchConfiguration": {
            "filter": metadata_filter
        }
    }

В следующей таблице перечислены несколько ответов с различными условиями фильтрации метаданных.

запрос Фильтрация метаданных Полученные документы Наблюдения
«Стратегическая игра с крутой графикой, выпущенная после 2023 года» от

* Viking Saga: The Sea Raider, год: 2023, жанры: Стратегия

* Средневековый замок: Осада и завоевание, год:2022, жанры: Стратегии
* Fantasy Kingdoms: Chronicles of Eldoria, год:2023, жанры: Стратегии

* Кибернетическая революция: Восстание машин, год:2022, жанры: Стратегии
* Steampunk Chronicles: Clockwork Empires, год:2021, жанры: Градостроительство

2/5 игр соответствуют условию (жанры = Стратегия и год >= 2023)
On * 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), используя следующий синтаксис:

publisher_filter = {
    "startsWith": {
                    "key": "x-amz-bedrock-kb-source-uri",
                    "value": "s3://$bucket_name/video_game/neo_tokyo_games/"
                }
}

Убирать

Чтобы очистить ресурсы, выполните следующие действия:

  1. Удалить базу знаний:
    1. На консоли Amazon Bedrock выберите Базы знаний под оркестровка в навигационной панели.
    2. Выберите базу знаний, которую вы создали.
    3. Принять к сведению Управление идентификацией и доступом AWS (IAM) имя роли службы в Обзор базы знаний .
    4. В База данных векторов раздел обратите внимание на сборник ARN.
    5. Выберите Удалить, затем введите «Удалить» для подтверждения.
  2. Удалить базу данных векторов:
    1. На Сервис Amazon OpenSearch консоль, выберите Коллекции под Serverless в навигационной панели.
    2. Введите коллекцию ARN, которую вы сохранили, в строку поиска.
    3. Выберите коллекцию и выберите Удалить.
    4. Введите подтверждение в запросе подтверждения, затем выберите Удалить.
  3. Удалите роль службы IAM:
    1. На консоли IAM выберите роли в навигационной панели.
    2. Найдите имя роли, которое вы указали ранее.
    3. Выберите роль и выберите Удалить.
    4. Введите имя роли в запросе подтверждения и удалите роль.
  4. Удалите образец набора данных:
    1. На консоли Amazon S3 перейдите к корзине S3, которую вы использовали.
    2. Выберите префикс и файлы, затем выберите Удалить.
    3. Введите «удалить навсегда» в запросе подтверждения удаления.

Заключение

В этом посте мы рассмотрели функцию фильтрации метаданных в базах знаний для Amazon Bedrock. Вы узнали, как добавлять в документы собственные метаданные и использовать их в качестве фильтров при получении и запросе документов с помощью консоли Amazon Bedrock и SDK. Это помогает повысить точность контекста, делая ответы на запросы еще более актуальными и одновременно снижая затраты на запросы к базе данных векторов.

Дополнительные ресурсы см. в следующих разделах:


Об авторах

Корвус Ли — старший архитектор решений GenAI Labs в Лондоне. Он увлечен проектированием и разработкой прототипов, которые используют генеративный искусственный интеллект для решения проблем клиентов. Он также следит за последними разработками в области генеративного искусственного интеллекта и методов поиска, применяя их к реальным сценариям.

Ахмед Юис — старший архитектор решений в AWS GenAI Labs, помогающий клиентам создавать прототипы генеративного ИИ для решения бизнес-задач. Когда он не сотрудничает с клиентами, ему нравится играть со своими детьми и готовить.

Крис Пекора — специалист по генеративному искусственному интеллекту в Amazon Web Services. Он увлечен созданием инновационных продуктов и решений, уделяя при этом внимание науке, ориентированной на потребности клиентов. Когда он не проводит эксперименты и не следит за последними разработками в области GenAI, он любит проводить время со своими детьми.

Spot_img

Последняя разведка

Spot_img