моя контактная информация
Почтамезофия@protonmail.com
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Автор: из ElasticДжефф Вестал, Джек Конрадсон
В версии 8.14 Elastic представила в Elasticsearch новую функцию поиска под названием «retrivers». Читайте дальше, чтобы узнать об их простоте и эффективности, а также о том, как они могут улучшить ваши поисковые операции.
Ретриверы — это новый уровень абстракции, добавленный в API поиска в Elasticsearch. Они предоставляют возможность настройки многоэтапных конвейеров поиска с помощью одного вызова API _search. Эта архитектура упрощает логику поиска в вашем приложении, устраняя необходимость в нескольких вызовах API Elasticsearch для сложных поисковых запросов. Это также снижает потребность в логике на стороне клиента, которая часто требует объединения результатов нескольких запросов.
В первоначальную версию включены три типа ретриверов. Каждый ретривер предназначен для определенной цели, и в сочетании они могут выполнять сложные поиски.
Доступные типы включают в себя:
Для традиционных запросов запрос является частью общего вызова API поиска. Ретриверы отличаются тем, что они созданы как независимые объекты, которые можно использовать индивидуально или легко комбинировать. Этот модульный подход обеспечивает большую гибкость при разработке стратегий поиска.
Ретриверы разработаны как часть «дерева ретриверов», иерархической структуры, которая определяет операции поиска, уточняя их порядок и логику. Эта структура делает сложный поиск более управляемым, понятным для разработчиков и позволяет легко добавлять новые функции в будущем.
Retrievers поддерживают компоновку, позволяя создавать конвейеры и интегрировать различные стратегии поиска. Это позволяет легко тестировать различные комбинации поиска. Они также обеспечивают больший контроль над оценкой и фильтрацией документов. Например, вы можете указать минимальный порог оценки, применить сложные фильтры, не влияя на оценку, и использовать такие параметры, как terminate_after, для оптимизации производительности.
Поддерживает обратную совместимость с устаревшими элементами запроса, автоматически преобразуя их в соответствующие средства извлечения.
Давайте рассмотрим несколько примеров использования ретриверов. Мы используем образец набора данных IMDB.
Вы можете запустить включенный Юпитер блокнот, импортируйте данные IMDB в свой проект бессерверного поиска и самостоятельно запустите следующие примеры!
Настройки высокого уровня:
- GET /imdb_movies/_search?pretty
- {
- "retriever": {
- "standard": {
- "query": {
- "term": {
- "overview": "clueless"
- }
- }
- }
- },
- "size": 3,
- "fields": [
- "names",
- "overview"
- ],
- "_source": false
- }
- GET /imdb_movies/_search?pretty
- {
- "retriever": {
- "knn": {
- "field": "overview_dense",
- "query_vector_builder": {
- "text_embedding": {
- "model_id": ".multilingual-e5-small_linux-x86_64",
- "model_text": "clueless slackers"
- }
- },
- "k": 5,
- "num_candidates": 5
- }
- },
- "size": 3,
- "fields": [
- "names",
- "overview"
- ],
- "_source": false
- }
- GET /imdb_movies/_search?pretty
- {
- "retriever": {
- "standard": {
- "query": {
- "text_expansion": {
- "overview_sparse": {
- "model_id": ".elser_model_2_linux-x86_64",
- "model_text": "clueless slackers"
- }
- }
- }
- }
- },
- "size": 3,
- "fields": [
- "names",
- "overview"
- ],
- "_source": false
- }
- GET /imdb_movies/_search?pretty
- {
- "retriever": {
- "rrf": {
- "retrievers": [
- {
- "standard": {
- "query": {
- "term": {
- "overview": "clueless slackers"
- }
- }
- }
- },
- {
- "knn": {
- "field": "overview_dense",
- "query_vector_builder": {
- "text_embedding": {
- "model_id": ".multilingual-e5-small_linux-x86_64",
- "model_text": "clueless slackers"
- }
- },
- "k": 5,
- "num_candidates": 5
- }
- },
- {
- "standard": {
- "query": {
- "text_expansion": {
- "overview_sparse": {
- "model_id": ".elser_model_2_linux-x86_64",
- "model_text": "clueless slackers"
- }
- }
- }
- }
- }
- ],
- "rank_window_size": 5,
- "rank_constant": 1
- }
- },
- "size": 3,
- "fields": [
- "names",
- "overview"
- ],
- "_source": false
- }
Ретривер имеет определенные ограничения, о которых следует знать пользователям. Например, использование составного ретривера позволяет запрашивать только элементы. Это обеспечивает более четкое разделение задач и предотвращает сложности, связанные с чрезмерным вложением или независимой конфигурацией. Кроме того, дочерние ретриверы не должны использовать элементы, которые ограничивают составной ретривер тем, что он является частью дерева ретриверов.
Эти ограничения улучшают производительность и компоновку даже при использовании сложных стратегий поиска.
Ретривер изначально выпущен как техническая предварительная версия, поэтому его API может быть изменен.
Поисковые системы представляют собой важный шаг вперед в обеспечении функциональности поиска и удобства использования Elasticsearch. Их можно объединить в конвейерную цепочку, где каждый получатель применяет свою логику и передает результаты следующему элементу цепочки. Ретриверы могут значительно улучшить качество поиска, обеспечивая более структурированные, гибкие и эффективные поисковые операции.
Следующие ресурсы предоставляют более подробную информацию о ретриверах.
Попробуйте приведенный выше код самостоятельно!Вы можете запуститьприлагаемый блокнот Jupyter, импортируйте данные IMDB в проект Elastic Serverless Search!
Готовы попробовать сами?начинатьБесплатная пробная версия。
Хотите получить сертификацию Elastic?Узнай в следующий разОбучение инженеров ElasticsearchКогда начать!