Что такое когнитивный поиск в службе "Поиск Azure"?What is "cognitive search" in Azure Search?

Когнитивный поиск — это функция искусственного интеллекта в службе "Поиск Azure", используемая для извлечения текста из изображений, больших двоичных объектов и других неструктурированных источников данных, а также для обогащения содержимого, чтобы сделать его более доступным для поиска в индексе службы "Поиск Azure".Cognitive search is an AI feature in Azure Search, used to extract text from images, blobs, and other unstructured data sources - enriching the content to make it more searchable in an Azure Search index. Извлечение и обогащение реализуются через когнитивные навыки,которые присоединены к конвейеру индексирования.Extraction and enrichment are implemented through cognitive skills attached to an indexing pipeline. Обогащения ИИ поддерживаются следующими способами.AI enrichments are supported in the following ways:

  • Навыки обработки естественного языка включают в себя распознавание сущностей, распознавание языка, извлечение ключевых фраз, обработку текста и определение тональности.Natural language processing skills include entity recognition, language detection, key phrase extraction, text manipulation, and sentiment detection. С помощью этих навыков неструктурированный текст может принимать новые формы, сопоставляемые с полями поиска и фильтрации в индексе.With these skills, unstructured text can assume new forms, mapped as searchable and filterable fields in an index.

  • Навыки обработки изображений охватывают распознавание текста (OCR) и идентификацию визуальных компонентов, таких как обнаружение лица, интерпретация изображений, распознавание изображений (известные люди и ориентиры) или атрибутов, таких как цвета или ориентация изображений.Image processing skills include Optical Character Recognition (OCR) and identification of visual features, such as facial detection, image interpretation, image recognition (famous people and landmarks) or attributes like colors or image orientation. Вы можете создавать текстовые представления содержимого изображения, по которым можно выполнять поиск, используя все возможности запросов службы "Поиск Azure".You can create text-representations of image content, searchable using all the query capabilities of Azure Search.

Схема конвейера когнитивного поискаCognitive search pipeline diagram

Когнитивные навыки в службе "Поиск Azure" основываются на моделях машинного обучения в API-интерфейсах Cognitive Services: API компьютерного зрения и анализ текста.Cognitive skills in Azure Search are based on machine learning models in Cognitive Services APIs: Computer Vision and Text Analysis.

На этапе приема данных применяется обработка естественного языка и изображений, при этом результаты становятся частью структуры документа в индексе поиска службы "Поиск Azure".Natural language and image processing is applied during the data ingestion phase, with results becoming part of a document's composition in a searchable index in Azure Search. Данные получают в виде набора данных Azure, после чего они передаются по конвейеру индексирования с использованием необходимых встроенных навыков.Data is sourced as an Azure data set and then pushed through an indexing pipeline using whichever built-in skills you need. Архитектура является расширяемой, поэтому, если встроенных навыков недостаточно, вы можете создавать и прикреплять пользовательские навыки для интеграции пользовательской обработки.The architecture is extensible so if the built-in skills are not sufficient, you can create and attach custom skills to integrate custom processing. Например, в модуле сущности или классификаторе документов можно выполнять задачи в специализированных областях: финансы, научные публикации или медицина.Examples might be a custom entity module or document classifier targeting a specific domain such as finance, scientific publications, or medicine.

Примечание

По мере расширения области путем увеличения частоты обработки и добавления большего количества документов или дополнительных алгоритмов ИИ, вам нужно будет присоединить оплачиваемый ресурс Cognitive Services.As you expand scope by increasing the frequency of processing, adding more documents, or adding more AI algorithms, you will need to attach a billable Cognitive Services resource. Плата взимается при вызове API в Cognitive Services и извлечении изображений при открытии документов в службе "Поиск Azure".Charges accrue when calling APIs in Cognitive Services, and for image extraction as part of the document-cracking stage in Azure Search. За извлечение текста из документов плата не взимается.There are no charges for text extraction from documents.

Плата за выполнение встроенных навыков взимается в рамках существующей модели оплаты Cognitive Services по мере использования.Execution of built-in skills is charged at the existing Cognitive Services pay-as-you go price. Плата за извлечение изображений указана на странице с ценами на Поиск Azure.Image extraction pricing is described on the Azure Search pricing page.

Конвейер когнитивного поиска основан на индексаторах службы "Поиск Azure, которые сканируют источники данных и создают по ним полные индексы.A cognitive search pipeline is based on Azure Search indexers that crawl data sources and provide end-to-end index processing. Теперь к этим индексаторам можно подключать навыки, которые отслеживают и обогащают определенные документы по настроенным вами наборам навыков.Skills are now attached to indexers, intercepting and enriching documents according to the skillset you define. После индексации созданный контент будет доступен через поисковые запросы любых типов, поддерживаемых в службе "Поиск Azure".Once indexed, you can access content via search requests through all query types supported by Azure Search. Если вы еще не знакомы с индексаторами, ознакомьтесь с простым примером, представленным в этом разделе.If you are new to indexers, this section walks you through the steps.

Шаг 1. Подключение и этап открытия документовStep 1: Connection and document cracking phase

На вход конвейера подается неструктурированный текст или нетекстовое содержимое (например, JPEG-файлы с изображениями или отсканированными документами).At the start of the pipeline, you have unstructured text or non-text content (such as image and scanned document JPEG files). Эти данные нужно разместить в службе хранилища данных Azure, доступной для индексатора.Data must exist in an Azure data storage service that can be accessed by an indexer. Индексаторы умеют открывать исходные документы и извлекать из них текстовые данные.Indexers can "crack" source documents to extract text from source data.

Этап открытия документовDocument cracking phase

В качестве источников данных поддерживаются хранилища больших двоичных объектов Azure, хранилища таблиц Azure, база данных SQL Azure и Azure Cosmos DB.Supported sources include Azure blob storage, Azure table storage, Azure SQL Database, and Azure Cosmos DB. Текстовое содержимое можно извлечь из файлов следующих типов: PDF, Word, PowerPoint и CSV.Text-based content can be extracted from the following file types: PDFs, Word, PowerPoint, CSV files. Дополнительные сведения см. в разделе Поддерживаемые форматы документов.For the full list, see Supported formats.

Шаг 2. Когнитивных навыки и этап обогащенияStep 2: Cognitive skills and enrichment phase

Обогащение выполняется когнитивными навыками с атомарными операциями.Enrichment is through cognitive skills performing atomic operations. Например, выделив текстовое содержимое из PDF-файла, к нему можно применить распознавание языка, распознавание сущностей или извлечение ключевых фраз, чтобы создать в индексе новые поля данных, не существующие в самом источнике.For example, once you have text content from a PDF, you can apply entity recognition language detection, or key phrase extraction to produce new fields in your index that are not available natively in the source. Совокупность таких возможностей, реализованная в вашем конвейере, называется набором навыков.Altogether, the collection of skills used in your pipeline is called a skillset.

Этап обогащенияEnrichment phase

Набор навыков основывается на стандартных когнитивных навыках или пользовательских навыках, которые вы создаете и подключаете к набору навыков.A skillset is based on predefined cognitive skills or custom skills you provide and connect to the skillset. Можно использовать как минимальные, так и очень сложные наборы навыков. Они определяют не только типы обработки, но и порядок операций.A skillset can be minimal or highly complex, and determines not only the type of processing, but also the order of operations. Набор навыков в сочетании с сопоставлением полей, которые включены в индексатор, полностью определяют весь конвейер обогащения данных.A skillset plus the field mappings defined as part of an indexer fully specifies the enrichment pipeline. Дополнительные сведения о том, как собрать все эти фрагменты в единое целое, вы найдете в статье Создание набора навыков в конвейере обогащения.For more information about pulling all of these pieces together, see Define a skillset.

В конвейере создается коллекция обогащенных документов.Internally, the pipeline generates a collection of enriched documents. Вы можете выбрать, какие из элементов этих обогащенных документов нужно сопоставить с индексируемыми полями в индексе поиска.You can decide which parts of the enriched documents should be mapped to indexable fields in your search index. Например, если вы применили навыки извлечения ключевых фраз и распознавания сущностей, в обогащенных документах будут созданы соответствующие поля, которые можно будет сопоставить с полями индекса.For example, if you applied the key phrases extraction and the entity recognition skills, then those new fields would become part of the enriched document, and they can be mapped to fields on your index. В статье Создание ссылок на аннотации в наборе навыков когнитивного поиска вы найдете дополнительные сведения о структурах ввода и вывода.See Annotations to learn more about input/output formations.

Добавление элемента knowledgeStore для сохранения обогащенийAdd a knowledgeStore element to save enrichments

В версии REST API api-version=2019-05-06 службы поиска в наборы навыков добавляется определение knowledgeStore, которое обеспечивает подключение к хранилищу Azure и проекции, описывающие способ сохранения обогащений.Search service REST api-version=2019-05-06 extends skillsets with a knowledgeStore definition that provides an Azure storage connection and projections that describe how the enrichments are stored.

Добавив хранилище знаний к набору навыков, можно спроецировать представление обогащений для сценариев, в которых не предусмотрен полнотекстовой поиск.Adding a knowledge store to a skillset gives you the ability to project a representation of your enrichments for scenarios other than full text search. Подробные сведения см. в обзоре хранилища знаний.For more information, see What is knowledge store.

Шаг 3. Индекс поиска и доступа с помощью запросовStep 3: Search index and query-based access

Когда обработка завершится, в службе "Поиск Azure" будет создан индекс поиска, состоящий из обогащенных документов с возможностью текстового поиска по ним.When processing is finished, you have a search index consisting of enriched documents, fully text-searchable in Azure Search. Запросы по индексу позволяют разработчикам и пользователям получить доступ к обогащенному содержимому, созданному конвейером индексирования.Querying the index is how developers and users access the enriched content generated by the pipeline.

Индекс со значком поискаIndex with search icon

Такой индекс действует так же, как любой другой индекс в службе "Поиск Azure", и вы можете дополнить его пользовательскими анализаторами, применить поисковые запросы нечетких соответствий, добавить фильтрацию или настроить профили оценки, чтобы сформировать результаты поиска.The index is like any other you might create for Azure Search: you can supplement with custom analyzers, invoke fuzzy search queries, add filtered search, or experiment with scoring profiles to reshape the search results.

Индексы создаются на основе схемы индекса, в которой определены поля, атрибуты и другие конструкции для конкретного индекса, в том числе профили оценки и карты синонимов.Indexes are generated from an index schema that defines the fields, attributes, and other constructs attached to a specific index, such as scoring profiles and synonym maps. После создания и первичного заполнения индекса можно выполнять индивидуальные операции индексирования для учета новых и обновленных исходных документов.Once an index is defined and populated, you can index incrementally to pick up new and updated source documents. Некоторые изменения данных потребуют полного перестроения индекса.Certain modifications require a full rebuild. Пока структура схемы не будет достаточно стабильной, ограничьтесь небольшим набором данных.You should use a small data set until the schema design is stable. Дополнительные сведения см. в статье How to rebuild an Azure Search index (Как перестроить индекс для службы "Поиск Azure").For more information, see How to rebuild an index.

Основные возможности и концепцииKey features and concepts

КонцепцияConcept ОПИСАНИЕDescription СсылкиLinks
Набор навыковSkillset Именованный ресурс верхнего уровня, содержащий коллекцию навыков.A top-level named resource containing a collection of skills. Набор навыков определяет конвейер обогащения.A skillset is the enrichment pipeline. Он применяется индексатором во время индексирования.It is invoked during indexing by an indexer. Определение набора навыковDefine a skillset
Когнитивный навыкCognitive skill Атомарное преобразование в конвейере обогащения.An atomic transformation in an enrichment pipeline. Часто этот компонент извлекает или предполагает структуру, расширяя доступное понимание входных данных.Often, it is a component that extracts or infers structure, and therefore augments your understanding of the input data. Результат преобразования почти всегда имеет текстовый вид, например при обработке естественной речи и обработке изображений извлекается текст из изображений или создается текст на их основе.Almost always, the output is text-based and the processing is natural language processing or image processing that extracts or generates text from image inputs. Выходные данные навыка можно сопоставить с определенным полем индекса или передать в качестве входных данных для последующих операций обогащения.Output from a skill can be mapped to a field in an index, or used as an input for a downstream enrichment. Вы можете использовать стандартные навыки, предоставленные корпорацией Майкрософт, или создать и развернуть собственные настраиваемые навыки.A skill is either predefined and provided by Microsoft, or custom: created and deployed by you. Предопределенные навыкиPredefined skills
Извлечение данныхData extraction Охватывает широкий спектр операций обработки, но при когнитивном поиске навык распознавания сущностей чаще всего используется для извлечения данных (сущности) из источника, который не предоставляет эту информацию естественным образом.Covers a broad range of processing, but pertaining to cognitive search, the entity recognition skill is most typically used to extract data (an entity) from a source that doesn't provide that information natively. Навык распознавания сущностейEntity Recognition Skill
Обработка изображенийImage processing Формирует текст на основе изображения, например распознает ориентиры или извлекает текст из изображения.Infers text from an image, such as the ability to recognize a landmark, or extracts text from an image. Самые стандартные варианты применения — это распознавание текста из файла отсканированного документа (например, JPEG) или поиск названий улиц на фотографиях со знаками и вывесками.Common examples include OCR for lifting characters from a scanned document (JPEG) file, or recognizing a street name in a photograph containing a street sign. Навык анализа изображений или навык распознавания текстаImage Analysis Skill or OCR Skill
Обработка естественного языкаNatural language processing Обработка текста для получения аналитических сведений о текстовых входных данных.Text processing for insights and information about text inputs. Определение языка, анализ тональности и извлечения ключевых фраз — вот основные примеры навыков, относящихся к обработке естественной речи.Language detection, sentiment analysis, and key phrase extraction are skills that fall under natural language processing. Навык извлечения ключевых фраз, навык распознавания языка, навык анализа тональностиKey Phrase Extraction Skill, Language Detection Skill, Sentiment Analysis Skill
Открытие документовDocument cracking Процесс извлечения или создание текстового содержимого из нетекстовых источников во время индексирования.The process of extracting or creating text content from non-text sources during indexing. В качестве примера можно упомянуть оптическое распознавание символов, но чаще этот термин относится к базовой функциональности индексатора, то есть к извлечению содержимого из файлов приложения.Optical character recognition (OCR) is an example, but generally it refers to core indexer functionality as the indexer extracts content from application files. Для успешного открытия документов важно, чтобы источник данных сообщал расположение исходных файлов, а в определении индексатора были настроены сопоставления для полей.The data source providing source file location, and the indexer definition providing field mappings, are both key factors in document cracking. См. статью об индексаторах.See Indexers
ФормированиеShaping Объединение фрагментов текста в более крупные структуры или разделение фрагментов текста на меньшие части для дальнейшей обработки.Consolidate text fragments into a larger structure, or conversely break down larger text chunks into a manageable size for further downstream processing. Навык формирования, навык слияния текста, навык разделения текстаShaper Skill, Text Merger Skill, Text Split Skill
Обогащенные документыEnriched documents Переходная внутренняя структура, создаваемая во время обработки, конечный результат которой отражается в индексе поиска.A transitory internal structure, generated during processing, with final output reflected in a search index. Набор навыков определяет, какие улучшения выполняются.A skillset determines which enrichments are performed. Сопоставления полей определяют, какие элементы данных добавляются в индекс.Field mappings determine which data elements are added to the index. При необходимости можно создать хранилище знаний для сохранения и изучения улучшенных документов с помощью таких инструментов, как Обозреватель службы хранилища, Power BI или любой другой инструмент, который подключается к хранилищу BLOB-объектов Azure.Optionally, you can create a knowledge store to persist and explore enriched documents using tools like Storage Explorer, Power BI, or any other tool that connects to Azure Blob storage. Ознакомьтесь с разделом Хранилище знаний (предварительная версия).See Knowledge store (preview).
ИндексаторIndexer Программа-обходчик, которая извлекает доступные для поиска данные и метаданные из внешнего источника данных, а затем заполняет индекс, сопоставляя поля в индексе и источнике данных для открытия документа.A crawler that extracts searchable data and metadata from an external data source and populates an index based on field-to-field mappings between the index and your data source for document cracking. Чтобы применить обогащения на основе когнитивного поиска, индексатор вызывает набор навыков и передает соответствующие обогащения в определенные целевые поля индекса.For cognitive search enrichments, the indexer invokes a skillset, and contains the field mappings associating enrichment output to target fields in the index. Определение индексатора содержит все инструкции и ссылки для операций конвейера, который вызывается при запуске индексатора.The indexer definition contains all of the instructions and references for pipeline operations, and the pipeline is invoked when you run the indexer. ИндексаторыIndexers
источник данныхData Source Объект, используемый для подключения индексатора к внешнему источнику данных из числа поддерживаемых в Azure типов.An object used by an indexer to connect to an external data source of supported types on Azure. См. статью об индексаторах.See Indexers
ИндексIndex Сохраняемый индекс поиска в службе "Поиск Azure", составленный в соответствии со схемой индекса, в которой определяются структура и способы использования полей.A persisted search index in Azure Search, built from an index schema that defines field structure and usage. Индексы в службе поиска AzureIndexes in Azure Search

С чего начать?Where do I start?

Шаг 1. Создание индекса службы "Поиск Azure"Step 1: Create an Azure Search resource

Шаг 2. Выполнение кратких руководств и изучение примеровStep 2: Try some quickstarts and examples for hands-on experience

Мы рекомендуем пользоваться бесплатной версией службы в учебных целях обучения. Но учтите, что число бесплатных транзакций ограничено 20 документами в день.We recommend the Free service for learning purposes, but be aware that the number of free transactions is limited to 20 documents per day. Чтобы выполнить краткое руководство и руководство за один день, используйте небольшой набор файлов (из 10 документов), что позволит выполнить оба упражнения.To run both the quickstart and tutorial in one day, use a smaller file set (10 documents) so that you can fit in both exercises.

Шаг 3. Изучите API.Step 3: Review the API

Вы можете использовать REST API версии api-version=2019-05-06 с запросами или с пакетом SDK для .NET.You can use REST api-version=2019-05-06 on requests or the .NET SDK.

На этом шаге для создания решения когнитивного поиска используются интерфейсы REST API.This step uses the REST APIs to build a cognitive search solution. Только два API-интерфейса можно добавить или расширить для когнитивного поиска.Only two APIs are added or extended for cognitive search. Все остальные API сохраняют тот же синтаксис, что и в общедоступной версии.Other APIs have the same syntax as the generally available versions.

REST APIREST API ОПИСАНИЕDescription
Создание источника данныхCreate Data Source Ресурс, определяющий внешний источник данных с исходными данными, которые будут применены для создания обогащенных документов.A resource identifying an external data source providing source data used to create enriched documents.
Создание набора навыков (api-version=2019-05-06)Create Skillset (api-version=2019-05-06) Ресурс, описывающий использование стандартных навыков и пользовательских когнитивных навыков в конвейере обогащения данных во время индексирования.A resource coordinating the use of predefined skills and custom cognitive skills used in an enrichment pipeline during indexing.
Создание индексаCreate Index Схема, описывающая индекс службы "Поиск Azure".A schema expressing an Azure Search index. Поля в этом индексе сопоставляются с полями в источнике данных или с полями, созданным на этапе обогащения (например, поле с названиями организаций, созданное навыком распознавания сущностей).Fields in the index map to fields in source data or to fields manufactured during the enrichment phase (for example, a field for organization names created by entity recognition).
Создание индексатора (api-version=2019-05-06)Create Indexer (api-version=2019-05-06) Ресурс, определяющий компоненты для процесса индексирования, в том числе источник данных, набор навыков, сопоставлений полей источника и промежуточных структур с полями целевого индекса, определение индекса.A resource defining components used during indexing: including a data source, a skillset, field associations from source and intermediary data structures to target index, and the index itself. При запуске индексатора активируется процесс приема и обогащения данных.Running the indexer is the trigger for data ingestion and enrichment. На выходе формируется индекс поиска, который основан на схеме индекса и заполнен исходными данными, обогащенными с помощью наборов навыков.The output is a search index based on the index schema, populated with source data, enriched through skillsets.

Контрольный список: стандартный рабочий процессChecklist: A typical workflow

  1. Выделите репрезентативную выборку из набора исходных данных в Azure.Subset your Azure source data into a representative sample. Индексирование занимает немало времени, поэтому лучше начать с небольшого репрезентативного набора данных, который вы будете поэтапно развивать параллельно с разработкой решения.Indexing takes time so start with a small, representative data set and then build it up incrementally as your solution matures.

  2. Создайте объект источника данных в службе "Поиск Azure", чтобы указать строку подключения для получения данных.Create a data source object in Azure Search to provide a connection string for data retrieval.

  3. Создайте набор навыков с действиями для обогащения.Create a skillset with enrichment steps.

  4. Определите схему индекса.Define the index schema. Коллекция Поля содержит поля источника данных.The Fields collection includes fields from source data. Также здесь нужно предусмотреть заглушки для дополнительных полей, в которых будет сохраняться содержимое, созданное на этапе обогащения.You should also stub out additional fields to hold generated values for content created during enrichment.

  5. Определите индексатор со ссылками на источник данных, набор навыков и индекс.Define the indexer referencing the data source, skillset, and index.

  6. Добавьте в этот индексатор outputFieldMappings.Within the indexer, add outputFieldMappings. Этот раздел сопоставляет выходные данные, полученные от набора навыков (шаг 3), с полями входных данных в схеме индекса (шаг 4).This section maps output from the skillset (in step 3) to the inputs fields in the index schema (in step 4).

  7. Отправьте только что созданный запрос на создание индексатора (запрос POST с определением индексатора в тексте запроса), чтобы определить индексатор в службе "Поиск Azure".Send Create Indexer request you just created (a POST request with an indexer definition in the request body) to express the indexer in Azure Search. Именно этот шаг запускает ваш индексатор и начинает работу конвейера.This step is how you run the indexer, invoking the pipeline.

  8. Выполните тестовые запросы для оценки результатов, и при необходимости измените код, обновив набор навыков, схемы или конфигурацию индексатора.Run queries to evaluate results and modify code to update skillsets, schema, or indexer configuration.

  9. Выполните сброс индексатора, прежде чем перестроить конвейер.Reset the indexer before rebuilding the pipeline.

Дополнительные сведения о некоторых вопросах и проблемах см. в статье Советы по устранению неполадок с когнитивным поиском.For more information about specific questions or problems, see Troubleshooting tips.

Дополнительная информацияNext steps