Общая архитектура
Проект Milvus:github.com/milvus-io/milvus
Система ответов на вопросы широко используется в области обработки естественного языка. Она используется для ответов на вопросы в форме естественного языка и имеет широкий спектр применения. Типичные приложения включают в себя: интеллектуальное голосовое взаимодействие, обслуживание клиентов онлайн, получение знаний, персонализированные эмоциональные чаты и многое другое. Большинство систем ответов на вопросы можно классифицировать следующим образом: генеративные и поисковые системы ответов на вопросы, однораундовые и многораундовые системы ответов на вопросы, открытые системы ответов на вопросы и специфические системы ответов на вопросы.
В данной статье рассматривается система QA, разработанная для конкретной области, которую обычно называют интеллектуальным роботом для обслуживания клиентов. В прошлом создание робота для обслуживания клиентов обычно требовало преобразования знаний о домене в ряд правил и графов знаний. Процесс построения в значительной степени зависит от "человеческого" интеллекта. После изменения сценариев требовалось много повторяющейся работы. С применением глубокого обучения в обработке естественного языка (NLP) машинное чтение может автоматически находить ответы на соответствующие вопросы непосредственно из документов. Языковая модель глубокого обучения преобразует вопросы и документы в семантические векторы, чтобы найти подходящий ответ.
В этой статье используется открытая модель BERT от Google и Milvus, векторная поисковая система с открытым исходным кодом, для быстрого создания бота для вопросов и ответов, основанного на семантическом понимании.
Общая архитектура
В этой статье реализована система ответов на вопросы с помощью сопоставления семантического сходства. Общий процесс построения выглядит следующим образом:
- Получите большое количество вопросов с ответами в определенной области (стандартный набор вопросов).
- С помощью модели BERT преобразуйте эти вопросы в векторы признаков и сохраните их в Milvus. Одновременно Milvus присвоит каждому вектору идентификатор вектора.
- Храните эти репрезентативные идентификаторы вопросов и соответствующие им ответы в PostgreSQL.
Когда пользователь задает вопрос:
- BERT-модель преобразует его в вектор признаков.
- Milvus выполняет поиск по сходству и извлекает идентификатор, наиболее похожий на вопрос.
- PostgreSQL возвращает соответствующий ответ.
Схема архитектуры системы выглядит следующим образом (синие линии представляют процесс импорта, а желтые - процесс запроса):
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
3. Импорт в Milvus и PostgreSQL
Нормализуйте и импортируйте сгенерированные векторы признаков в Milvus, а затем импортируйте идентификаторы, полученные Milvus, и соответствующие ответы в PostgreSQL. Ниже показана структура таблицы в PostgreSQL:
3-import-milvus-postgresql.png
4-import-milvus-postgresql.png
4. Получение ответов
Пользователь вводит вопрос, и после генерации вектора признаков с помощью BERT он может найти наиболее похожий вопрос в библиотеке Milvus. В этой статье используется косинусное расстояние для представления сходства между двумя предложениями. Поскольку все векторы нормализованы, чем ближе косинусное расстояние между двумя векторами признаков к 1, тем выше сходство.
На практике ваша система может не иметь в библиотеке идеально подходящих вопросов. Тогда можно установить пороговое значение 0,9. Если наибольшее найденное расстояние сходства меньше этого порога, система сообщит, что в ней нет связанных вопросов.
4-retrieve-answers.png
Демонстрация работы системы
Ниже показан пример интерфейса системы:
5-milvus-QA-system-application.png
Введите свой вопрос в диалоговое окно и получите соответствующий ответ:
5-milvus-QA-system-application-2.png
Резюме
Мы надеемся, что после прочтения этой статьи вы легко сможете создать свою собственную систему вопросов и ответов.
Благодаря модели BERT вам больше не нужно предварительно сортировать и организовывать текстовые корпорации. В то же время, благодаря высокой производительности и масштабируемости векторного поискового движка Milvus с открытым исходным кодом, ваша система QA может поддерживать корпус до сотен миллионов текстов.
Milvus официально присоединился к Linux AI (LF AI) Foundation для инкубации. Приглашаем вас присоединиться к сообществу Milvus и работать с нами над ускорением применения технологий искусственного интеллекта!
=> Попробуйте нашу онлайн-демонстрацию здесь: https://www.milvus.io/scenarios
Try Managed Milvus for Free
Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.
Get StartedLike the article? Spread the word