Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.unstructured.io/llms.txt

Use this file to discover all available pages before exploring further.

First time creating a connector? Read this first.
Send processed data from Unstructured to Azure AI Search.

Requirements

You will need: The following video shows how to fulfill the minimum set of Azure AI Search requirements:
Here are some more details about these requirements:
  • The endpoint and API key for Azure AI Search. Create an endpoint and API key.
  • The name of the index in Azure AI Search. Create an index.
    The Azure AI Search index that you use must have an index schema that is compatible with the schema of the documents that Unstructured produces for you. Unstructured cannot provide a schema that is guaranteed to work in all circumstances. This is because these schemas will vary based on your source files’ types; how you want Unstructured to partition, chunk, and generate embeddings; any custom post-processing code that you run; and other factors. You can adapt the following index schema example for your own needs. Be sure to replace <number-of-dimensions> (in three locations in the following example) with the number of dimensions of the embedding model you are using:
    {
      "name": "elements-index",
      "fields": [
        {
          "name": "id",
          "type": "Edm.String",
          "key": true
        },
        {
          "name": "record_id",
          "type": "Edm.String",
          "filterable": true
        },
        {
          "name": "element_id",
          "type": "Edm.String"
        },
        {
          "name": "text",
          "type": "Edm.String",
          "searchable": true
        },
        {
          "name": "type",
          "type": "Edm.String"
        },
        {
          "name": "metadata",
          "type": "Edm.ComplexType",
          "fields": [
            {
              "name": "orig_elements",
              "type": "Edm.String"
            },
            {
              "name": "category_depth",
              "type": "Edm.Int32"
            },
            {
              "name": "parent_id",
              "type": "Edm.String"
            },
            {
              "name": "attached_to_filename",
              "type": "Edm.String"
            },
            {
              "name": "filetype",
              "type": "Edm.String"
            },
            {
              "name": "last_modified",
              "type": "Edm.DateTimeOffset"
            },
            {
              "name": "is_continuation",
              "type": "Edm.Boolean"
            },
            {
              "name": "file_directory",
              "type": "Edm.String"
            },
            {
              "name": "filename",
              "type": "Edm.String"
            },
            {
              "name": "data_source",
              "type": "Edm.ComplexType",
              "fields": [
                {
                  "name": "url",
                  "type": "Edm.String"
                },
                {
                  "name": "version",
                  "type": "Edm.String"
                },
                {
                  "name": "date_created",
                  "type": "Edm.DateTimeOffset"
                },
                {
                  "name": "date_modified",
                  "type": "Edm.DateTimeOffset"
                },
                {
                  "name": "date_processed",
                  "type": "Edm.DateTimeOffset"
                },
                {
                  "name": "permissions_data",
                  "type": "Edm.String"
                },
                {
                  "name": "record_locator",
                  "type": "Edm.String"
                }
              ]
            },
            {
              "name": "coordinates",
              "type": "Edm.ComplexType",
              "fields": [
                {
                  "name": "system",
                  "type": "Edm.String"
                },
                {
                  "name": "layout_width",
                  "type": "Edm.Double"
                },
                {
                  "name": "layout_height",
                  "type": "Edm.Double"
                },
                {
                  "name": "points",
                  "type": "Edm.String"
                }
              ]
            },
            {
              "name": "languages",
              "type": "Collection(Edm.String)"
            },
            {
              "name": "page_number",
              "type": "Edm.String"
            },
            {
              "name": "links",
              "type": "Collection(Edm.String)"
            },
            {
              "name": "page_name",
              "type": "Edm.String"
            },
            {
              "name": "link_urls",
              "type": "Collection(Edm.String)"
            },
            {
              "name": "link_texts",
              "type": "Collection(Edm.String)"
            },
            {
              "name": "sent_from",
              "type": "Collection(Edm.String)"
            },
            {
              "name": "sent_to",
              "type": "Collection(Edm.String)"
            },
            {
              "name": "subject",
              "type": "Edm.String"
            },
            {
              "name": "section",
              "type": "Edm.String"
            },
            {
              "name": "header_footer_type",
              "type": "Edm.String"
            },
            {
              "name": "emphasized_text_contents",
              "type": "Collection(Edm.String)"
            },
            {
              "name": "emphasized_text_tags",
              "type": "Collection(Edm.String)"
            },
            {
              "name": "text_as_html",
              "type": "Edm.String"
            },
            {
              "name": "regex_metadata",
              "type": "Edm.String"
            },
            {
              "name": "detection_class_prob",
              "type": "Edm.Double"
            }
          ]
        },
        {
          "name": "embeddings",
          "type": "Collection(Edm.Single)",
          "dimensions": <number-of-dimensions>,
          "vectorSearchProfile": "embeddings-config-profile"
        }
      ],
      "vectorSearch": {
        "algorithms": [
          {
            "name": "hnsw-<number-of-dimensions>",
            "kind": "hnsw",
            "hnswParameters": {
              "m": 4,
              "efConstruction": 400,
              "efSearch": 500,
              "metric": "cosine"
            }
          }
        ],
        "profiles": [
          {
            "name": "embeddings-config-profile",
            "algorithm": "hnsw-<number-of-dimensions>"
          }
        ]
      },
      "semantic": {
        "configurations": [
          {
            "name": "default-semantic-config",
            "prioritizedFields": {
              "titleField": null,
              "prioritizedContentFields": [
                { "fieldName": "text" }
              ],
              "prioritizedKeywordsFields": []
            }
          }
        ]
      }
    }
    
    The record_id, element_id, and id fields are closely related, but each has a distinct purpose. The record_id identifies the source document.
    • For S3 and Azure Blob connectors, the record ID is a Version 5 UUID generated from the namespace and file path of the document. This ensures that the ID is deterministic and unique at the file level.
    • For all other blob connectors, the record ID is a Version 4 UUID representing a random 32-character hexadecimal string.
    • For SQL connectors, the record ID is generated from the table name and record ID of the database table.
    The element_id identifies the specific element. Source connectors generate element ID in one of the following ways, depending on the source connector:
    • A SHA-256 hash of the element’s text, its position on the page, the page number it’s on, and the name of the related file. This is to ensure that the ID is deterministic and unique at the file level.
    • A Version 4 UUID generated using random numbers.
    Older connectors generate SHA-256 hashes for element IDs, while more modern connectors generate UUIDs. Going forward, older connectors will be converted to using UUIDs as well.
    Each element from the same document contains that document’s record ID; this enables Unstructured to identify all the elements generated from a given document. If a source connector has been set to not reprocess all documents each time a workflow runs, Unstructured uses the record ID (along with the record version) to determine which documents are unchanged and should not be processed again. The id represents the actual row that Unstructured writes into the destination location. The ID is a Version 5 UUID generated from the namespace, element ID and record ID of the source document. The ID is deterministic and unique at the row level. Destination connectors process document updates in one of the following ways, depending on the connector:
    • Use the record ID to identify and delete all elements from a given document, prior to writing new elements from that document into the destination.
    • Use the ID to perform upsert operations without generating duplicate rows, ensuring that reprocessing documents is idempotent.
    See also:

Examples

To create an Azure AI Search destination connector, see the following examples. For more information on working with destination connectors using the Unstructured API, see Destination endpoints.
import os

from unstructured_client import UnstructuredClient
from unstructured_client.models.operations import CreateDestinationRequest
from unstructured_client.models.shared import CreateDestinationConnector

with UnstructuredClient(api_key_auth=os.getenv("UNSTRUCTURED_API_KEY")) as client:
    response = client.destinations.create_destination(
        request=CreateDestinationRequest(
            create_destination_connector=CreateDestinationConnector(
                name="<name>",
                type="azure_ai_search",
                config={
                    "endpoint": "<endpoint>",
                    "index": "<index>",
                    "key": "<key>"
                }
            )
        )
    )

    print(response.destination_connector_information)

Configuration settings

Replace the preceding placeholders as follows:
name
string
required
A unique name for this connector.
endpoint
string
required
The endpoint URL for Azure AI Search.
index
string
required
The name of the index for Azure AI Search.
key
string
required
The API key for Azure AI Search.