Búsqueda de texto completo en Azure Cosmos DB for NoSQL (versión preliminar)
Azure Cosmos DB for NoSQL ofrece ahora una eficaz característica de búsqueda de texto completo en versión preliminar, diseñada para mejorar las funcionalidades de búsqueda de las aplicaciones.
Nota:
El texto completo y la búsqueda híbrida se encuentra en versión preliminar temprana y es posible que no esté disponible en todas las regiones en este momento.
¿Qué es la búsqueda de texto completo?
Azure Cosmos DB for NoSQL ofrece ahora una eficaz característica de búsqueda de texto completo en versión preliminar, diseñada para mejorar las funcionalidades de consulta de datos. Esta característica incluye técnicas avanzadas de procesamiento de texto, como lematización, detención de eliminación de palabras y tokenización, lo que permite búsquedas de texto eficaces y eficaces a través de un índice de texto especializado. La búsqueda de texto completo también incluye puntuación de texto completo con una función que evalúa la relevancia de los documentos en una consulta de búsqueda determinada. BM25, o Best Matching 25, tiene en cuenta factores como la frecuencia de términos, la frecuencia inversa de documentos y la longitud del documento para puntuar y clasificar los documentos. Esto ayuda a garantizar que los documentos más relevantes aparezcan en la parte superior de los resultados de búsqueda, mejorando la precisión y la utilidad de las búsquedas de texto.
Búsqueda de texto completo es ideal para una variedad de escenarios, entre los que se incluyen:
- Comercio electrónico: busca rápidamente productos basados en descripciones, revisiones y otros atributos de texto.
- Administración de contenido: busque eficazmente artículos, blogs y documentos.
- Soporte técnico al cliente: recupere incidencias de soporte técnico pertinentes, preguntas más frecuentes y artículos de knowledge base.
- Contenido del usuario: analice y busque contenido generado por el usuario, como publicaciones y comentarios.
- RAG para bots de chat: mejore las respuestas de bot de chat recuperando información relevante de grandes cuerpos de texto, mejorando la precisión y relevancia de las respuestas.
- Aplicaciones de inteligencia artificial multiagente: habilite varios agentes de IA para buscar y analizar de forma colaborativa grandes cantidades de datos de texto, lo que proporciona información completa y matizadas.
Uso de la búsqueda de texto completo
Nota:
Es posible que el texto completo y la búsqueda híbrida (versión preliminar) no estén disponibles en todas las regiones en este momento.
- Habilite el "Texto completo y la búsqueda híbrida para la característica de vista previa de NoSQL".
- Configure un contenedor con una directiva de texto completo y un índice de texto completo.
- Inserte los datos con propiedades de texto.
- Ejecute consultas híbridas en los datos.
Habilitación del texto completo y la búsqueda híbrida para la característica de vista previa de NoSQL
La búsqueda de texto completo, la puntuación de texto completo y la búsqueda híbrida requieren habilitar la característica de vista previa en la cuenta de Azure Cosmos DB for NoSQL antes de usarla. Siga los pasos siguientes para registrarse:
- Vaya a la página de recursos de Azure Cosmos DB for NoSQL.
- Seleccione el panel "Características" en el elemento de menú "Configuración".
- Seleccione la característica "Full-Text & Hybrid Search for NoSQL API (versión preliminar)".
- Lea la descripción de la característica para confirmar que desea habilitarla.
- Seleccione "Habilitar" para activar la funcionalidad de indexación y búsqueda de vectores.
Configuración de directivas e índices de contenedor para la búsqueda híbrida
Para usar las funcionalidades de búsqueda de texto completo, primero deberá definir dos directivas:
- Directiva de texto completo de nivel de contenedor que define las rutas de acceso que contendrán texto para las nuevas funciones del sistema de consulta de texto completo.
- Índice de texto completo agregado a la directiva de indexación que permite una búsqueda eficaz.
Directiva de texto completo
Para cada propiedad de texto que desee configurar para la búsqueda de texto completo, debe declarar tanto path
de la propiedad con texto y language
del texto. Una directiva de texto completo simple puede ser:
{
"defaultLanguage": "en-US",
"fullTextPaths": [
{
"path": "/text",
"language": "en-US"
}
]
}
La definición de varias rutas de acceso de texto se realiza fácilmente agregando otro elemento a la matriz fullTextPolicy
:
{
"defaultLanguage": "en-US",
"fullTextPaths": [
{
"path": "/text1",
"language": "en-US"
},
{
"path": "/text2",
"language": "en-US"
}
]
}
Nota:
Inglés ("en-us" como idioma) es el único idioma admitido en este momento.
Importante
Los caracteres comodín (*, []) no se admiten actualmente en la directiva de texto completo o en el índice de texto completo.
Índice de texto completo
Las operaciones de búsqueda de texto completo deben usar un índice de texto completo. Un índice de texto completo se puede definir fácilmente en cualquier directiva de índice de Azure Cosmos DB for NoSQL según el ejemplo siguiente.
{
"indexingMode": "consistent",
"automatic": true,
"includedPaths": [
{
"path": "/*"
}
],
"excludedPaths": [
{
"path": "/\"_etag\"/?"
},
],
"fullTextIndexes": [
{
"path": "/text"
}
]
}
Al igual que con las directivas de texto completo, los índices de texto completo se pueden definir en varias rutas de acceso.
{
"indexingMode": "consistent",
"automatic": true,
"includedPaths": [
{
"path": "/*"
}
],
"excludedPaths": [
{
"path": "/\"_etag\"/?"
},
],
"fullTextIndexes": [
{
"path": "/text"
},
{
"path": "/text2"
}
]
}
Consultas de búsqueda de texto completo
Las operaciones de búsqueda y puntuación de texto completo se realizan mediante las siguientes funciones del sistema en el lenguaje de consulta De Azure Cosmos DB for NoSQL:
FullTextContains
: devuelvetrue
si una cadena determinada está contenida en la propiedad especificada de un documento. Esto resulta útil en una cláusulaWHERE
cuando desea asegurarse de que las palabras clave específicas se incluyen en los documentos devueltos por la consulta.FullTextContainsAll
: devuelvetrue
si todas las cadenas especificadas están contenidas en la propiedad especificada de un documento. Esto resulta útil en una cláusulaWHERE
cuando desea asegurarse de que se incluyen varias palabras clave en los documentos devueltos por la consulta.FullTextContainsAny
: devuelvetrue
si alguna de las cadenas especificadas está contenida en la propiedad especificada de un documento. Esto resulta útil en una cláusulaWHERE
cuando desea asegurarse de que al menos una de las palabras clave se incluye en los documentos devueltos por la consulta.FullTextScore
: devuelve una puntuación. Esto solo se puede usar en una cláusulaORDER BY RANK
, donde los documentos devueltos se ordenan por la clasificación de la puntuación de texto completo, con los documentos más relevantes (puntuación más alta) en la parte superior y los documentos menos relevantes (puntuación más baja) en la parte inferior.
Estos son algunos ejemplos de cada función en uso.
FullTextContains
En este ejemplo, queremos obtener los primeros 10 resultados donde la palabra clave "bicicleta" está contenida en la propiedad c.text
.
SELECT TOP 10 *
FROM c
WHERE FullTextContains(c.text, "bicycle")
FullTextContainsAll
En este ejemplo, queremos obtener los primeros 10 resultados donde las palabras clave "rojo" y "bicicleta" están contenidas en la propiedad c.text
.
SELECT TOP 10 *
FROM c
WHERE FullTextContainsAll(c.text, "red", "bicycle")
FullTextContainsAny
En este ejemplo, queremos obtener los primeros 10 resultados donde las palabras clave "rojo" y "bicicleta" o "skateboard" se encuentran en la propiedad c.text
.
SELECT TOP 10 *
FROM c
WHERE FullTextContains(c.text, "red") AND FullTextContainsAny(c.text, "bicycle", "skateboard")
FullTextScore
En este ejemplo, queremos obtener los primeros 10 resultados en los que se incluyen "mountain" y "bicycle" y se ordenan por orden de relevancia. Es decir, los documentos que tienen estos términos con más frecuencia deben aparecer más arriba en la lista.
SELECT TOP 10 *
FROM c
ORDER BY RANK FullTextScore(c.text, ["bicycle", "mountain"])
Importante
FullTextScore solo se puede usar en la cláusula ORDER BY RANK
y no se proyecta en la instrucción SELECT
o en una cláusula WHERE
.