Полнотекстовый поиск в Azure Cosmos DB для NoSQL (предварительная версия)
Azure Cosmos DB для NoSQL теперь предлагает мощную функцию полнотекстового поиска в предварительной версии, предназначенную для улучшения возможностей поиска приложений.
Примечание.
Полнотекстовый и гибридный поиск находится в ранней предварительной версии и может быть недоступен во всех регионах в настоящее время.
Что такое полнотекстовый поиск?
Azure Cosmos DB для NoSQL теперь предлагает мощную функцию полнотекстового поиска в предварительной версии, предназначенную для улучшения возможностей запросов к данным. Эта функция включает расширенные методы обработки текста, такие как стебли, удаление слов и маркеризация, включение эффективного и эффективного поиска текста через специализированный текстовый индекс. Полнотекстовый поиск также включает полную оценку текста с функцией, которая оценивает релевантность документов к заданному поисковому запросу. BM25 или Best Matching 25, учитывает такие факторы, как частота терминов, обратная частота документа и длина документа для оценки и ранжирования документов. Это помогает гарантировать, что наиболее релевантные документы отображаются в верхней части результатов поиска, повышая точность и полезность поиска текста.
Полнотекстовый поиск идеально подходит для различных сценариев, включая:
- Электронная коммерция: быстро найти продукты на основе описаний, отзывов и других текстовых атрибутов.
- Управление содержимым: эффективно искать статьи, блоги и документы.
- Поддержка клиентов: получение соответствующих запросов в службу поддержки, часто задаваемых вопросов и база знаний статей.
- Содержимое пользователя: анализ и поиск с помощью содержимого, созданного пользователем, например записей и комментариев.
- RAG для чат-ботов: улучшение ответов чат-бота путем получения соответствующих сведений из крупных текстовых corpora, повышения точности и релевантности ответов.
- Приложения ИИ с несколькими агентами: позволяет нескольким агентам ИИ совместно искать и анализировать огромные объемы текстовых данных, предоставляя комплексные и нюансы аналитических сведений.
Использование полнотекстового поиска
Примечание.
Полнотекстовый и гибридный поиск (предварительная версия) может быть недоступен во всех регионах в настоящее время.
- Включите предварительную версию функции полнотекстового и гибридного поиска NoSQL.
- Настройте контейнер с полнотекстовой политикой и полнотекстовый индекс.
- Вставка данных с текстовыми свойствами.
- Выполнение гибридных запросов к данным.
Включение полнотекстового и гибридного поиска для функции предварительной версии NoSQL
Для полнотекстового поиска, полнотекстового оценки и гибридного поиска необходимо включить предварительную версию функции в учетной записи Azure Cosmos DB для NoSQL перед использованием. Выполните следующие действия, чтобы зарегистрировать:
- Перейдите на страницу ресурсов Azure Cosmos DB для NoSQL.
- В меню "Параметры" выберите область "Компоненты".
- Выберите функцию полнотекстового и гибридного поиска API NoSQL (предварительная версия).
- Ознакомьтесь с описанием функции, чтобы подтвердить ее включение.
- Выберите "Включить", чтобы включить векторную индексирование и возможность поиска.
Настройка политик контейнеров и индексов для гибридного поиска
Чтобы использовать возможности полнотекстового поиска, сначала необходимо определить две политики:
- Политика полнотекстового текста на уровне контейнера, которая определяет, какие пути будут содержать текст для новых функций системы полнотекстового запроса.
- Полнотекстовый индекс, добавленный в политику индексирования, которая обеспечивает эффективный поиск.
Политика полнотекстового текста
Для каждого текстового свойства, которое вы хотите настроить для полнотекстового поиска, необходимо объявить как свойство с текстом, так 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
.