Семантический поиск
Семантический поиск — это метод поиска данных, основанный на намерении и контекстуальном значении запроса, а не на соответствии по ключевым словам (лексический поиск).
Elasticsearch предоставляет различные возможности семантического поиска, используя обработку естественного языка (NLP) и поиск по векторам. Использование модели NLP позволяет извлекать векторные представления текста. Векторные представления — это векторы, которые предоставляют числовое представление текста. Фрагменты контента с похожим значением имеют похожие представления.
У вас есть несколько вариантов использования моделей NLP в Elastic Stack:
- использование потока
semantic_text(рекомендуется) - использование потока API инференции
- развертывание моделей непосредственно в Elasticsearch
Обратитесь к этому разделу, чтобы выбрать свой поток.
Вы также можете хранить собственные векторные представления в Elasticsearch в качестве векторов. Обратитесь к этому разделу для получения руководства по тому, какой тип запроса использовать для семантического поиска.
При выполнении запроса Elasticsearch может использовать ту же модель NLP для преобразования запроса в векторные представления, позволяя находить документы с похожими векторными представлениями текста.
Выбор потока семантического поиска
semantic_text поток
Самый простой способ использования моделей NLP в Elastic Stack — это semantic_text поток. Мы рекомендуем использовать этот подход, так как он абстрагирует от большого объёма ручного труда. Всё, что вам нужно сделать, это создать конечную точку инференции и отображение индекса, чтобы начать загрузку, создание векторных представлений и поиск данных. Нет необходимости определять параметры, связанные с моделью, или создавать конвейеры инжеста инференции. Обратитесь к документации Создание конечной точки API инференции для получения списка поддерживаемых сервисов.
Учебник по семантическому поиску с semantic_text показывает весь процесс.
поток API инференции
Поток API инференции более сложен, но предоставляет больший контроль над конфигурацией конечной точки инференции. Вам нужно создать конечную точку инференции, предоставить различные параметры, связанные с моделью, определить отображение индекса и настроить конвейер инжеста инференции с соответствующими параметрами.
Учебник по семантическому поиску с API инференции показывает весь процесс.
Поток развертывания модели
Вы также можете вручную развернуть NLP в Elasticsearch, не используя конечную точку инференции. Это самый сложный и трудоёмкий поток для выполнения семантического поиска в Elastic Stack. Вам нужно выбрать модель NLP из списка поддерживаемых плотных и разреженных векторных моделей, развернуть её с помощью клиента Eland, создать отображение индекса и настроить подходящий конвейер инжеста для начала загрузки и поиска данных.
Учебник по семантическому поиску с развернутой моделью в Elasticsearch показывает весь процесс.
Использование правильного запроса
Создание правильного запроса имеет важное значение для семантического поиска. Какой запрос использовать и на какое поле ориентироваться в своих запросах зависит от выбранного вами потока. Если вы используете поток semantic_text, это довольно просто. В противном случае это зависит от того, с каким типом векторных представлений вы работаете.
| Тип поля для запроса | Используемый запрос | Примечания |
|---|---|---|
Поле | ||
Запрос | ||
Запрос |
Если вы хотите, чтобы Elasticsearch генерировал векторные представления как при индексировании, так и при выполнении запросов, используйте поле semantic_text и запрос semantic. Если вы хотите предоставить свои собственные векторные представления, используйте поле типа sparse_vector или dense_vector и соответствующий запрос в зависимости от модели NLP, которую вы использовали для генерации векторных представлений.
Для самого простого способа выполнения семантического поиска в Elastic Stack обратитесь к semantic_text учебнику.
Подробнее
-
Учебники:
-
Интерактивные примеры:
- Репозиторий
elasticsearch-labsсодержит ряд интерактивных примеров семантического поиска в виде исполняемых Python-блокнотов, использующих Elasticsearch Python-клиент - Семантический поиск с ELSER используя поток развертывания модели
- Семантический поиск с
semantic_text
- Репозиторий
-
Блоги:
© 2023-2025 Elasticsearch
As of September 2024, Elasticsearch is available under a choice of three licenses: the Server Side Public License (SSPL), the Elastic License, or the AGPLv3 (OSI approved).
Elasticsearch and the Elasticsearch logo are trademarks of Elasticsearch B.V., registered in the U.S. and in other countries.
https://www.elastic.co/guide/en/elasticsearch/reference/8.17/semantic-search.html
|
|