Extrahieren von Daten mittels Indexer

Abgeschlossen

Das Herzstück der Azure KI-Suche-Lösungen ist die Erstellung eines Indexes, der Ihren durchsuchbaren Inhalt enthält und von einem Indexer erstellt und aktualisiert wird.

Diagramm eines Indexers, der Dokumente aus einer Quelle extrahiert und einen Index erstellt.

Der Indizierungsprozess beginnt mit einer Datenquelle: dem Speicherort Ihrer ursprünglichen Datenartefakte, beispielsweise einem Azure-Blob-Speichercontainer voller Dokumente, einer Datenbank oder einem anderen Speicher.

Der Indexer automatisiert die Extraktion und Indizierung von Datenfeldern über eine Anreicherungspipeline, in der er Dokumententschlüsselung anwendet, um den Inhalt der Quelldokumente zu extrahieren, und in inkrementellen Schritten ein hierarchisches (JSON-basiertes) Dokument mit den für die Indexdefinition erforderlichen Feldern erstellt.

Das Ergebnis ist ein mit Daten gefüllter Index, der abgefragt werden kann, um bestimmte Felder aus Dokumenten zurückzugeben, die den Abfragekriterien entsprechen.

Wie Dokumente während der Indizierung erstellt werden

Bei der Indizierung wird für jede indizierte Entität ein Dokument erstellt. Während der Indizierung erstellt eine Anreicherungspipeline iterativ die Dokumente, die Metadaten aus der Datenquelle mit den von Skills extrahierten oder generierten angereicherten Feldern kombinieren. Sie können sich jedes indizierte Dokument als JSON-Struktur vorstellen, die anfänglich aus einem Dokument mit den Indexfeldern besteht, die Sie den direkt aus den Quelldaten extrahierten Feldern wie folgt zugeordnet haben:

  • Dokument
    • metadata_storage_name
    • metadata_author
    • Inhalt

Wenn die Dokumente in der Datenquelle Bilder enthalten, können Sie den Indexer so konfigurieren, dass die Bilddaten extrahiert und jedes Bild in einer normalized_images-Auflistung platziert wird, z. B.:

  • Dokument
    • metadata_storage_name
    • metadata_author
    • Inhalt
    • normalized_images
      • Bild0
      • Bild1

Durch die Normalisierung der Bilddaten können Sie die Sammlung von Bildern als Eingabe für Fähigkeiten verwenden, die Informationen aus Bilddaten extrahieren.

Jede Fähigkeit fügt dem Dokument Felder hinzu, z. B. eine Fähigkeit, die die Sprache erkennt, in der ein Dokument geschrieben wird, kann seine Ausgabe in einem Sprachfeld wie folgt speichern:

  • Dokument
    • metadata_storage_name
    • metadata_author
    • Inhalt
    • normalized_images
      • Bild0
      • Bild1
    • Sprache

Das Dokument ist hierarchisch strukturiert, und die Fähigkeiten werden auf einen bestimmten Kontext innerhalb der Hierarchie angewendet, sodass Sie die Fähigkeiten für jedes Element auf einer bestimmten Ebene des Dokuments ausführen können. Sie können z. B. eine OCR-Fähigkeit (Optische Zeichenerkennung) für jedes Bild in der normalisierten Bildsammlung ausführen, um jeden Text zu extrahieren, der sie enthalten:

  • Dokument
    • metadata_storage_name
    • metadata_author
    • Inhalt
    • normalized_images
      • Bild0
        • Text
      • Bild1
        • Text
    • Sprache

Die Ausgabefelder der einzelnen Fähigkeiten können später in der Pipeline als Eingaben für andere Fähigkeiten verwendet werden, die wiederum ihre Ausgaben in der Dokumentstruktur speichern. Beispielsweise könnten wir eine Zusammenführungsfertigkeit verwenden, um den ursprünglichen Textinhalt mit dem Text zu kombinieren, der aus jedem Bild extrahiert wurde, um ein neues merged_content Feld zu erstellen, das den gesamten Text im Dokument enthält, einschließlich Bildtext.

  • Dokument
    • metadata_storage_name
    • metadata_author
    • Inhalt
    • normalized_images
      • Bild0
        • Text
      • Bild1
        • Text
    • Sprache
    • merged_content

Die Felder in der endgültigen Dokumentstruktur am Ende der Pipeline werden den Indexfeldern vom Indexer auf eine von zwei Arten zugeordnet:

  • Felder, die direkt aus den Quelldaten extrahiert werden, sind allen Indexfeldern zugeordnet. Diese Zuordnungen können implizit sein (Felder werden automatisch in Feldern mit demselben Namen im Index zugeordnet) oder explizit (eine Zuordnung wird definiert, um einem Quellfeld ein Indexfeld zuzuordnen, häufig um das Feld in etwas nützlicher umzubenennen oder eine Funktion auf den Datenwert anzuwenden, wie er zugeordnet ist).
  • Ausgabefelder der Skills im Skillset werden explizit durch ihre hierarchische Position in der Ausgabe dem Zielfeld im Index zugeordnet.