Metadata-Version: 2.1
Name: jina
Version: 2.7.1.dev3
Summary: Jina is the cloud-native neural search framework for any kind of data
Home-page: https://github.com/jina-ai/jina/
Author: Jina AI
Author-email: hello@jina.ai
License: Apache 2.0
Download-URL: https://github.com/jina-ai/jina/tags
Project-URL: Documentation, https://docs.jina.ai
Project-URL: Source, https://github.com/jina-ai/jina/
Project-URL: Tracker, https://github.com/jina-ai/jina/issues
Description: <p align="center">
        <a href="https://docs.jina.ai"><img src="https://github.com/jina-ai/jina/blob/master/docs/_static/logo-light.svg?raw=true" alt="Jina logo: Jina is a cloud-native neural search framework" width="200px"></a>
        </p>
        
        <p align="center">
        <b>Cloud-Native Neural Search<sup><a href="https://docs.jina.ai/get-started/neural-search/">?</a></sup> Framework for <i>Any</i> Kind of Data</b>
        </p>
        
        
        <p align=center>
        <a href="https://pypi.org/project/jina/"><img src="https://github.com/jina-ai/jina/blob/master/.github/badges/python-badge.svg?raw=true" alt="Python 3.7 3.8 3.9" title="Jina supports Python 3.7 and above"></a>
        <a href="https://pypi.org/project/jina/"><img src="https://img.shields.io/pypi/v/jina?color=%23099cec&amp;label=PyPI&amp;logo=pypi&amp;logoColor=white" alt="PyPI"></a>
        <a href="https://hub.docker.com/r/jinaai/jina/tags"><img src="https://img.shields.io/docker/v/jinaai/jina?color=%23099cec&amp;label=Docker&amp;logo=docker&amp;logoColor=white&amp;sort=semver" alt="Docker Image Version (latest semver)"></a>
        <a href="https://codecov.io/gh/jina-ai/jina"><img src="https://codecov.io/gh/jina-ai/jina/branch/master/graph/badge.svg" alt="codecov"></a>
        <a href="https://slack.jina.ai"><img src="https://img.shields.io/badge/Slack-2.2k%2B-blueviolet?logo=slack&amp;logoColor=white"></a>
        </p>
        
        <!-- start jina-description -->
        
        Jina is a neural search framework that empowers anyone to build SOTA and scalable neural search applications in minutes.
        
        ⏱️ **Save time** - *The* design pattern of neural search systems. Quickly build solutions of indexing, querying, understanding multi-/cross-modal data such as video, image, text, audio, source code, PDF.
        
        🌩️ **Local & cloud friendly** - Distributed architecture, scalable & cloud-native from day one. Same developer experience on local, [Docker compose](https://docs.jina.ai/how-to/docker-compose/), [Kubernetes](https://docs.jina.ai/how-to/kubernetes/).
        
        🚀 **Serve, scale & share** - Serve a local project with HTTP, WebSockets or gRPC endpoints in just minute. Scale your neural search applications to meet your availability and throughput requirements. Share and reuse building blocks from [Hub](https://hub.jina.ai).
        
        🍱 **Own your stack** - Keep end-to-end stack ownership of your solution. Avoid integration pitfalls you get with fragmented, multi-vendor, generic legacy tools. Enjoy the integration with the neural search ecosystem including [DocArray](https://docarray.jina.ai), [Hub](https://hub.jina.ai) and [Finetuner](https://finetuner.jina.ai).
        
        <!-- end jina-description -->
        
        ## Install 
        ```bash
        pip install jina
        ```
        
        For Jina 2.x users, please follow the below and [read the migration guide](https://docs.jina.ai/get-started/migrate/):
        
        ```bash
        pip uninstall jina && pip install jina
        ```
        
        More install options including Conda, Docker, and Windows [can be found here](https://docs.jina.ai/get-started/install/).
        
        ## [Documentation](https://docs.jina.ai)
        
        ## Get Started
        
        
        <p align="center">
        <a href="https://docs.jina.ai"><img src="https://github.com/jina-ai/jina/blob/master/.github/images/readme-get-started.svg?raw=true" alt="Get started with Jina to build production-ready neural search solution via ResNet in less than 20 minutes" width="100%"></a>
        </p>
        
        We promise you can build a **scalable** ResNet-powered image search **service** in 20 minutes or less, **from scratch to Kubernetes**. If not, you can forget about Jina.
        
        ### Basic Concepts
        
        Document, Executor and Flow are three fundamental concepts in Jina.
        
        - [**Document**](https://docarray.jina.ai/) is a data structure contains multi-modal data.
        - [**Executor**](https://docs.jina.ai/fundamentals/executor/) is a self-contained component and performs a group of tasks on Documents.
        - [**Flow**](https://docs.jina.ai/fundamentals/flow/) ties Executors together into a processing pipeline, provides scalability and facilitates deployments in the cloud.
        
        Leveraging these three concepts, let's build a simple image search with the [Totally Looks Like](https://sites.google.com/view/totally-looks-like-dataset) dataset. This is a microservice version of the [DocArray example](https://github.com/jina-ai/docarray#a-complete-workflow-of-visual-search). 
        
        ### Create `Executor` for embedding and storing images
        
        <sup>
        Preliminaries: <a href="https://sites.google.com/view/totally-looks-like-dataset">download dataset</a>, <a href="https://pytorch.org/get-started/locally/">install PyTorch & Torchvision</a>
        </sup>
        
        We first build an Executor generating embeddings with PyTorch and ResNet50:
        
        ```python
        from jina import Executor, requests
        from docarray import Document, DocumentArray
        
        
        class ImageEmbeddingExecutor(Executor):
            def __init__(self, **kwargs):
                super().__init__(**kwargs)
                import torchvision
        
                self.model = torchvision.models.resnet50(pretrained=True)
        
            @requests
            def embedding(self, docs: DocumentArray, **kwargs):
                docs.apply(self.preproc)  # preprocess images
                docs.embed(self.model, device='cuda')  # embed via GPU to speed up
        
            def preproc(self, d: Document):
                return (
                    d.load_uri_to_image_tensor()  # load
                    .set_image_tensor_shape((200, 200))  # resize all to 200x200
                    .set_image_tensor_normalization()  # normalize color
                    .set_image_tensor_channel_axis(-1, 0)
                )  # switch color axis for the PyTorch model later
        ```
        
        We need to build the second Executor for storing and retrieving images:
        
        ```python
        class IndexExecutor(Executor):
        
            _docs = DocumentArray()
        
            @requests(on='/index')  # set the function to handle the `/index` endpoint
            def index(self, docs: DocumentArray, **kwargs):
                self._docs.extend(docs)
                docs.clear()  # save bandwidth as it is not needed
        
            @requests(on='/search')  # set the function to handle the `/search` endpoint
            def search(self, docs: DocumentArray, **kwargs):
                docs.match(self._docs, limit=9)  # limit to returning top 9 matches
                docs[...].embeddings = None  # save bandwidth as it is not needed
                docs[...].blobs = None  # save bandwidth as it is not needed
        ```
        
        
        ### Orchestrate Executors in a Flow
        
        Building a Flow to wire up the Executors, we can index some images and start searching by sending requests to the Flow APIs. 
        
        > Note that we only index the 100 images now for quick reproducible demo:
        
        ```python
        from jina import Client, Flow, DocumentArray, Document
        
        img_dataset = DocumentArray.from_files('left/*.jpg')[:100]
        
        if __name__ == '__main__':
            f = Flow(port_expose=12345).add(uses=ImageEmbeddingExecutor).add(uses=IndexExecutor)
            
            with f:        
                client = Client(port=12345)
                client.post('/index', img_dataset)
                
                query_img = Document(uri='right/000001.jpg')
                
                response = client.post('/search', query_img)
                (
                    response[0]
                    .docs[0]
                    .matches.apply(
                        lambda d: d.set_image_tensor_channel_axis(
                            0, -1
                        ).set_image_tensor_inv_normalization()
                    )
                    .plot_image_sprites(output='matches.png')
                )  # save the matched images
        ```
        
        <p align="center">
        <img alt="Shell outputs running Flow" src="https://github.com/jina-ai/jina/blob/master/.github/images/readme-orchestrate-executors.png" title="running Flow" width="60%"/>
        </p>
        
        
        You will find the query image at `query.png` and the top 9 matches at `matches.png`. 
        This is everything: You just level up your neural search application as an API service! 🎉
        
        <p align="center">
        <a href="https://docs.jina.ai"><img src="https://github.com/jina-ai/jina/blob/master/.github/images/readme-totally-look-like.png?raw=true" alt="Visualizing Top 9 Matches" width="60%"></a>
        </p>
        
        
        If you want to expose your application with a REST API so that you can send HTTP requests, 
        just set the protocol of the Flow to `http`:
        
        ```python
        from jina import Flow
        
        if __name__ == '__main__':
            f = (
                Flow(protocol='http', port_expose=12345)
                .add(uses=ImageEmbeddingExecutor)
                .add(uses=IndexExecutor)
            )
            
            with f:
                f.block()
        ```
        
        Now you can use cURL to send search requests:
        ```bash
        curl -X POST http://127.0.0.1:12345/search -H 'Content-type: application/json' -d '{"data":[{"uri": "<data_set_path>/right/00000.jpg"}]}' > curl_response
        ```
        
        ### Use Docker Compose or Kubernetes
        
        If we want to further upgrade your Flow with Docker Compose or Kubernetes, we will first need to containerize the Executors. 
        The easiest way to do that is by using [Jina Hub](https://hub.jina.ai).
        
        Move each of the two Executors to a separate folder with one Python file in each:
           - `ImageEmbeddingExecutor` -> 📁 `embed_img/exec.py`
           - `IndexExecutor` -> 📁 `match_img/exec.py`
           
        Create a `requirements.txt` in `embed_img` and add `torchvision` as a requirement.
        
        ```shell
        .
        ├── embed_img
        │     ├── exec.py  # copy-paste codes of ImageEmbeddingExecutor
        │     └── requirements.txt  # add the requirement `torchvision`
        └── match_img
              └── exec.py  # copy-paste codes of IndexExecutor
        ```
        
        Push all Executors to [Jina Hub](https://hub.jina.ai). (**Important**: Write down the string you get for the usage. It looks like this `jinahub://1ylut0gf`)
        ```bash
        jina hub push embed_img  # publish at jinahub+docker://1ylut0gf  
        jina hub push match_img  # publish at jinahub+docker://258lzh3c 
        ```
        
        You will get two Hub Executors that can be used for any container.
        
        <p align="center">
        <img alt="Shell outputs publishing Executors" src="https://github.com/jina-ai/jina/blob/master/.github/images/readme-publish-executors.png" title="publish executors" width="60%"/>
        </p>
        
        #### Run Flow with Docker Compose
        
        A Flow can generate a Docker Compose configuration file so that you can easily start a Flow via `docker-compose up`.
        
        Replace the `uses` arguments in the Flow with the values you have got from Jina Hub from previous steps. This will run the Flow with containerized Executors.
        
        Generate the docker compose configuration from the Flow using one line of Python code. 
        
        ```python
        f = (
            Flow(protocol='http', port_expose=12345)
            .add(uses='jinahub+docker://1ylut0gf')
            .add(uses='jinahub+docker://258lzh3c')
        )
        f.to_docker_compose_yaml()  # By default, stored at `docker-compose.yml`
        ```
        
        ```shell
        Flow@62548[I]:Docker compose file has been created under docker-compose.yml. You can use it by running `docker-compose up -f docker-compose.yml`
        ```
           
        Now you can start your neural search application with docker compose.
        
        ```shell
        docker-compose up
        ```
        
        <p align="center">
        <img alt="Shell outputs running docker-compose" src="https://github.com/jina-ai/jina/blob/master/.github/images/readme-docker-compose.png" title="outputs of docker-compose"  width="60%"/>
        </p>
        
        #### Deploy Flow with Kubernetes
        
        You can easily deploy a Flow with containerized Executors to a Kubernetes cluster as well.
        
        Create a Kubernetes cluster and get credentials (example in GCP, [more K8s providers here](https://docs.jina.ai/advanced/experimental/kubernetes/#preliminaries)):
        ```bash
        gcloud container clusters create test --machine-type e2-highmem-2  --num-nodes 1 --zone europe-west3-a
        gcloud container clusters get-credentials test --zone europe-west3-a --project jina-showcase
        ```
        
        Create a namespace `flow-k8s-namespace` for demonstration purpose ,
        ```bash
        kubectl create namespace flow-k8s-namespace
        ```
        
        Generate the kubernetes configuration files using one line of code:
        ```python
        f.to_k8s_yaml('./k8s_config', k8s_namespace='flow-k8s-namespace')
        ```
        
        ```shell
        k8s_config
        ├── executor0
        │     ├── executor0-head.yml
        │     └── executor0.yml
        ├── executor1
        │     ├── executor1-head.yml
        │     └── executor1.yml
        └── gateway
              └── gateway.yml
        ```
        
        Use `kubectl` to deploy your neural search application: 
        
        ```shell
        kubectl apply -R -f ./k8s_config
        ```
        
        <p align="center">
        <img alt="Shell outputs running k8s" src="https://github.com/jina-ai/jina/blob/master/.github/images/readme-k8s.png" title="kubernetes outputs" width="60%"/>
        </p>
        
        Run port forwarding so that you can send requests to our Kubernetes application from local CLI : 
        
        ```shell
        kubectl port-forward svc/gateway -n flow-k8s-namespace 12345:12345
        ```
        
        Now we have the Flow up running in Kubernetes and we can use the `Client` or cURL to send requests. 
        
        > Note that we are running everything in the cloud and make sure the image URIs are accessible from the Kubernetes cluster.
        
        
        ## Run Quick Demo
        
        - [👗 Fashion image search](https://docs.jina.ai/get-started/hello-world/fashion/): `jina hello fashion`
        - [🤖 QA chatbot](https://docs.jina.ai/get-started/hello-world/covid-19-chatbot/): `pip install "jina[demo]" && jina hello chatbot`
        - [📰 Multimodal search](https://docs.jina.ai/get-started/hello-world/multimodal/): `pip install "jina[demo]" && jina hello multimodal`
        - 🍴 Fork the source of a demo to your folder: `jina hello fork fashion ../my-proj/`
        - Create a new Jina project: `jina new hello-jina`
        
        <!-- start support-pitch -->
        
        ## Support
        
        - Join our [Slack community](https://slack.jina.ai) to chat to our engineers about your use cases, questions, and
          support queries.
        - Join our [Engineering All Hands](https://youtube.com/playlist?list=PL3UBBWOUVhFYRUa_gpYYKBqEAkO4sxmne) meet-up to
          discuss your use case and learn Jina's new features.
            - **When?** The second Tuesday of every month
            - **Where?**
              Zoom ([see our public calendar](https://calendar.google.com/calendar/embed?src=c_1t5ogfp2d45v8fit981j08mcm4%40group.calendar.google.com&ctz=Europe%2FBerlin)/[.ical](https://calendar.google.com/calendar/ical/c_1t5ogfp2d45v8fit981j08mcm4%40group.calendar.google.com/public/basic.ics)/[Meetup
              group](https://www.meetup.com/jina-community-meetup/))
              and [live stream on YouTube](https://youtube.com/c/jina-ai)
        - Subscribe to the latest video tutorials on our [YouTube channel](https://youtube.com/c/jina-ai)
        
        ## Join Us
        
        Jina is backed by [Jina AI](https://jina.ai) and licensed under [Apache-2.0](./LICENSE).
        [We are actively hiring](https://jobs.jina.ai) AI engineers, solution engineers to build the next neural search
        ecosystem in open source.
        
        <!-- end support-pitch -->
        
        ## Contributing
        
        We welcome all kinds of contributions from the open-source community, individuals and partners. We owe our success to
        your active involvement.
        
        - [Release cycles and development stages](RELEASE.md)
        - [Contributing guidelines](CONTRIBUTING.md)
        - [Code of conduct](https://github.com/jina-ai/jina/blob/master/.github/CODE_OF_CONDUCT.md)
        
        <!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section -->
        [![All Contributors](https://img.shields.io/badge/all_contributors-205-orange.svg?style=flat-square)](#contributors-)
        <!-- ALL-CONTRIBUTORS-BADGE:END -->
        
        <!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->
        <!-- prettier-ignore-start -->
        <!-- markdownlint-disable -->
        
        
        <a href="https://jina.ai/"><img src="https://avatars1.githubusercontent.com/u/61045304?v=4" class="avatar-user" width="18px;"/></a> <a href="http://weizhen.rocks/"><img src="https://avatars3.githubusercontent.com/u/5943684?v=4" class="avatar-user" width="18px;"/></a> <a href="https://github.com/phamtrancsek12"><img src="https://avatars3.githubusercontent.com/u/14146667?v=4" class="avatar-user" width="18px;"/></a> <a href="https://github.com/gsajko"><img src="https://avatars1.githubusercontent.com/u/42315895?v=4" class="avatar-user" width="18px;"/></a> <a href="https://t.me/neural_network_engineering"><img src="https://avatars1.githubusercontent.com/u/1935623?v=4" class="avatar-user" width="18px;"/></a> <a href="https://hanxiao.io/"><img src="https://avatars2.githubusercontent.com/u/2041322?v=4" class="avatar-user" width="18px;"/></a> <a href="https://github.com/YueLiu-jina"><img src="https://avatars1.githubusercontent.com/u/64522311?v=4" class="avatar-user" width="18px;"/></a> <a href="https://github.com/nan-wang"><img src="https://avatars3.githubusercontent.com/u/4329072?v=4" class="avatar-user" width="18px;"/></a> <a href="https://github.com/tracy-propertyguru"><img src="https://avatars2.githubusercontent.com/u/47736458?v=4" class="avatar-user" width="18px;"/></a> <a href="https://www.linkedin.com/in/maanavshah/"><img src="https://avatars0.githubusercontent.com/u/30289560?v=4" class="avatar-user" width="18px;"/></a>
        <a href="https://github.com/iego2017"><img src="https://avatars3.githubusercontent.com/u/44792649?v=4" class="avatar-user" width="18px;"/></a> <a href="https://www.davidsanwald.net/"><img src="https://avatars1.githubusercontent.com/u/10153003?v=4" class="avatar-user" width="18px;"/></a> <a href="http://alexcg1.github.io/"><img src="https://avatars2.githubusercontent.com/u/4182659?v=4" class="avatar-user" width="18px;"/></a> <a href="https://github.com/shivam-raj"><img src="https://avatars3.githubusercontent.com/u/43991882?v=4" class="avatar-user" width="18px;"/></a> <a href="http://dncc.github.io/"><img src="https://avatars1.githubusercontent.com/u/126445?v=4" class="avatar-user" width="18px;"/></a> <a href="http://johnarevalo.github.io/"><img src="https://avatars3.githubusercontent.com/u/1301626?v=4" class="avatar-user" width="18px;"/></a> <a href="https://github.com/imsergiy"><img src="https://avatars3.githubusercontent.com/u/8855485?v=4" class="avatar-user" width="18px;"/></a> <a href="https://guiferviz.com/"><img src="https://avatars2.githubusercontent.com/u/11474949?v=4" class="avatar-user" width="18px;"/></a> <a href="https://github.com/rohan1chaudhari"><img src="https://avatars1.githubusercontent.com/u/9986322?v=4" class="avatar-user" width="18px;"/></a> <a href="https://www.linkedin.com/in/mohong-pan/"><img src="https://avatars0.githubusercontent.com/u/45755474?v=4" class="avatar-user" width="18px;"/></a>
        <a href="https://github.com/anish2197"><img src="https://avatars2.githubusercontent.com/u/16228282?v=4" class="avatar-user" width="18px;"/></a> <a href="https://github.com/joanna350"><img src="https://avatars0.githubusercontent.com/u/19216902?v=4" class="avatar-user" width="18px;"/></a> <a href="https://www.linkedin.com/in/madhukar01"><img src="https://avatars0.githubusercontent.com/u/15910378?v=4" class="avatar-user" width="18px;"/></a> <a href="https://github.com/maximilianwerk"><img src="https://avatars0.githubusercontent.com/u/4920275?v=4" class="avatar-user" width="18px;"/></a> <a href="https://github.com/emmaadesile"><img src="https://avatars2.githubusercontent.com/u/26192691?v=4" class="avatar-user" width="18px;"/></a> <a href="https://github.com/YikSanChan"><img src="https://avatars1.githubusercontent.com/u/17229109?v=4" class="avatar-user" width="18px;"/></a> <a href="https://github.com/Zenahr"><img src="https://avatars1.githubusercontent.com/u/47085752?v=4" class="avatar-user" width="18px;"/></a> <a href="https://github.com/JoanFM"><img src="https://avatars3.githubusercontent.com/u/19825685?v=4" class="avatar-user" width="18px;"/></a> <a href="http://yangboz.github.io/"><img src="https://avatars3.githubusercontent.com/u/481954?v=4" class="avatar-user" width="18px;"/></a> <a href="https://github.com/boussoffara"><img src="https://avatars0.githubusercontent.com/u/10478725?v=4" class="avatar-user" width="18px;"/></a>
        <a href="https://github.com/fhaase2"><img src="https://avatars2.githubusercontent.com/u/44052928?v=4" class="avatar-user" width="18px;"/></a> <a href="https://github.com/Morriaty-The-Murderer"><img src="https://avatars3.githubusercontent.com/u/12904434?v=4" class="avatar-user" width="18px;"/></a> <a href="https://github.com/rutujasurve94"><img src="https://avatars1.githubusercontent.com/u/9448002?v=4" class="avatar-user" width="18px;"/></a> <a href="https://github.com/theUnkownName"><img src="https://avatars0.githubusercontent.com/u/3002344?v=4" class="avatar-user" width="18px;"/></a> <a href="https://github.com/vltmn"><img src="https://avatars3.githubusercontent.com/u/8930322?v=4" class="avatar-user" width="18px;"/></a> <a href="https://github.com/Kavan72"><img src="https://avatars3.githubusercontent.com/u/19048640?v=4" class="avatar-user" width="18px;"/></a> <a href="https://github.com/bwanglzu"><img src="https://avatars1.githubusercontent.com/u/9794489?v=4" class="avatar-user" width="18px;"/></a> <a href="https://github.com/antonkurenkov"><img src="https://avatars2.githubusercontent.com/u/52166018?v=4" class="avatar-user" width="18px;"/></a> <a href="https://github.com/redram"><img src="https://avatars3.githubusercontent.com/u/1285370?v=4" class="avatar-user" width="18px;"/></a> <a href="https://github.com/ericsyh"><img src="https://avatars3.githubusercontent.com/u/10498732?v=4" class="avatar-user" width="18px;"/></a>
        <a href="https://github.com/festeh"><img src="https://avatars1.githubusercontent.com/u/6877858?v=4" class="avatar-user" width="18px;"/></a> <a href="http://julielab.de/Staff/Erik+F%C3%A4%C3%9Fler.html"><img src="https://avatars1.githubusercontent.com/u/4648560?v=4" class="avatar-user" width="18px;"/></a> <a href="https://www.cnblogs.com/callyblog/"><img src="https://avatars2.githubusercontent.com/u/30991932?v=4" class="avatar-user" width="18px;"/></a> <a href="https://github.com/JamesTang-jinaai"><img src="https://avatars3.githubusercontent.com/u/69177855?v=4" class="avatar-user" width="18px;"/></a> <a href="https://github.com/coolmian"><img src="https://avatars3.githubusercontent.com/u/36444522?v=4" class="avatar-user" width="18px;"/></a> <a href="http://www.joaopalotti.com/"><img src="https://avatars2.githubusercontent.com/u/852343?v=4" class="avatar-user" width="18px;"/></a> <a href="https://github.com/properGrammar"><img src="https://avatars.githubusercontent.com/u/20957896?v=4" class="avatar-user" width="18px;"/></a> <a href="https://github.com/samjoy"><img src="https://avatars.githubusercontent.com/u/3750744?v=4" class="avatar-user" width="18px;"/></a> <a href="https://gitcommit.show/"><img src="https://avatars.githubusercontent.com/u/56937085?v=4" class="avatar-user" width="18px;"/></a> <a href="https://imgbot.net/"><img src="https://avatars.githubusercontent.com/u/31427850?v=4" class="avatar-user" width="18px;"/></a>
        <a href="https://github.com/HelioStrike"><img src="https://avatars.githubusercontent.com/u/34064492?v=4" class="avatar-user" width="18px;"/></a> <a href="https://github.com/jacobowitz"><img src="https://avatars.githubusercontent.com/u/6544965?v=4" class="avatar-user" width="18px;"/></a> <a href="https://www.linkedin.com/in/nikos-nalmpantis-60650b187/"><img src="https://avatars.githubusercontent.com/u/67504154?v=4" class="avatar-user" width="18px;"/></a> <a href="https://github.com/mkhilai"><img src="https://avatars.githubusercontent.com/u/6876258?v=4" class="avatar-user" width="18px;"/></a> <a href="https://github.com/aakashjhawar"><img src="https://avatars.githubusercontent.com/u/22843890?v=4" class="avatar-user" width="18px;"/></a> <a href="https://github.com/guenthermi"><img src="https://avatars.githubusercontent.com/u/6599259?v=4" class="avatar-user" width="18px;"/></a> <a href="https://github.com/aga11313"><img src="https://avatars.githubusercontent.com/u/23415764?v=4" class="avatar-user" width="18px;"/></a> <a href="https://github.com/sephiartlist"><img src="https://avatars.githubusercontent.com/u/84024706?v=4" class="avatar-user" width="18px;"/></a> <a href="https://github.com/jyothishkjames"><img src="https://avatars.githubusercontent.com/u/937528?v=4" class="avatar-user" width="18px;"/></a> <a href="https://github.com/serge-m"><img src="https://avatars.githubusercontent.com/u/4344566?v=4" class="avatar-user" width="18px;"/></a>
        <a href="https://jina.ai/"><img src="https://avatars.githubusercontent.com/u/11627845?v=4" class="avatar-user" width="18px;"/></a> <a href="https://github.com/deepampatel"><img src="https://avatars.githubusercontent.com/u/19245659?v=4" class="avatar-user" width="18px;"/></a> <a href="https://github.com/m4rtinkoenig"><img src="ht
Keywords: jina cloud-native neural-search query search index elastic neural-network encoding embedding serving docker container image video audio deep-learning
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Education
Classifier: Intended Audience :: Science/Research
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Unix Shell
Classifier: Environment :: Console
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Operating System :: OS Independent
Classifier: Topic :: Database :: Database Engines/Servers
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Classifier: Topic :: Internet :: WWW/HTTP :: Indexing/Search
Classifier: Topic :: Scientific/Engineering :: Image Recognition
Classifier: Topic :: Multimedia :: Video
Classifier: Topic :: Scientific/Engineering
Classifier: Topic :: Scientific/Engineering :: Mathematics
Classifier: Topic :: Software Development
Classifier: Topic :: Software Development :: Libraries
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Description-Content-Type: text/markdown
Provides-Extra: scipy
Provides-Extra: devel
Provides-Extra: demo
Provides-Extra: daemon
Provides-Extra: fastapi
Provides-Extra: standard
Provides-Extra: uvicorn[standard]
Provides-Extra: docker
Provides-Extra: pathspec
Provides-Extra: rich
Provides-Extra: cryptography
Provides-Extra: filelock
Provides-Extra: requests
Provides-Extra: torch
Provides-Extra: transformers
Provides-Extra: cicd
Provides-Extra: tensorflow
Provides-Extra: torchvision
Provides-Extra: Pillow
Provides-Extra: perf
Provides-Extra: lz4
Provides-Extra: uvloop
Provides-Extra: core
Provides-Extra: numpy
Provides-Extra: protobuf
Provides-Extra: grpcio
Provides-Extra: pyyaml
Provides-Extra: docarray
Provides-Extra: pytest
Provides-Extra: test
Provides-Extra: pytest-timeout
Provides-Extra: pytest-mock
Provides-Extra: pytest-cov
Provides-Extra: coverage
Provides-Extra: pytest-repeat
Provides-Extra: pytest-asyncio
Provides-Extra: pytest-reraise
Provides-Extra: flaky
Provides-Extra: mock
Provides-Extra: requests-mock
Provides-Extra: optuna
Provides-Extra: websockets
Provides-Extra: pydantic
Provides-Extra: python-multipart
Provides-Extra: aiofiles
Provides-Extra: aiohttp
Provides-Extra: pytest-custom_exit_code
Provides-Extra: bs4
Provides-Extra: aiostream
Provides-Extra: jsonschema
Provides-Extra: dgl
Provides-Extra: black
Provides-Extra: matplotlib
Provides-Extra: portforward
Provides-Extra: kubernetes
Provides-Extra: pytest-kind
Provides-Extra: pytest-lazy-fixture
Provides-Extra: datasets
Provides-Extra: av
Provides-Extra: trimesh
Provides-Extra: paddlepaddle
Provides-Extra: onnx
Provides-Extra: onnxruntime
Provides-Extra: all
