Поиск информации — одно из наиболее распространенных применений генеративных моделей искусственного интеллекта (ИИ). Создание диалогового интерфейса поиска вашего контента с использованием ИИ позволяет вашим пользователям задавать конкретные вопросы и получать прямые ответы.
В этом руководстве показано, как создать диалоговый интерфейс поиска для вашего контента на базе искусственного интеллекта. Он основан на Docs Agent , проекте с открытым исходным кодом, который использует API Google Gemini для создания диалогового интерфейса поиска без обучения новой модели ИИ или настройки модели с помощью моделей Gemini . Это означает, что вы можете быстро создать эту возможность поиска и использовать ее для небольших и больших наборов контента.
Видеообзор проекта и способов его расширения, включая идеи людей, которые его создавали, можно найти на странице AI Content Search | Создавайте с помощью Google AI . В противном случае вы можете начать расширение проекта, следуя инструкциям ниже.
Обзор
Проект Docs Agent предоставляет диалоговый интерфейс поиска для определенного набора контента, поддерживаемый API Google Gemini и генеративными моделями. Пользователи могут задать развернутый вопрос в разговорном стиле и получить развернутый ответ на основе определенного набора контента. В фоновом режиме агент Docs берет вопрос, выполняет поиск в векторной базе данных контента и создает подробную подсказку для генеративной модели, включая фрагменты соответствующего текста. Генеративная модель генерирует ответ на вопрос, а агент Документов форматирует ответ и представляет его пользователю.
Рисунок 1. Функциональная схема приложения проекта Docs Agent.
Ключом к тому, чтобы Docs Agent мог отвечать на вопросы о вашем контенте, является создание векторной базы данных этого контента. Вы разделяете свой контент на логические фрагменты текста и генерируете вектор для каждого из них. Эти векторы представляют собой числовые представления информации в каждом фрагменте и генерируются с помощью функции встраивания текста AI на основе генеративных моделей Google.
Когда пользователь задает вопрос, Docs Agent использует ту же функцию встраивания текста для создания числового представления этого вопроса и использует это значение для поиска в базе данных векторов и поиска соответствующего контента. Он берет лучшие результаты и добавляет эту информацию в подсказку для генеративной модели. Модель ИИ принимает вопрос и дополнительную контекстную информацию и генерирует ответ.
Настройка проекта
Эти инструкции помогут вам настроить проект Docs Agent для разработки и тестирования. Общие шаги включают установку некоторого необходимого программного обеспечения, настройку нескольких переменных среды, клонирование проекта из репозитория кода и запуск установки конфигурации. В проекте кода используется Python Poetry для управления пакетами и средой выполнения Python.
Установите необходимые компоненты
Проект Docs Agent использует Python 3 и Python Poetry для управления пакетами и запуска приложения. Следующие инструкции по установке предназначены для хост-компьютера Linux.
Чтобы установить необходимое программное обеспечение:
- Установите Python 3 и пакет виртуальной среды
venv
для Python.sudo apt update sudo apt install git pip python3-venv
- Установите Python Poetry для управления зависимостями и упаковкой проекта.
curl -sSL https://install.python-poetry.org | python3 -
Вы можете использовать Python Poetry, чтобы добавить больше библиотек Python, если расширите проект.
Установить переменные среды
Задайте несколько переменных среды, которые необходимы для запуска проекта кода агента Docs, включая ключ Google Gemini API и настройку Python Poetry. Возможно, вы захотите добавить эти переменные в файл $HOME/.bashrc
, если вы используете Linux, чтобы сделать их настройками по умолчанию для ваших терминальных сеансов.
Чтобы установить переменные среды:
- Получите ключ API Google Gemini и скопируйте строку ключа.
- Установите ключ API в качестве переменной среды. На хостах Linux используйте следующую команду.
export API_KEY=<YOUR_API_KEY_HERE>
- Решите известную проблему Python Poetry, установив параметр
PYTHON_KEYRING_BACKEND
. На хостах Linux используйте следующую команду.export PYTHON_KEYRING_BACKEND=keyring.backends.null.Keyring
Клонировать и настроить проект
Загрузите код проекта и используйте команду установки Poetry, чтобы загрузить необходимые зависимости и настроить проект. Вам понадобится программное обеспечение для управления версиями git , чтобы получить исходный код проекта. внешний Чтобы загрузить и настроить код проекта:
- Клонируйте репозиторий git, используя следующую команду.
git clone https://github.com/google/generative-ai-docs
- При желании настройте свой локальный репозиторий git на использование разреженного извлечения, чтобы у вас были только файлы для проекта агента документов.
cd generative-ai-docs/ git sparse-checkout init --cone git sparse-checkout set examples/gemini/python/docs-agent/
- Перейдите в корневой каталог проекта
docs-agent
.cd examples/gemini/python/docs-agent/
- Запустите команду установки Poetry, чтобы загрузить зависимости и настроить проект:
poetry install
Подготовьте контент
Проект Docs Agent предназначен для работы с текстовым содержимым и включает в себя инструменты, специально предназначенные для работы с веб-сайтами, использующими Markdown в качестве исходного формата. Если вы работаете с содержимым веб-сайта, вам следует сохранить (или скопировать) структуру каталогов обслуживаемого веб-сайта, чтобы задача обработки контента могла отображать и создавать ссылки на этот контент.
В зависимости от формата и деталей вашего контента вам может потребоваться очистить его, чтобы удалить закрытую информацию, внутренние заметки или другую информацию, которую вы не хотите, чтобы она была доступна для поиска. Вы должны сохранить базовое форматирование, такое как заголовки и заголовки, которые помогают создавать логические разделения текста или фрагменты на этапе обработки контента.
Чтобы подготовить контент к обработке:
- Создайте каталог для контента, который должен искать агент ИИ.
mkdir docs-agent/content/
- Скопируйте содержимое в каталог
docs-agent/content/
. Если контент представляет собой веб-сайт, сохраните (или скопируйте) структуру каталогов обслуживаемого веб-сайта. - Очистите или отредактируйте содержимое по мере необходимости, чтобы удалить закрытую информацию или другую информацию, которую вы не хотите включать в поиск.
Используйте документы Flutter для тестирования
Если вам нужен набор контента для тестирования Docs Agent, вы можете использовать для тестирования документацию разработчика Flutter .
Чтобы получить документацию разработчика Flutter:
- Перейдите в каталог контента, который вы хотите, чтобы агент ИИ искал.
cd docs-agent/content/
- Клонируйте документы Flutter в каталог
docs-agent/content/
.git clone --recurse-submodules https://github.com/flutter/website.git
Содержание процесса
Чтобы поисковый агент мог эффективно искать контент, связанный с вопросами пользователей, вам необходимо создать базу данных векторов, представляющих ваш контент. Векторы генерируются с помощью функции генеративной модели искусственного интеллекта, называемой встраиванием текста . Текстовые внедрения — это числовые представления текстового содержимого. Они аппроксимируют смысловое значение текста набором цифр. Наличие числовых представлений информации позволяет системе взять вопрос пользователя, приблизить его значение, используя ту же функцию встраивания текста, а затем найти соответствующую информацию в виде математического расчета, используя алгоритм k-ближайших соседей (k-NN).
Разделить текстовое содержимое
Объем текста, который может эффективно представлять вектор внедрения текста, ограничен. Этот проект ограничивает текст, представленный в векторе, 3000 символами или меньше, а это означает, что вам придется разделить контент на фрагменты, не превышая этого ограничения. В этом разделе описывается, как использовать сценарий, входящий в состав проекта Docs Agent, для разделения файлов Markdown на более мелкие текстовые фрагменты. Советы по работе с другими форматами контента см. в разделе «Обработка других форматов» .
Чтобы разделить содержимое формата Markdown:
- Настройте входные параметры сценария обработки, отредактировав файл
docs-agent/config.yaml
. Этот пример предназначен для подмножества документации Flutter:input: - path: "content/website/src/ui" url_prefix: "https://docs.flutter.dev/ui"
- Сохраните изменения в этом файле конфигурации.
- Перейдите в каталог проекта
docs-agent
:cd docs-agent/
- Разделите исходное содержимое Markdown, выполнив команду
agent chunk
:agent chunk
Скрипт обрабатывает входное содержимое и создает выходные текстовые файлы в каталоге docs-agent/data
, разделяя текст на основе заголовков, заголовков и связанных абзацев. Обработка может занять некоторое время в зависимости от размера вашего контента.
Создание векторов внедрения текста
Разделив контент на значимые фрагменты подходящего размера, вы можете заполнить векторную базу данных своим контентом с помощью функции встраивания текста. Проект Docs Agent использует базу данных векторов Chroma для хранения векторов встраивания текста. В этих инструкциях описано, как использовать сценарий Docs Agents для заполнения базы данных векторов разделенным содержимым.
Чтобы создать встраивание текста и заполнить базу данных векторов:
- Перейдите в каталог проекта
docs-agent
:cd docs-agent/
- Заполните базу данных векторов своим контентом с помощью команды
agent populate
:agent populate
Этот скрипт использует API Google Gemini для создания векторов встраивания текста , а затем сохраняет выходные данные в базу данных векторов. Обработка может занять некоторое время в зависимости от размера вашего контента.
Обработка других форматов
Проект Docs Agent предназначен для работы с содержимым веб-сайтов в формате Markdown. Авторы проекта создали несколько скриптов-конвертеров для генерации других типов контента в формат Markdown, включая Google Docs, Portable Document Format (PDF) и Gmail. Дополнительную информацию об использовании этих конвертеров см. в каталоге docs-agent/apps_script репозитория кода.
Конвертируйте другие форматы контента
Вы можете использовать в проекте другие форматы контента, однако эти дополнительные методы должны быть созданы вами или другими членами сообщества. Проверьте репозиторий кода «Проблемы» и «Запросы на включение» для людей, создающих подобные решения.
Ключевой код, который вам нужно создать для поддержки других форматов контента, — это скрипт-разделитель, такой как скрипт files_to_plain_text.py
. Постарайтесь создать сценарий или программу, которая создает выходные данные, аналогичные этому сценарию. Помните, что окончательный текстовый вывод должен иметь минимальное форматирование и постороннюю информацию. Если вы используете такие форматы контента, как HTML или JSON, убедитесь, что вы удалили как можно большую часть неинформационного форматирования (теги, сценарии, CSS), чтобы оно не искажало значения встроенных текстов, которые вы генерируете из их.
После создания сценария разделения для формата контента вы сможете запустить сценарий populate_vector_database.py
для заполнения базы данных векторов. Дополнительные сведения об обработке файлов для использования с агентом Docs Agent см. в файле сведений о предварительной обработке агента Docs.
Протестируйте приложение
Когда вы завершите заполнение базы данных векторов, проект будет готов к тестированию. Проект предоставляет функцию упаковки, позволяющую запускать проект локально.
Чтобы запустить и протестировать веб-интерфейс проекта:
- Перейдите в каталог проекта
docs-agent
:cd docs-agent/
- Запустите скрипт запуска веб-приложения:
agent chatbot
- С помощью веб-браузера перейдите по URL-адресу, указанному в выходных данных сценария запуска, и протестируйте приложение.
* Running on http://your-hostname-here:5000
Варианты реализации
API Gemini предоставляет инструменты программирования, которые могут заменить компоненты реализации агента документов, в частности: вариант модели Gemini семантического поиска и ответов на вопросы с атрибутами (AQA). Вы можете использовать функцию семантического поиска Gemini API для замены отдельной базы данных векторов. Функция семантического поиска позволяет создавать встраивания для вашего контента и хранить этот контент. Модель AQA Gemini настроена на ответы на вопросы с использованием исходного материала, предоставленного в подсказке. Вы используете семантический поиск вместе с моделью AQA, чтобы отвечать на вопросы о вашем контенте в рамках API Gemini.
Агент Документов включает параметры конфигурации для использования функции API семантического поиска, модели AQA Gemini или обеих. Дополнительные сведения см. в файле сведений об агенте Docs .
Дополнительные ресурсы
Дополнительную информацию о проекте Docs Agent можно найти в репозитории кода . Если вам нужна помощь в создании приложения или вы ищете разработчиков для совместной работы, посетите сервер Discord сообщества разработчиков Google .
Производственные приложения
Если вы планируете развернуть Docs Agent для большой аудитории, обратите внимание, что на использование API Google Gemini могут распространяться ограничения по скорости и другие ограничения . Если вы планируете создать производственное приложение с API Gemini, например Docs Agent, воспользуйтесь услугами Google Cloud Vertex AI, чтобы повысить масштабируемость и надежность вашего приложения.