Skip to main content

Indexify Extractor SDK to build new extractors for extraction from unstructured data

Project description

Indexify Extractor SDK

PyPI version

Indexify Extractor SDK is for developing new extractors to extract information from any unstructured data sources.

We already have a few extractors here - https://github.com/tensorlakeai/indexify If you don't find one that works for your use-case use this SDK to build one.

Install the SDK

Install the SDK from PyPi

virtualenv ve
source ve/bin/activate
pip install indexify-extractor-sdk

Implement the extractor SDK

There are two ways to implement an extractor. If you don't need any setup/teardown or additional functionality, check out the decorator:

from indexify_extractor_sdk import Content, extractor

@extractor()
def my_extractor(content: Content, params: dict) -> List[Content]:
    return [
        Content.from_text(
            text="Hello World",
            features=[
                Feature.embedding(values=[1, 2, 3]),
                Feature.metadata(json.loads('{"a": 1, "b": "foo"}')),
            ],
            labels={"url": "test.com"},
        ),
        Content.from_text(
            text="Pipe Baz",
            features=[Feature.embedding(values=[1, 2, 3])],
            labels={"url": "test.com"},
        ),
    ]

Note: @extractor() takes many parameters, check out the documentation for more details.

For more advanced use cases, check out the class:

from indexify_extractor_sdk import Content, Extractor, Feature
from pydantic import BaseModel

class InputParams(BaseModel):
    pass

class MyExtractor(Extractor):
    input_mime_types = ["text/plain", "application/pdf", "image/jpeg"]

    def __init__(self):
        super().__init__()

    def extract(self, content: Content, params: InputParams) -> List[Content]:
        return [
            Content.from_text(
                text="Hello World",
                features=[
                    Feature.embedding(values=[1, 2, 3]),
                    Feature.metadata(json.loads('{"a": 1, "b": "foo"}')),
                ],
                labels={"url": "test.com"},
            ),
            Content.from_text(
                text="Pipe Baz",
                features=[Feature.embedding(values=[1, 2, 3])],
                labels={"url": "test.com"},
            ),
        ]

    def sample_input(self) -> Content:
        return Content.from_text("hello world")

Test the extractor

You can run the extractor locally using the command line tool attached to the SDK like this, by passing some arbitrary text or a file.

indexify-extractor local my_extractor:MyExtractor --text "hello"

Deploy the extractor

Once you are ready to deploy the new extractor and ready to build pipelines with it. Package the extractor and deploy as many copies you want, and point it to the indexify server. Indexify server has two addresses, one for sending your extractor the extraction task, and another endpoint for your extractor to write the extracted content.

indexify-extractor join-server --coordinator-addr localhost:8950 --ingestion-addr:8900

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

indexify_extractor_sdk-0.0.89.tar.gz (49.4 kB view details)

Uploaded Source

Built Distribution

indexify_extractor_sdk-0.0.89-py3-none-any.whl (61.0 kB view details)

Uploaded Python 3

File details

Details for the file indexify_extractor_sdk-0.0.89.tar.gz.

File metadata

File hashes

Hashes for indexify_extractor_sdk-0.0.89.tar.gz
Algorithm Hash digest
SHA256 67d899697534f2da75a20258dc28353bac80783b01acb8c24e285e452ac81b4d
MD5 035e10be8cbd5679245e035cfe00faf8
BLAKE2b-256 1d78014da3d55f5832c3d7ded2a068d6ad5ab9d91f8ba4d0bb8f4abfaf9398b6

See more details on using hashes here.

File details

Details for the file indexify_extractor_sdk-0.0.89-py3-none-any.whl.

File metadata

File hashes

Hashes for indexify_extractor_sdk-0.0.89-py3-none-any.whl
Algorithm Hash digest
SHA256 e7d614c5faebf4b729811f23b232467697a34a618fe7f7229c749ee535fce20c
MD5 95528ba6bbec344da761b9ed9d6f5bf9
BLAKE2b-256 76ad5e30fdc8829aae0b928136464b6fe2e549e116c71c6da91db6f47650baee

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page