🚀 Попробуйте Zilliz Cloud, полностью управляемый Milvus, бесплатно — ощутите 10-кратное увеличение производительности! Попробовать сейчас>

milvus-logo
LFAI

HomeBlogsОбщая архитектура

Общая архитектура

  • Scenarios
May 12, 2020
milvus

Проект Milvus:github.com/milvus-io/milvus

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

В данной статье рассматривается система QA, разработанная для конкретной области, которую обычно называют интеллектуальным роботом для обслуживания клиентов. В прошлом создание робота для обслуживания клиентов обычно требовало преобразования знаний о домене в ряд правил и графов знаний. Процесс построения в значительной степени зависит от "человеческого" интеллекта. После изменения сценариев требовалось много повторяющейся работы. С применением глубокого обучения в обработке естественного языка (NLP) машинное чтение может автоматически находить ответы на соответствующие вопросы непосредственно из документов. Языковая модель глубокого обучения преобразует вопросы и документы в семантические векторы, чтобы найти подходящий ответ.

В этой статье используется открытая модель BERT от Google и Milvus, векторная поисковая система с открытым исходным кодом, для быстрого создания бота для вопросов и ответов, основанного на семантическом понимании.

Общая архитектура

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

  1. Получите большое количество вопросов с ответами в определенной области (стандартный набор вопросов).
  2. С помощью модели BERT преобразуйте эти вопросы в векторы признаков и сохраните их в Milvus. Одновременно Milvus присвоит каждому вектору идентификатор вектора.
  3. Храните эти репрезентативные идентификаторы вопросов и соответствующие им ответы в PostgreSQL.

Когда пользователь задает вопрос:

  1. BERT-модель преобразует его в вектор признаков.
  2. Milvus выполняет поиск по сходству и извлекает идентификатор, наиболее похожий на вопрос.
  3. PostgreSQL возвращает соответствующий ответ.

Схема архитектуры системы выглядит следующим образом (синие линии представляют процесс импорта, а желтые - процесс запроса):

1-system-architecture-milvus-bert-postgresql.png 1-system-architecture-milvus-bert-postgresql.png

Далее мы покажем вам, как шаг за шагом построить онлайн-систему вопросов и ответов.

Шаги по созданию системы вопросов и ответов

Прежде чем начать, необходимо установить Milvus и PostgreSQL. Конкретные шаги по установке см. на официальном сайте Milvus.

1. Подготовка данных

Экспериментальные данные в этой статье получены с сайта: https://github.com/chatopera/insuranceqa-corpus-zh.

Набор данных содержит пары вопросов и ответов, связанных со страховой индустрией. В этой статье мы извлекаем из него 20 000 пар вопросов и ответов. Используя этот набор вопросов и ответов, вы сможете быстро создать робота для обслуживания клиентов в страховой отрасли.

2. Генерируем векторы признаков

Эта система использует модель, предварительно обученную компанией BERT. Загрузите ее по ссылке ниже перед началом работы: https://storage.googleapis.com/bert_models/2018_10_18/cased_L-24_H-1024_A-16.zip.

Используйте эту модель для преобразования базы данных вопросов в векторы признаков для последующего поиска сходства. Дополнительные сведения о службе BERT см. на сайте https://github.com/hanxiao/bert-as-service.

2-code-block.png 2-code-block.png

3. Импорт в Milvus и PostgreSQL

Нормализуйте и импортируйте сгенерированные векторы признаков в Milvus, а затем импортируйте идентификаторы, полученные Milvus, и соответствующие ответы в PostgreSQL. Ниже показана структура таблицы в PostgreSQL:

3-import-milvus-postgresql.png 3-import-milvus-postgresql.png

4-import-milvus-postgresql.png 4-import-milvus-postgresql.png

4. Получение ответов

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

На практике ваша система может не иметь в библиотеке идеально подходящих вопросов. Тогда можно установить пороговое значение 0,9. Если наибольшее найденное расстояние сходства меньше этого порога, система сообщит, что в ней нет связанных вопросов.

4-retrieve-answers.png 4-retrieve-answers.png

Демонстрация работы системы

Ниже показан пример интерфейса системы:

5-milvus-QA-system-application.png 5-milvus-QA-system-application.png

Введите свой вопрос в диалоговое окно и получите соответствующий ответ:

5-milvus-QA-system-application-2.png 5-milvus-QA-system-application-2.png

Резюме

Мы надеемся, что после прочтения этой статьи вы легко сможете создать свою собственную систему вопросов и ответов.

Благодаря модели BERT вам больше не нужно предварительно сортировать и организовывать текстовые корпорации. В то же время, благодаря высокой производительности и масштабируемости векторного поискового движка Milvus с открытым исходным кодом, ваша система QA может поддерживать корпус до сотен миллионов текстов.

Milvus официально присоединился к Linux AI (LF AI) Foundation для инкубации. Приглашаем вас присоединиться к сообществу Milvus и работать с нами над ускорением применения технологий искусственного интеллекта!

=> Попробуйте нашу онлайн-демонстрацию здесь: https://www.milvus.io/scenarios

Like the article? Spread the word

Продолжить чтение