Поделиться через


Полнотекстовый поиск в Azure Cosmos DB для NoSQL (предварительная версия)

Azure Cosmos DB для NoSQL теперь предлагает мощную функцию полнотекстового поиска в предварительной версии, предназначенную для улучшения возможностей поиска приложений.

Примечание.

Полнотекстовый и гибридный поиск находится в ранней предварительной версии и может быть недоступен во всех регионах в настоящее время.

Azure Cosmos DB для NoSQL теперь предлагает мощную функцию полнотекстового поиска в предварительной версии, предназначенную для улучшения возможностей запросов к данным. Эта функция включает расширенные методы обработки текста, такие как стебли, удаление слов и маркеризация, включение эффективного и эффективного поиска текста через специализированный текстовый индекс. Полнотекстовый поиск также включает полную оценку текста с функцией, которая оценивает релевантность документов к заданному поисковому запросу. BM25 или Best Matching 25, учитывает такие факторы, как частота терминов, обратная частота документа и длина документа для оценки и ранжирования документов. Это помогает гарантировать, что наиболее релевантные документы отображаются в верхней части результатов поиска, повышая точность и полезность поиска текста.

Полнотекстовый поиск идеально подходит для различных сценариев, включая:

  • Электронная коммерция: быстро найти продукты на основе описаний, отзывов и других текстовых атрибутов.
  • Управление содержимым: эффективно искать статьи, блоги и документы.
  • Поддержка клиентов: получение соответствующих запросов в службу поддержки, часто задаваемых вопросов и база знаний статей.
  • Содержимое пользователя: анализ и поиск с помощью содержимого, созданного пользователем, например записей и комментариев.
  • RAG для чат-ботов: улучшение ответов чат-бота путем получения соответствующих сведений из крупных текстовых corpora, повышения точности и релевантности ответов.
  • Приложения ИИ с несколькими агентами: позволяет нескольким агентам ИИ совместно искать и анализировать огромные объемы текстовых данных, предоставляя комплексные и нюансы аналитических сведений.

Примечание.

Полнотекстовый и гибридный поиск (предварительная версия) может быть недоступен во всех регионах в настоящее время.

  1. Включите предварительную версию функции полнотекстового и гибридного поиска NoSQL.
  2. Настройте контейнер с полнотекстовой политикой и полнотекстовый индекс.
  3. Вставка данных с текстовыми свойствами.
  4. Выполнение гибридных запросов к данным.

Включение полнотекстового и гибридного поиска для функции предварительной версии NoSQL

Для полнотекстового поиска, полнотекстового оценки и гибридного поиска необходимо включить предварительную версию функции в учетной записи Azure Cosmos DB для NoSQL перед использованием. Выполните следующие действия, чтобы зарегистрировать:

  1. Перейдите на страницу ресурсов Azure Cosmos DB для NoSQL.
  2. В меню "Параметры" выберите область "Компоненты".
  3. Выберите функцию полнотекстового и гибридного поиска API NoSQL (предварительная версия).
  4. Ознакомьтесь с описанием функции, чтобы подтвердить ее включение.
  5. Выберите "Включить", чтобы включить векторную индексирование и возможность поиска.

Снимок экрана: функция полнотекстового и гибридного просмотра поиска в портал Azure.

Чтобы использовать возможности полнотекстового поиска, сначала необходимо определить две политики:

  • Политика полнотекстового текста на уровне контейнера, которая определяет, какие пути будут содержать текст для новых функций системы полнотекстового запроса.
  • Полнотекстовый индекс, добавленный в политику индексирования, которая обеспечивает эффективный поиск.

Политика полнотекстового текста

Для каждого текстового свойства, которое вы хотите настроить для полнотекстового поиска, необходимо объявить как свойство с текстом, так path и language текстом. Простая полнотекстовая политика может быть:

{
   "defaultLanguage": "en-US",
   "fullTextPaths": [
       {
           "path": "/text",
           "language": "en-US"
       }
   ]
}

Определение нескольких текстовых путей легко выполняется путем добавления другого элемента в fullTextPolicy массив:

{
   "defaultLanguage": "en-US",
   "fullTextPaths": [
       {
           "path": "/text1",
           "language": "en-US"
       },
       {
           "path": "/text2",
           "language": "en-US"
       }
   ]
}

Примечание.

Английский ("en-us" как язык) является единственным поддерживаемым языком в настоящее время.

Внимание

Символы подстановочных карточек (*, []) в настоящее время не поддерживаются в полнотекстовой политике или полнотекстовом индексе.

Полнотекстовый индекс

Любые операции полнотекстового поиска должны использовать полнотекстовый индекс. Полнотекстовый индекс можно легко определить в любой политике индекса Azure Cosmos DB для NoSQL в примере ниже.

{
    "indexingMode": "consistent",
    "automatic": true,
    "includedPaths": [
        {
            "path": "/*"
        }
    ],
    "excludedPaths": [
        {
            "path": "/\"_etag\"/?"
        },
    ],
    "fullTextIndexes": [
        {
            "path": "/text"
        }
    ]
}

Так же, как и в политиках полнотекстового текста, полнотекстовые индексы можно определить по нескольким путям.

{
    "indexingMode": "consistent",
    "automatic": true,
    "includedPaths": [
        {
            "path": "/*"
        }
    ],
    "excludedPaths": [
        {
            "path": "/\"_etag\"/?"
        },
    ],
    "fullTextIndexes": [
        {
            "path": "/text"
        },
        {
            "path": "/text2"
        }
    ]
}

Запросы полнотекстового поиска

Операции полнотекстового поиска и оценки выполняются с помощью следующих системных функций на языке запросов Azure Cosmos DB для NoSQL:

  • FullTextContains: возвращает, true если заданная строка содержится в указанном свойстве документа. Это полезно в WHERE предложении, если вы хотите убедиться, что конкретные ключевые слова включены в документы, возвращаемые запросом.
  • FullTextContainsAll: возвращает, true если все указанные строки содержатся в указанном свойстве документа. Это полезно в WHERE предложении, если вы хотите убедиться, что несколько ключевых слов включены в документы, возвращаемые запросом.
  • FullTextContainsAny: возвращает, true если какая-либо из указанных строк содержится в указанном свойстве документа. Это полезно в WHERE предложении, если вы хотите убедиться, что хотя бы один из ключевых слов включен в документы, возвращаемые запросом.
  • FullTextScore: возвращает оценку. Это можно использовать только в ORDER BY RANK предложении, где возвращенные документы упорядочены по рангу полнотекстового показателя, с наиболее релевантными (наивысшими оценками) документами в верхней части и по крайней мере соответствующими (наименьшими оценками) документами внизу.

Ниже приведены несколько примеров использования каждой функции.

FullTextContains

В этом примере мы хотим получить первые 10 результатов, в которых ключевое слово "велосипед" содержится в свойстве c.text.

SELECT TOP 10 *
FROM c
WHERE FullTextContains(c.text, "bicycle")

FullTextContainsAll

В этом примере мы хотим получить первые 10 результатов, в которых ключевые слова "красный" и "велосипед" содержатся в свойстве c.text.

SELECT TOP 10 *
FROM c
WHERE FullTextContainsAll(c.text, "red", "bicycle")

FullTextContainsAny

В этом примере мы хотим получить первые 10 результатов, в которых ключевые слова "красный" и "велосипед" или "скейтборд" содержатся в свойстве c.text.

SELECT TOP 10 *
FROM c
WHERE FullTextContains(c.text, "red") AND FullTextContainsAny(c.text, "bicycle", "skateboard")

FullTextScore

В этом примере мы хотим получить первые 10 результатов, в которых включены "mountain" и "велосипед" и отсортированы по порядку релевантности. То есть документы, имеющие эти термины, чаще должны отображаться выше в списке.

SELECT TOP 10 *
FROM c
ORDER BY RANK FullTextScore(c.text, ["bicycle", "mountain"])

Внимание

FullTextScore можно использовать только в предложении, а не проецироваться в ORDER BY RANK SELECT инструкции или предложении WHERE .