"Proyecciones" en un almacén de conocimiento en Azure AI Search

Las proyecciones definen las tablas físicas, los objetos y los archivos de un almacén de conocimiento que aceptan contenido de una canalización de enriquecimiento de Azure AI Search. Si va a crear un almacén de conocimiento, la mayor parte del trabajo consiste en definir y dar forma a las proyecciones.

En este artículo se presentan los conceptos de proyección y flujo de trabajo para que tenga algún conocimiento antes de empezar a codificar.

Las proyecciones se definen en los conjuntos de aptitudes de Azure AI Search, pero los resultados finales son las proyecciones de archivos de imagen, objetos y tablas de Azure Storage.

Projections expressed in Azure Storage

Tipos de proyecciones y uso

Un almacén de conocimiento es una construcción lógica que se expresa físicamente como una colección dispersa de tablas, objetos JSON o archivos de imagen binarios en Azure Storage.

Proyección Storage Uso
Tablas Azure Table Storage Se usa para los datos que se representan mejor como filas y columnas o cuando se necesitan representaciones detalladas de los datos (por ejemplo, como tramas de datos). Las proyecciones de tabla permiten definir una forma esquematizada, mediante una aptitud Conformador o usar el modelado insertado para especificar columnas y filas. Puede organizar el contenido en varias tablas en función de los principios de normalización conocidos. Las tablas que están en el mismo grupo se relacionan automáticamente.
Objects Azure Blob Storage Se usa cuando se necesita la representación JSON completa de los datos y los enriquecimientos en un documento JSON. Al igual que con las proyecciones de tabla, solo los objetos JSON válidos se pueden proyectar como objetos y el modelado puede ayudarle a hacerlo.
Archivos Azure Blob Storage Se usa cuando necesita guardar archivos de imagen binarios normalizados.

Definición de proyección

Las proyecciones se especifican en la propiedad "knowledgeStore" de un conjunto de aptitudes. Las definiciones de proyección se usan durante la invocación del indizador para crear y cargar objetos en Azure Storage con contenido enriquecido. Si no está familiarizado con estos conceptos, comience con el enriquecimiento con IA para obtener una introducción.

En el ejemplo siguiente se muestra la ubicación de las proyecciones en knowledgeStore y la construcción básica. El nombre, el tipo y el origen de contenido constituyen una definición de proyección.

"knowledgeStore" : {
    "storageConnectionString": "DefaultEndpointsProtocol=https;AccountName=<Acct Name>;AccountKey=<Acct Key>;",
    "projections": [
      {
        "tables": [
          { "tableName": "ks-museums-main", "generatedKeyName": "ID", "source": "/document/tableprojection" },
          { "tableName": "ks-museumEntities", "generatedKeyName": "ID","source": "/document/tableprojection/Entities/*" }
        ],
        "objects": [
          { "storageContainer": "ks-museums", "generatedKeyName": "ID", "source": "/document/objectprojection" }
        ],
        "files": [ ]
      }
    ]

Grupos de proyecciones

Las proyecciones son una matriz de colecciones complejas, lo que significa que puede especificar varios conjuntos de cada tipo. Es habitual usar un solo grupo de proyección, pero puede usar varios si los requisitos de almacenamiento incluyen la compatibilidad con diferentes herramientas y escenarios. Por ejemplo, puede usar un grupo para diseñar y depurar un conjunto de aptitudes, mientras que un segundo conjunto recopila la salida usada para una aplicación en línea y un tercero se usa para las cargas de trabajo de ciencia de datos.

La misma salida del conjunto de aptitudes se usa para rellenar todos los grupos en las proyecciones. El ejemplo siguiente muestra dos.

"knowledgeStore" : {
    "storageConnectionString": "DefaultEndpointsProtocol=https;AccountName=<Acct Name>;AccountKey=<Acct Key>;",
    "projections": [
        {
            "tables": [],
            "objects": [],
            "files": []
        }, 
        {
            "tables": [],
            "objects": [],
            "files": []
        }
    ]
}

Los grupos de proyecciones tienen las siguientes características clave de exclusividad mutua y relación.

Principio Descripción
Exclusividad mutua Cada grupo está completamente aislado de otros grupos para admitir diferentes escenarios de modelado de datos. Por ejemplo, si va a probar diferentes combinaciones y estructuras de tabla, colocaría cada conjunto en un grupo de proyección diferente para las pruebas AB. Cada grupo obtiene datos del mismo origen (árbol de enriquecimiento), pero se aísla completamente de la combinación tabla-objeto-archivo de cualquier grupo de proyección del mismo nivel.
Relación En un grupo de proyección, el contenido de las tablas, objetos y archivos está relacionado. El almacén de conocimiento usa claves generadas como puntos de referencia a un nodo primario común. Por ejemplo, considere un escenario en el que tiene un documento que contiene imágenes y texto. Puede proyectar el texto en tablas y las imágenes en archivos binarios, y tanto las tablas como los objetos tienen una columna o propiedad que contiene la dirección URL del archivo.

Proyección "origen"

El parámetro de origen es el tercer componente de una definición de proyección. Dado que las proyecciones almacenan datos de una canalización de enriquecimiento con IA, el origen de una proyección siempre es la salida de una aptitud. Por lo tanto, la salida puede ser un único campo (por ejemplo, un campo de texto traducido), pero a menudo es una referencia a una forma de datos.

Las formas de datos proceden del conjunto de aptitudes. Entre todas las aptitudes integradas proporcionadas en Azure AI Search, hay una aptitud de utilidad denominada aptitud conformador que se usa para crear formas de datos. Puede incluir aptitudes de Conformador (tantas como necesite) para admitir las proyecciones en el almacén de conocimiento.

Las formas se usan con frecuencia con proyecciones de tabla, donde la forma no solo especifica las filas que van a la tabla, sino también las columnas que se crean (también puede pasar una forma a una proyección de objeto).

Las formas pueden ser complejas y no procede analizarlas en profundidad aquí, pero en el ejemplo siguiente se muestra brevemente una forma básica. La salida de la aptitud Conformador se especifica como origen de una proyección de tabla. En la propia proyección de tabla habrá columnas para "metadata-storage_path", "reviews_text", "reviews_title", etc., tal y como se especifica en la forma.

{
    "@odata.type": "#Microsoft.Skills.Util.ShaperSkill",
    "name": "ShaperForTables",
    "description": null,
    "context": "/document",
    "inputs": [
        {
            "name": "metadata_storage_path",
            "source": "/document/metadata_storage_path",
            "sourceContext": null,
            "inputs": []
        },
        {
          "name": "reviews_text",
          "source": "/document/reviews_text"
        }, 
        {
          "name": "reviews_title",
          "source": "/document/reviews_title"
        },
        {
          "name": "reviews_username",
          "source": "/document/reviews_username"
        },
    ],
    "outputs": [
      {
        "name": "output",
        "targetName": "mytableprojection"
      }
    ]
}

Ciclo de vida de las proyecciones

Las proyecciones tienen un ciclo de vida que está asociado a los datos de origen del origen de datos. A medida que los datos se actualizan y se vuelven a indexar, las proyecciones se actualizan con los resultados de los enriquecimientos, lo que garantiza la coherencia de las proyecciones con los datos del origen de datos. Sin embargo, las proyecciones también se almacenan de forma independiente en Azure Storage. No se eliminarán cuando se elimine el indexador o el propio servicio de búsqueda.

Consumo en aplicaciones

Después de ejecutar el indizador, conéctese a las proyecciones y consuma los datos en otras aplicaciones y cargas de trabajo.

  • Use Azure Portal para comprobar la creación y el contenido de objetos en Azure Storage.

  • Use Power BI para la exploración de los datos. Esta herramienta funciona mejor cuando los datos están en Azure Table Storage. En Power BI, puede manipular los datos en tablas nuevas que son más fáciles de consultar y analizar.

  • Use datos enriquecidos en un contenedor de blobs de una canalización de ciencia de datos. Por ejemplo, puede cargar los datos de blobs en un DataFrame de Pandas.

  • Por último, si tiene que exportar los datos desde el almacén de conocimiento, Azure Data Factory tiene conectores para exportar los datos y colocarlos en la base de datos que elija.

Lista de comprobación de introducción

Recuerde que las proyecciones son exclusivas de los almacenes de conocimiento y no se usan para estructurar un índice de búsqueda.

  1. En Azure Storage, obtenga una cadena de conexión en Claves de acceso y compruebe si la cuenta es StorageV2 (de uso general V2).

  2. Mientras se encuentra en Azure Storage, familiarícese con el contenido existente en contenedores y tablas para que elija nombres que no sean de confianza para las proyecciones. Un almacén de conocimiento es una colección dispersa de tablas y contenedores. Considere la posibilidad de adoptar una convención de nomenclatura para realizar un seguimiento de los objetos relacionados.

  3. En Azure AI Search, habilite el almacenamiento en caché de enriquecimiento (versión preliminar) en el indexador y, después, ejecute el indexador para ejecutar el conjunto de aptitudes y rellenar la caché. Se trata de una característica en versión preliminar, por lo que debe asegurarse de usar la API REST en versión preliminar (api-version=2020-06-30-preview o posterior) en la solicitud del indizador. Una vez rellenada la memoria caché, puede modificar las definiciones de proyección en un almacén de conocimiento de forma gratuita (siempre que no se modifiquen las propias aptitudes).

  4. En el código, todas las proyecciones se definen únicamente en un conjunto de aptitudes. No hay propiedades de indizador (como asignaciones de campos o asignaciones de campos de salida) que se apliquen a las proyecciones. Dentro de una definición de conjunto de aptitudes, se centrará en dos áreas: la propiedad knowledgeStore y la matriz de aptitudes.

    1. En knowledgeStore, especifique las proyecciones de tabla, objeto y archivo en la sección projections. El tipo de objeto, el nombre de objeto y la cantidad (según el número de proyecciones que defina) se determinan en esta sección.

    2. En la matriz de aptitudes, determine a qué salidas de aptitud se debe hacer referencia en el source elemento de cada proyección. Todas las proyecciones tienen un origen. El origen puede ser la salida de una aptitud ascendente, pero a menudo es la salida de una aptitud Conformador. La composición de la proyección se determina a través de formas.

  5. Si va a añadir proyecciones a un conjunto de aptitudes existente, actualícelo y ejecute el indizador.

  6. Compruebe los resultados en Azure Storage. En ejecuciones posteriores, evite conflictos de nomenclatura mediante la eliminación de objetos en Azure Storage o el cambio de nombres de proyecto en el conjunto de aptitudes.

  7. Si usa proyecciones de tabla, consulte Descripción del modelo de datos de Table Service y objetivos de escalabilidad y rendimiento para Table Storage para asegurarse de que los requisitos de datos están dentro de los límites documentados de Table Storage.

Pasos siguientes

Revise la sintaxis y los ejemplos de cada tipo de proyección.