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.

    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.

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,
    DestinationConnectorType,
    PineconeDestinationConnectorConfigInput
)

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=DestinationConnectorType.PINECONE,
                config=PineconeDestinationConnectorConfigInput(
                    index_name="<index-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> (required) - The name of the index in the Pinecone database.
  • <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.