If you’re new to Unstructured, read this note first.Before you can create a destination connector, you must first sign in to your Unstructured account:After you sign in, the Unstructured user interface (UI) appears, which you use to get your Unstructured API key.
  1. After you sign in to your Unstructured Starter account, click API Keys on the sidebar.
    For a Team or Enterprise account, before you click API Keys, make sure you have selected the organizational workspace you want to create an API key for. Each API key works with one and only one organizational workspace. Learn more.
  2. Click Generate API Key.
  3. Follow the on-screen instructions to finish generating the key.
  4. Click the Copy icon next to your new key to add the key to your system’s clipboard. If you lose this key, simply return and click the Copy icon again.
After you create the destination connector, add it along with a source connector to a workflow. Then run the worklow as a job. To learn how, try out the hands-on Workflow Endpoint quickstart, go directly to the quickstart notebook, or watch the two 4-minute video tutorials for the Unstructured Python SDK.You can also create destination connectors with the Unstructured user interface (UI). Learn how.If you need help, email Unstructured Support at support@unstructured.io.You are now ready to start creating a destination connector! Keep reading to learn how.
Send processed data from Unstructured to Pinecone. The requirements are as follows.
  • A Pinecone account. Get an account.
  • A Pinecone API key. Get an API key.
  • A Pinecone serverless index. Create a serverless index. An existing index is not required. At runtime, the index behavior is as follows: For the Unstructured UI and Unstructured API:
    • If an existing index name is specified, and Unstructured generates embeddings, but the number of dimensions that are generated does not match the existing index’s embedding settings, the run will fail. You must change your Unstructured embedding settings or your existing index’s embedding settings to match, and try the run again.
    • If an index name is not specified, Unstructured creates a new index in your Pinecone account. If Unstructured generates embeddings, the new index’s name will be u<short-workflow-id>-<short-embedding-model-name>-<number-of-dimensions>. If Unstructured does not generate embeddings, the new index’s name will be u<short-workflow-id.
    For Unstructured Ingest:
    • If an existing index name is specified, and Unstructured generates embeddings, but the number of dimensions that are generated does not match the existing index’s embedding settings, the run will fail. You must change your Unstructured embedding settings or your existing index’s embedding settings to match, and try the run again.
    • If an index name is not specified, Unstructured creates a new index in your Pinecone account. The new index’s name will be unstructuredautocreated.
    If you create a new index or use an existing one, Unstructured recommends that all records in the target index have a field named record_id with a string data type. Unstructured can use this field to do intelligent document overwrites. Without this field, duplicate documents might be written to the index or, in some cases, the operation could fail altogether.
  • Within a Pinecone serverless index, custom namespaces are supported but are not required.
To create a Pinecone destination connector, see the following examples.
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="pinecone",
                config={
                    "index_name": "<index-name>",
                    "namespace": "<namespace-name>",
                    "api_key": "<api-key>",
                    "batch_size": <batch-size>
                }
            )
        )
    )

    print(response.destination_connector_information)
Replace the preceding placeholders as follows:
  • <name> (required) - A unique name for this connector.
  • <index-name> - The name of the index in the Pinecone database. If no value is provided, see the beginning of this article for the behavior at run time.
  • <namespace-name> - The name of any custom namespace in the Pinecone index to upsert data into. If no value is provided, the default namespace of default will be used.
  • <api-key> (required) - The Pinecone API key.
  • <batch-size> - The maximum number of records to transmit in a single batch. The default is 50 unless otherwise specified.