Metadata-Version: 2.1
Name: jina
Version: 0.7.8
Summary: Jina is the cloud-native neural search solution powered by the state-of-the-art AI and deep learning
Home-page: https://opensource.jina.ai
Author: Jina Dev Team
Author-email: dev-team@jina.ai
License: Apache 2.0
Download-URL: https://github.com/jina-ai/jina/tags
Description: <p align="center">
        <img src="https://github.com/jina-ai/jina/blob/master/.github/logo-only.gif?raw=true" alt="Jina banner" width="200px">
        </p>
        <p align="center">
        An easier way to build neural search in the cloud
        </p>
        <p align="center">
        <a href="#quick-start">Quick Start</a> • <a href="#jina-hello-world-">Hello World</a> • <a href="#tutorials">Learn</a> • <a href="#contributing">Contribute</a> • <a href="https://jobs.jina.ai">Jobs</a> • <a href="http://jina.ai">Website</a> • <a href="http://slack.jina.ai">Slack</a>
        </p><p align=center>
        <a href="#license"><img src="https://github.com/jina-ai/jina/blob/master/.github/badges/license-badge.svg?raw=true" alt="Jina" title="Jina is licensed under Apache-2.0"></a>
        <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" 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://github.com/jina-ai/jina/actions?query=workflow%3ACI"><img src="https://github.com/jina-ai/jina/workflows/CI/badge.svg" alt="CI"></a>
        <a href="https://github.com/jina-ai/jina/actions?query=workflow%3ACD"><img src="https://github.com/jina-ai/jina/workflows/CD/badge.svg?branch=master" alt="CD"></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>
        <br>
        <sub>
          <a href="https://github.com/jina-ai/jina">English</a> •
          <a href="https://github.com/jina-ai/jina/blob/master/.github/i18n/README.fr.md">Français</a> •
          <a href="https://github.com/jina-ai/jina/blob/master/.github/i18n/README.de.md">Deutsch</a> •
          <a href="https://github.com/jina-ai/jina/blob/master/.github/i18n/README.zh.md">中文</a> •
          <a href="https://github.com/jina-ai/jina/blob/master/.github/i18n/README.ja.md">日本語</a> •
          <a href="https://github.com/jina-ai/jina/blob/master/.github/i18n/README.kr.md">한국어</a> •
          <a href="https://github.com/jina-ai/jina/blob/master/.github/i18n/README.pt_br.md">Português</a> •
          <a href="https://github.com/jina-ai/jina/blob/master/.github/i18n/README.ru.md">Русский язык</a> •
          <a href="https://github.com/jina-ai/jina/blob/master/.github/i18n/README.pt_br.md">український</a>
        </sub>
        </p>
        
        
        Jina is a deep learning-powered search framework for building <strong>cross-/multi-modal search systems</strong> (e.g. text, images, video, audio) in the cloud. 
        
        ⏱️ **Time Saver** - Bootstrap an AI-powered system in just a few minutes.
        
        🧠 **First-Class AI Models** - *The* design pattern for neural search systems, with first-class support for [state-of-the-art AI models](https://docs.jina.ai/chapters/all_exec.html).
        
        🌌 **Universal Search** - Large-scale indexing and querying of any kind of data on multiple platforms: video, image, long/short text, music, source code, etc.
        
        ☁️  **Cloud Ready** - Decentralized architecture with cloud-native features out-of-the-box: containerization, microservice, scaling, sharding, async IO, REST, gRPC.
        
        🧩 **Plug & Play** - Easily extendable with Pythonic interface.
        
        ❤️  **Made with Love** - Quality first, never compromises, maintained by a [full-time, venture-backed team](https://jina.ai).
        
        
        ## Installation
        
        On Linux/macOS with Python 3.7/3.8:
        
        ```bash
        pip install -U jina
        ```
        
        To install Jina with extra dependencies, or install on Raspberry Pi [please refer to the documentation](https://docs.jina.ai/chapters/install/via-pip.html). Windows users can use Jina via the [Windows Subsystem for Linux](https://docs.microsoft.com/en-us/windows/wsl/install-win10). We welcome the community to help us with [native Windows support](https://github.com/jina-ai/jina/issues/1252).
        
        #### In a Docker Container
        
        Our universal Docker image supports multiple architectures (including x64, x86, arm-64/v7/v6). They are ready-to-use:
        
        ```bash
        docker run jinaai/jina --help
        ```
        
        ## Jina "Hello, World!" 👋🌍
        
        As a starter, you can try "Hello, World" - a simple demo of image neural search for [Fashion-MNIST](https://hanxiao.io/2018/09/28/Fashion-MNIST-Year-In-Review/). No extra dependencies needed, just run:
        
        ```bash
        jina hello-world
        ```
        
        ...or even easier for Docker users, **no install required**:
        
        ```bash
        docker run -v "$(pwd)/j:/j" jinaai/jina hello-world --workdir /j && open j/hello-world.html  
        # replace "open" with "xdg-open" on Linux
        ```
        
        <details>
        <summary>Click here to see console output</summary>
        
        <p align="center">
          <img src="https://github.com/jina-ai/jina/blob/master/docs/chapters/helloworld/hello-world-demo.png?raw=true" alt="hello world console output">
        </p>
        
        </details>
        It downloads the Fashion-MNIST training and test dataset and tells Jina to index 60,000 images from the training set. Then it randomly samples images from the test set as queries and asks Jina to retrieve relevant results. The whole process takes about 1 minute, and eventually opens a webpage and shows results like this:
        
        <p align="center">
          <img src="https://github.com/jina-ai/jina/blob/master/docs/chapters/helloworld/hello-world.gif?raw=true" alt="Jina banner" width="80%">
        </p>
        
        Intrigued? Play with different options:
        
        ```bash
        jina hello-world --help
        ```
        
        ## Get Started
        
        #### Create
        
        Jina provides a high-level [Flow](https://github.com/jina-ai/jina/tree/master/docs/chapters/101#flow) API to ease the build of search/index workflow. To create a new Flow,
        
        ```python
        from jina.flow import Flow
        f = Flow().add()
        ```
        
        This creates a simple Flow with one [Pod](https://github.com/jina-ai/jina/tree/master/docs/chapters/101#pods). You can chain multiple `.add()` in a Flow.
        
        #### Visualize
        
        To visualize it, you can simply chain it with `.plot()`. If you are using Jupytner notebook, it will render a flowchart inline.
        
        <img src="https://github.com/jina-ai/jina/blob/master/.github/simple-flow0.svg?raw=true"/>
        
        `Gateway` is the entrypoint of the Flow. 
        
        #### Feed Data
        
        Let's try send some random data to it via index functions:
        
        ```python
        with f:
            f.index_ndarray(numpy.random.random[4,2], output_fn=print)  # index ndarray data, document sliced on first dimension
            f.index_lines(['hello world!', 'goodbye world!'])  # index textual data, each element is a document
            f.index_files(['/tmp/*.mp4', '/tmp/*.pdf'])  # index files and wildcard globs, each file is a document
            f.index((jina_pb2.Document() for _ in range(10)))  # index raw Jina Documents
        ```
        
        To use a Flow, use `with` context manager to open it, like opening a file in Python. `output_fn` is the callback function invoked once a batch is done. In the example above, our Flow simply passes the message then prints the result. The whole data stream is async and efficient.
        
        #### Add Logic
        
        To add a logic to the Flow, one can use `uses` keyword to attach Pod with an [Executor](https://github.com/jina-ai/jina/tree/master/docs/chapters/101#executors). `uses` accepts multiple types of values including: class name, Docker image, (inline) YAML, built-in shortcut.
        
        
        ```python
        f = (Flow().add(uses='MyBertEncoder')  # a class name of a Jina Executor
                   .add(uses='jinahub/pretrained-cnn:latest')  # a Dockerized Jina Pod
                   .add(uses='myencoder.yaml')  # a YAML serialization of a Jina Executor
                   .add(uses='!WaveletTransformer | {freq: 20}')  # an inline YAML config
                   .add(uses='_pass'))  # an built-in shortcut executor
        ```
        
        The power of Jina lies in its decentralized architecture: each `add` creates a new Pod, these Pods can be at local thread/process, at remote process, inside a Docker container, or even inside a remote Docker container.
        
        #### Inter & Intra Parallelism
        
        Chaining `.add()` creates a sequential Flow. To introduce parallelism, specifiy `needs` parameter:
        
        ```python
        f = (Flow().add(name='p1', needs='gateway')
                   .add(name='p2', needs='gateway')
                   .add(name='p3', needs='gateway')
                   .needs(['p1','p2', 'p3'], name='r1').plot())
        ```
        
        <img src="https://github.com/jina-ai/jina/blob/master/.github/simple-plot3.svg?raw=true"/>
        
        `p1`, `p2`, `p3` now subscribe to `Gateway` and conduct the work in parallel. The last `.needs()` block all Pods until they finish their work. Note, parallelism can be also archieved inside a Pod with `parallel`:
        
        ```python
        f = (Flow().add(name='p1', needs='gateway')
                   .add(name='p2', needs='gateway')
                   .add(name='p3', parallel=3)
                   .needs(['p1','p3'], name='r1').plot())
        ```
        
        <img src="https://github.com/jina-ai/jina/blob/master/.github/simple-plot4.svg?raw=true"/>
        
        That's all you need to know for understanding the magic behind `hello-world`. Now let's dive into it.
        
        ### Breakdown of `hello-world`
        
        #### Customize Encoder
        
        Let's first build a naive image encoder that embeds images into vectors using an orthogonal projection. To do that, we simply inherit from `BaseImageEncoder`: a base class from the `jina.executors.encoders` module. We then override its `__init__()` and `encode()` methods.
        
        
        ```python
        import numpy as np
        from jina.executors.encoders import BaseImageEncoder
        
        class MyEncoder(BaseImageEncoder):
        
            def __init__(self, *args, **kwargs):
                super().__init__(*args, **kwargs)
                np.random.seed(1337)
                H = np.random.rand(784, 64)
                u, s, vh = np.linalg.svd(H, full_matrices=False)
                self.oth_mat = u @ vh
        
            def encode(self, data: 'np.ndarray', *args, **kwargs):
                return (data.reshape([-1, 784]) / 255) @ self.oth_mat
        ```
        
        Jina provides [a family of `Executor` classes](https://github.com/jina-ai/jina/tree/master/docs/chapters/101#the-executor-family), which summarizes frequently-used algorithmic components in the neural search. This family consists of encoders, indexers, crafters, evaluators, and classifiers; each has a well-designed interface. You can find the list of [all 107 built-in executors at here](https://docs.jina.ai/chapters/all_exec.html). If they do not meet your need, inheriting from one of them is the easiest way to bootstrap your own executor. Simply use our Jina Hub CLI via:
        
        
        ```bash
        pip install jina[hub] && jina hub new
        ```
        
        #### Test Encoder in Flow
        
        Let's test our encoder in the Flow with some synthetic data:
        
        
        ```python
        def validate(docs):
            assert len(docs) == 100
            assert GenericNdArray(docs[0].embedding).value.shape == (64,)
        
        f = Flow().add(uses='MyEncoder')
        
        with f:
            f.index_ndarray(np.random.random([100, 28, 28]), output_fn=validate, callback_on='docs')
        ```
        
        All good! Now our `validate` function confirms that all one hundred 28x28 synthetic images have been embedded into 100x64 vectors. 
        
        #### Parallelism & Batching
        
        By setting the input bigger, you can play with `batch_size` and `parallel` a bit.
        
        
        ```python
        f = Flow().add(uses='MyEncoder', parallel=10)
        
        with f:
            f.index_ndarray(np.random.random([60000, 28, 28]), batch_size=1024)
        ```
        
        #### Add Data Indexer
        
        Now we need to add an indexer to store all the embeddings and the picture for later retrieval. Jina has provided a simple `numpy`-powered vector indexer `NumpyIndexer`, and a key-value indexer `BinaryPbIndexer`. We can combining them together in a single YAML file.
        
        ```yaml
        !CompoundIndexer
        components:
          - !NumpyIndexer
            with:
              index_filename: vec.gz
          - !BinaryPbIndexer
            with:
              index_filename: chunk.gz
        metas:
          workspace: ./
        ```
        
        `!` tags structure with a class name; `with` keyword defines the arguments for initializing this class object. Essentially, the above YAML config equals to the following Python code:
        
        ```python
        from jina.executors.indexers.vector import NumpyIndexer
        from jina.exeuctors.indexers.keyvalue import BinaryPbIndexer
        
        a = NumpyIndexer(index_filename='vec.gz')
        b = BinaryPbIndexer(index_filename='vec.gz')
        c = CompoundIndexer()
        c.components = lambda: [a, b]
        ```
        #### Compose Flow in Python/YAML
        
        Now adding our indexer YAML file to the flow by `.add(uses=)`. Let's also add two shards to the indexer to improve its scalability:
        
        ```python
        f = Flow().add(uses='MyEncoder', parallel=2).add(uses='myindexer.yml', shards=2, separated_workspace=True).plot()
        ```
        
        <img src="https://github.com/jina-ai/jina/blob/master/.github/simple-flow1.svg?raw=true"/>
        
        When the number of arguments become big, constructing Flow in Python could be cumbersome. One can simply move all arguments into one `flow.yml` as follows:
        
        ```yaml
        !Flow
        pods:
          encode:
            uses: MyEncoder
            parallel: 2
          index:
            uses: myindexer.yml
            shards: 2
            separated_workspace: true
        ```
        
        And then load it in Python via:
        
        ```python
        f = Flow.load_config('myflow.yml')
        ```
        
        #### Search via Query Flow
        
        Querying a Flow is very similar to what we have seen in the indexing. Simply load the query Flow and switch from `f.index` to `f.search`. Say you want to retrieve the top-50 documents that are most similar to your query and then plot them in a HTML:
        
        
        ```python
        f = Flow.load_config('flows/query.yml')
        with f:
            f.search_ndarray(shuffle=True, size=128, output_fn=plot_in_html, top_k=50)
        ```
        
        #### REST Interface of Query Flow
        
        In practice, the query Flow and the client (i.e. data sender) are often physically seperated. Moreover, the client may prefer to use REST API instead of gRPC when querying. One can set `port_expose` to the public port and turn on [REST support](https://docs.jina.ai/chapters/restapi/index.html) via `rest_api=True`:
        
        ```python
        f = Flow(port_expose=45678, rest_api=True)
        
        with f:
            f.block()
        ```
        
        
        That is the essense behind `jina hello-world`. It is just a taste of what Jina can do. We’re really excited to see what you do with Jina! You can easily create a Jina project from templates with one terminal command:
        
        ```bash
        pip install jina[hub] && jina hub new --type app
        ```
        
        This creates a Python entrypoint, YAML configs and a Dockerfile. You can start from there.
        
        ## Tutorials
        
        <table>
          <tr>
              <td width="30%">
            <a href="https://github.com/jina-ai/jina/tree/master/docs/chapters/101">
              <img src="https://github.com/jina-ai/jina/blob/master/docs/chapters/101/img/ILLUS12.png?raw=true" alt="Jina 101 Concept Illustration Book, Copyright by Jina AI Limited" title="Jina 101 Concept Illustration Book, Copyright by Jina AI Limited"/>
            </a>
            </td>
            <td width="70%">
        &nbsp;&nbsp;<h3><a href="https://github.com/jina-ai/jina/tree/master/docs/chapters/101">Jina 101: First Things to Learn About Jina</a></h3>
        &nbsp;&nbsp;<a href="https://github.com/jina-ai/jina/tree/master/docs/chapters/101">English</a> •
          <a href="https://github.com/jina-ai/jina/tree/master/docs/chapters/101/README.ja.md">日本語</a> •
          <a href="https://github.com/jina-ai/jina/tree/master/docs/chapters/101/README.fr.md">Français</a> •
          <a href="https://github.com/jina-ai/jina/tree/master/docs/chapters/101/README.pt.md">Português</a> •
          <a href="https://github.com/jina-ai/jina/tree/master/docs/chapters/101/README.de.md">Deutsch</a> •
          <a href="https://github.com/jina-ai/jina/tree/master/docs/chapters/101/README.ru.md">Русский язык</a> •
          <a href="https://github.com/jina-ai/jina/tree/master/docs/chapters/101/README.zh.md">中文</a> •
          <a href="https://github.com/jina-ai/jina/tree/master/docs/chapters/101/README.ar.md">عربية</a>
            </td>
        
          </tr>
        </table>
        
        <table>
        <tr>
        <th width="10%">Level</th>
        <th width="90%">Tutorials</th>
        </tr>
        
        <tr>
        <td><h3>🐣</h3></td>
        <td>
        <h4><a href="https://github.com/jina-ai/examples/tree/master/southpark-search">Build an NLP Semantic Search System</a></h4>
        Search South Park scripts and practice with Flows and Pods
        </td>
        </tr>
        
        <tr>
        <td><h3>🐣</h3></td>
        <td>
        <h4><a href="https://github.com/jina-ai/examples/tree/master/my-first-jina-app">My First Jina App</a></h4>
        Using cookiecutter for bootstrap a jina app
        </td>
        </tr>
        
        <tr>
        <td><h3>🐣</h3></td>
        <td>
        <h4><a href="https://github.com/jina-ai/examples/tree/master/fashion-example-query">Fashion Search with Query Language</a></h4>
        Spice up the Hello-World with Query Language
        </td>
        </tr>
        
        <tr>
        <td><h3>🕊</h3></td>
        <td>
        <h4><a href="https://github.com/jina-ai/examples/tree/master/multires-lyrics-search">Use Chunk to search Lyrics</a></h4>
        Split documents in order to search on a finegrained level
        </td>
        </tr>
        
        <tr>
        <td><h3>🕊</h3></td>
        <td>
        <h4><a href="https://github.com/jina-ai/examples/tree/master/cross-modal-search">Mix and Match images and captions</a></h4>
        Search cross modal to get images from captions and vice versa
        </td>
        </tr>
        
        <tr>
        <td><h3>🚀</h3></td>
        <td>
        <h4><a href="https://github.com/jina-ai/examples/tree/master/tumblr-gif-search">Scale Up Video Semantic Search</a></h4>
        Improve performance using prefetching and sharding
        </td>
        </tr>
        
        <!-- <tr>
        <td><h3>🐣</h3></td>
        <td>
        <h4><a href="https://github.com/jina-ai/examples/tree/master/x-as-service">From BERT-as-Service to X-as-Service</a></h4>
        Extract feature vector data using any deep learning representation
        </td>
        </tr>
        
        <tr>
        <td><h3>🚀</h3></td>
        <td>
        <h4><a href="https://github.com/jina-ai/examples/tree/master/pokedex-with-bit">Google's Big Transfer Model in (Poké-)Production</a></h4>
        Search Pokemon with state-of-the-art visual representation
        </td>
        </tr>
         -->
        </table>
        
        ## Documentation
        
        <a href="https://docs.jina.ai/">
        <img align="right" width="350px" src="https://github.com/jina-ai/jina/blob/master/.github/jina-docs.png?raw=true " />
        </a>
        
        Documentation is built on every push, merge, and release of Jina's master branch.
        
        #### The Basics
        
        - [Use Flow API to Compose Your Search Workflow](https://docs.jina.ai/chapters/flow/index.html)
        - [Input and Output Functions in Jina](https://docs.jina.ai/chapters/io/index.html)
        - [Use Dashboard to Get Insight of Jina Workflow](https://github.com/jina-ai/dashboard)
        - [Distribute Your Workflow Remotely](https://docs.jina.ai/chapters/remote/index.html)
        - [Run Jina Pods via Docker Container](https://docs.jina.ai/chapters/hub/index.html)
        
        #### Reference
        
        - [Command line interface arguments](https://docs.jina.ai/chapters/cli/index.html)
        - [Python API interface](https://docs.jina.ai/api/jina.html)
        - [YAML syntax for Executor, Driver and Flow](https://docs.jina.ai/chapters/yaml/yaml.html)
        - [Protobuf schema](https://docs.jina.ai/chapters/proto/index.html)
        - [Environment variables](https://docs.jina.ai/chapters/envs.html)
        - ... [and more](https://docs.jina.ai/index.html)
        
        Are you a "Doc"-star? Join us! We welcome all kinds of improvements on the documentation.
        
        [Documentation for older versions is archived here](https://github.com/jina-ai/docs/releases).
        
        ## Contributing
        
        We welcome all kinds of contributions from the open-source community, individuals and partners. We owe our success to your active involvement.
        
        - [Contributing guidelines](CONTRIBUTING.md)
        - [Release cycles and development stages](RELEASE.md)
        
        ### Contributors ✨
        
        <!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section -->
        [![All Contributors](https://img.shields.io/badge/all_contributors-82-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 -->
        
        
        <kbd><a href="https://jina.ai/"><img src="https://avatars1.githubusercontent.com/u/61045304?v=4" class="avatar-user" width="50px;"/></a></kbd> <kbd><a href="http://weizhen.rocks/"><img src="https://avatars3.githubusercontent.com/u/5943684?v=4" class="avatar-user" width="50px;"/></a></kbd> <kbd><a href="https://github.com/phamtrancsek12"><img src="https://avatars3.githubusercontent.com/u/14146667?v=4" class="avatar-user" width="50px;"/></a></kbd> <kbd><a href="https://github.com/gsajko"><img src="https://avatars1.githubusercontent.com/u/42315895?v=4" class="avatar-user" width="50px;"/></a></kbd> <kbd><a href="https://t.me/neural_network_engineering"><img src="https://avatars1.githubusercontent.com/u/1935623?v=4" class="avatar-user" width="50px;"/></a></kbd> <kbd><a href="https://hanxiao.io/"><img src="https://avatars2.githubusercontent.com/u/2041322?v=4" class="avatar-user" width="50px;"/></a></kbd> <kbd><a href="https://github.com/YueLiu-jina"><img src="https://avatars1.githubusercontent.com/u/64522311?v=4" class="avatar-user" width="50px;"/></a></kbd> <kbd><a href="https://github.com/nan-wang"><img src="https://avatars3.githubusercontent.com/u/4329072?v=4" class="avatar-user" width="50px;"/></a></kbd> <kbd><a href="https://github.com/tracy-propertyguru"><img src="https://avatars2.githubusercontent.com/u/47736458?v=4" class="avatar-user" width="50px;"/></a></kbd> <kbd><a href="https://www.linkedin.com/in/maanavshah/"><img src="https://avatars0.githubusercontent.com/u/30289560?v=4" class="avatar-user" width="50px;"/></a></kbd>
        <kbd><a href="https://github.com/iego2017"><img src="https://avatars3.githubusercontent.com/u/44792649?v=4" class="avatar-user" width="50px;"/></a></kbd> <kbd><a href="https://www.davidsanwald.net/"><img src="https://avatars1.githubusercontent.com/u/10153003?v=4" class="avatar-user" width="50px;"/></a></kbd> <kbd><a href="http://alexcg1.github.io/"><img src="https://avatars2.githubusercontent.com/u/4182659?v=4" class="avatar-user" width="50px;"/></a></kbd> <kbd><a href="https://github.com/shivam-raj"><img src="https://avatars3.githubusercontent.com/u/43991882?v=4" class="avatar-user" width="50px;"/></a></kbd> <kbd><a href="http://dncc.github.io/"><img src="https://avatars1.githubusercontent.com/u/126445?v=4" class="avatar-user" width="50px;"/></a></kbd> <kbd><a href="http://johnarevalo.github.io/"><img src="https://avatars3.githubusercontent.com/u/1301626?v=4" class="avatar-user" width="50px;"/></a></kbd> <kbd><a href="https://github.com/imsergiy"><img src="https://avatars3.githubusercontent.com/u/8855485?v=4" class="avatar-user" width="50px;"/></a></kbd> <kbd><a href="https://guiferviz.com/"><img src="https://avatars2.githubusercontent.com/u/11474949?v=4" class="avatar-user" width="50px;"/></a></kbd> <kbd><a href="https://github.com/rohan1chaudhari"><img src="https://avatars1.githubusercontent.com/u/9986322?v=4" class="avatar-user" width="50px;"/></a></kbd> <kbd><a href="https://www.linkedin.com/in/mohong-pan/"><img src="https://avatars0.githubusercontent.com/u/45755474?v=4" class="avatar-user" width="50px;"/></a></kbd>
        <kbd><a href="https://github.com/anish2197"><img src="https://avatars2.githubusercontent.com/u/16228282?v=4" class="avatar-user" width="50px;"/></a></kbd> <kbd><a href="https://github.com/joanna350"><img src="https://avatars0.githubusercontent.com/u/19216902?v=4" class="avatar-user" width="50px;"/></a></kbd> <kbd><a href="https://www.linkedin.com/in/madhukar01"><img src="https://avatars0.githubusercontent.com/u/15910378?v=4" class="avatar-user" width="50px;"/></a></kbd> <kbd><a href="https://github.com/maximilianwerk"><img src="https://avatars0.githubusercontent.com/u/4920275?v=4" class="avatar-user" width="50px;"/></a></kbd> <kbd><a href="https://github.com/emmaadesile"><img src="https://avatars2.githubusercontent.com/u/26192691?v=4" class="avatar-user" width="50px;"/></a></kbd> <kbd><a href="https://github.com/YikSanChan"><img src="https://avatars1.githubusercontent.com/u/17229109?v=4" class="avatar-user" width="50px;"/></a></kbd> <kbd><a href="https://github.com/Zenahr"><img src="https://avatars1.githubusercontent.com/u/47085752?v=4" class="avatar-user" width="50px;"/></a></kbd> <kbd><a href="https://github.com/JoanFM"><img src="https://avatars3.githubusercontent.com/u/19825685?v=4" class="avatar-user" width="50px;"/></a></kbd> <kbd><a href="http://yangboz.github.io/"><img src="https://avatars3.githubusercontent.com/u/481954?v=4" class="avatar-user" width="50px;"/></a></kbd> <kbd><a href="https://github.com/boussoffara"><img src="https://avatars0.githubusercontent.com/u/10478725?v=4" class="avatar-user" width="50px;"/></a></kbd>
        <kbd><a href="https://github.com/fhaase2"><img src="https://avatars2.githubusercontent.com/u/44052928?v=4" class="avatar-user" width="50px;"/></a></kbd> <kbd><a href="https://github.com/Morriaty-The-Murderer"><img src="https://avatars3.githubusercontent.com/u/12904434?v=4" class="avatar-user" width="50px;"/></a></kbd> <kbd><a href="https://github.com/rutujasurve94"><img src="https://avatars1.githubusercontent.com/u/9448002?v=4" class="avatar-user" width="50px;"/></a></kbd> <kbd><a href="https://github.com/theUnkownName"><img src="https://avatars0.githubusercontent.com/u/3002344?v=4" class="avatar-user" width="50px;"/></a></kbd> <kbd><a href="https://github.com/vltmn"><img src="https://avatars3.githubusercontent.com/u/8930322?v=4" class="avatar-user" width="50px;"/></a></kbd> <kbd><a href="https://github.com/Kavan72"><img src="https://avatars3.githubusercontent.com/u/19048640?v=4" class="avatar-user" width="50px;"/></a></kbd> <kbd><a href="https://github.com/bwanglzu"><img src="https://avatars1.githubusercontent.com/u/9794489?v=4" class="avatar-user" width="50px;"/></a></kbd> <kbd><a href="https://github.com/antonkurenkov"><img src="https://avatars2.githubusercontent.com/u/52166018?v=4" class="avatar-user" width="50px;"/></a></kbd> <kbd><a href="https://github.com/redram"><img src="https://avatars3.githubusercontent.com/u/1285370?v=4" class="avatar-user" width="50px;"/></a></kbd> <kbd><a href="https://github.com/ericsyh"><img src="https://avatars3.githubusercontent.com/u/10498732?v=4" class="avatar-user" width="50px;"/></a></kbd>
        <kbd><a href="https://github.com/festeh"><img src="https://avatars1.githubusercontent.com/u/6877858?v=4" class="avatar-user" width="50px;"/></a></kbd> <kbd><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="50px;"/></a></kbd> <kbd><a href="https://www.cnblogs.com/callyblog/"><img src="https://avatars2.githubusercontent.com/u/30991932?v=4" class="avatar-user" width="50px;"/></a></kbd> <kbd><a href="https://github.com/JamesTang-jinaai"><img src="https://avatars3.githubusercontent.com/u/69177855?v=4" class="avatar-user" width="50px;"/></a></kbd> <kbd><a href="https://github.com/coolmian"><img src="https://avatars3.githubusercontent.com/u/36444522?v=4" class="avatar-user" width="50px;"/></a></kbd> <kbd><a href="http://www.joaopalotti.com/"><img src="https://avatars2.githubusercontent.com/u/852343?v=4" class="avatar-user" width="50px;"/></a></kbd> <kbd><a href="https://www.cnblogs.com/callyblog/"><img src="https://avatars2.githubusercontent.com/u/30991932?v=4" class="avatar-user" width="50px;"/></a></kbd> <kbd><a href="https://educatorsrlearners.github.io/portfolio.github.io/"><img src="https://avatars1.githubusercontent.com/u/17770276?v=4" class="avatar-user" width="50px;"/></a></kbd> <kbd><a href="https://github.com/deepampatel"><img src="https://avatars3.githubusercontent.com/u/19245659?v=4" class="avatar-user" width="50px;"/></a></kbd> <kbd><a href="https://github.com/alasdairtran"><img src="https://avatars0.githubusercontent.com/u/10582768?v=4" class="avatar-user" width="50px;"/></a></kbd>
        <kbd><a href="https://github.com/jyothishkjames"><img src="https://avatars0.githubusercontent.com/u/937528?v=4" class="avatar-user" width="50px;"/></a></kbd> <kbd><a href="https://github.com/lusloher"><img src="https://avatars2.githubusercontent.com/u/64148900?v=4" class="avatar-user" width="50px;"/></a></kbd> <kbd><a href="https://kilsenp.github.io/"><img src="https://avatars1.githubusercontent.com/u/5173119?v=4" class="avatar-user" width="50px;"/></a></kbd> <kbd><a href="https://github.com/fsal"><img src="https://avatars2.githubusercontent.com/u/9203508?v=4" class="avatar-user" width="50px;"/></a></kbd> <kbd><a href="https://github.com/clennan"><img src="https://avatars3.githubusercontent.com/u/19587525?v=4" class="avatar-user" width="50px;"/></a></kbd> <kbd><a href="https://github.com/dalekatwork"><img src="https://avatars3.githubusercontent.com/u/40423996?v=4" class="avatar-user" width="50px;"/></a></kbd> <kbd><a href="https://github.com/pgiank28"><img src="https://avatars3.githubusercontent.com/u/17511966?v=4" class="avatar-user" width="50px;"/></a></kbd> <kbd><a href="https://github.com/anshulwadhawan"><img src="https://avatars2.githubusercontent.com/u/25061477?v=4" class="avatar-user" width="50px;"/></a></kbd> <kbd><a href="https://github.com/HelioStrike"><img src="https://avatars1.githubusercontent.com/u/34064492?v=4" class="avatar-user" width="50px;"/></a></kbd> <kbd><a href="https://github.com/averkij"><img src="https://avatars0.githubusercontent.com/u/1473991?v=4" class="avatar-user" width="50px;"/></a></kbd>
        <kbd><a href="https://github.com/BastinJafari"><img src="https://avatars3.githubusercontent.com/u/25417797?v=4" class="avatar-user" width="50px;"/></a></kbd> <kbd><a href="https://www.linkedin.com/in/deepankar-mahapatro/"><img src="https://avatars1.githubusercontent.com/u/9050737?v=4" class="avatar-user" width="50px;"/></a></kbd> <kbd><a href="https://github.com/FionnD"><img src="https://avatars0.githubusercontent.com/u/59612379?v=4" class="avatar-user" width="50px;"/></a></kbd> <kbd><a href="http://bit.ly/2UdLNBf"><img src="https://avatars2.githubusercontent.com/u/13751208?v=4" class="avatar-user" width="50px;"/></a></kbd> <kbd><a href="https://github.com/YueLiu1415926"><img src="https://avatars1.githubusercontent.com/u/64522311?v=4" class="avatar-user" width="50px;"/></a></kbd> <kbd><a href="https://github.com/Showtim3"><img src="https://avatars3.githubusercontent.com/u/30312043?v=4" class="avatar-user" width="50px;"/></a></kbd> <kbd><a href="https://github.com/pswu11"><img src="https://avatars2.githubusercontent.com/u/48913707?v=4" class="avatar-user" width="50px;"/></a></kbd> <kbd><a href="https://github.com/bhavsarpratik"><img src="https://avatars1.githubusercontent.com/u/23080576?v=4" class="avatar-user" width="50px;"/></a></kbd> <kbd><a href="https://github.com/kaushikb11"><img src="https://avatars1.githubusercontent.com/u/45285388?v=4" class="avatar-user" width="50px;"/></a></kbd> <kbd><a href="https://cristianmtr.github.io/resume/"><img src="https://avatars3.githubusercontent.com/u/8330330?v=4" class="avatar-user" width="50px;"/></a></kbd>
        <kbd><a href="https://github.com/SirsikarAkshay"><img src="https://avatars1.githubusercontent.com/u/19791969?v=4" class="avatar-user" width="50px;"/></a></kbd> <kbd><a href="https://sreerag-ibtl.github.io/"><img src="https://avatars2.githubusercontent.com/u/39914922?v=4" class="avatar-user" width="50px;"/></a></kbd> <kbd><a href="https://www.linkedin.com/in/nicholas-cwh/"><img src="https://avatars2.githubusercontent.com/u/25291155?v=4" class="avatar-user" width="50px;"/></a></kbd> <kbd><a href="https://www.imxiqi.com/"><img src="https://avatars2.githubusercontent.com/u/4802250?v=4" class="avatar-user" width="50px;"/></a></kbd> <kbd><a href="https://github.com/jancijen"><img src="https://avatars0.githubusercontent.com/u/28826229?v=4" class="avatar-user" width="50px;"/></a></kbd> <kbd><a href="https://github.com/florian-hoenicke"><img src="https://avatars2.githubusercontent.com/u/11627845?v=4" class="avatar-user" width="50px;"/></a></kbd> <kbd><a href="https://github.com/JamesTang-616"><img src="https://avatars3.githubusercontent.com/u/69177855?v=4" class="avatar-user" width="50px;"/></a></kbd> <kbd><a href="https://github.com/fernandakawasaki"><img src="https://avatars2.githubusercontent.com/u/50497814?v=4" class="avatar-user" width="50px;"/></a></kbd> <kbd><a href="https://github.com/Arrrlex"><img src="https://avatars1.githubusercontent.com/u/13290269?v=4" class="avatar-user" width="50px;"/></a></kbd> <kbd><a href="https://github.com/RenrakuRunrat"><img src="https://avatars3.githubusercontent.com/u/14925249?v=4" class="avatar-user" width="50px;"/></a></kbd>
        <kbd><a href="http://stackoverflow.com/story/umbertogriffo"><img src="https://avatars2.githubusercontent.com/u/1609440?v=4" class="avatar-user" width="50px;"/></a></kbd> <kbd><a href="https://github.com/rameshwara"><img src="https://avatars1.githubusercontent.com/u/13378629?v=4" class="avatar-user" width="50px;"/></a></kbd>
        
        
        <!-- markdownlint-restore -->
        <!-- prettier-ignore-end -->
        <!-- ALL-CONTRIBUTORS-LIST:END -->
        
        ## Community
        
        - [Code of conduct](https://github.com/jina-ai/jina/blob/master/.github/CODE_OF_CONDUCT.md) - play nicely with the Jina community
        - [Slack workspace](https://slack.jina.ai) - join #general on our Slack to meet the team and ask questions
        - [YouTube channel](https://youtube.com/c/jina-ai) - subscribe to the latest video tutorials, release demos, webinars and presentations.
        - [LinkedIn](https://www.linkedin.com/company/jinaai/) - get to know Jina AI as a company and find job opportunities
        - [![Twitter Follow](https://img.shields.io/twitter/follow/JinaAI_?label=Follow%20%40JinaAI_&style=social)](https://twitter.com/JinaAI_) - follow and interact with us using hashtag `#JinaSearch`
        - [Company](https://jina.ai) - know more about our company and how we are fully committed to open-source.
        
        ## Open Governance
        
        [GitHub milestones](https://github.com/jina-ai/jina/milestones) lay out the path to Jina's future improvements.
        
        As part of our open governance model, we host Jina's [Engineering All Hands]((https://hanxiao.io/2020/08/06/Engineering-All-Hands-in-Public/)) in public. This Zoom meeting recurs monthly on the second Tuesday of each month, at 14:00-15:30 (CET). Everyone can join in via the following calendar invite.
        
        - [Add to Google Calendar](https://calendar.google.com/event?action=TEMPLATE&tmeid=MHIybG03cjAwaXE3ZzRrYmVpaDJyZ2FpZjlfMjAyMDEwMTNUMTIwMDAwWiBjXzF0NW9nZnAyZDQ1djhmaXQ5ODFqMDhtY200QGc&tmsrc=c_1t5ogfp2d45v8fit981j08mcm4%40group.calendar.google.com&scp=ALL)
        - [Download .ics](https://hanxiao.io/2020/08/06/Engineering-All-Hands-in-Public/jina-ai-public.ics)
        
        The meeting will also be live-streamed and later published to our [YouTube channel](https://youtube.com/c/jina-ai).
        
        ## Join Us
        
        Jina is an open-source project. [We are hiring](https://jobs.jina.ai) full-stack developers, evangelists, and PMs to build the next neural search ecosystem in open source.
        
        
        ## License
        
        Copyright (c) 2020 Jina AI Limited. All rights reserved.
        
        Jina is licensed under the Apache License, Version 2.0. [See LICENSE for the full license text.](LICENSE)
        
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: numeric
Provides-Extra: scipy
Provides-Extra: cicd
Provides-Extra: index
Provides-Extra: py37
Provides-Extra: py38
Provides-Extra: flask
Provides-Extra: sse
Provides-Extra: devel
Provides-Extra: http
Provides-Extra: flask_cors
Provides-Extra: test
Provides-Extra: fluent-logger
Provides-Extra: dashboard
Provides-Extra: logging
Provides-Extra: nmslib
Provides-Extra: network
Provides-Extra: hub
Provides-Extra: docker
Provides-Extra: torch
Provides-Extra: framework
Provides-Extra: nlp
Provides-Extra: transformers
Provides-Extra: flair
Provides-Extra: paddlepaddle
Provides-Extra: paddlehub
Provides-Extra: tensorflow
Provides-Extra: tensorflow-hub
Provides-Extra: cv
Provides-Extra: torchvision
Provides-Extra: onnx
Provides-Extra: onnxruntime
Provides-Extra: Pillow
Provides-Extra: annoy
Provides-Extra: sklearn
Provides-Extra: plyvel
Provides-Extra: jieba
Provides-Extra: lz4
Provides-Extra: perf
Provides-Extra: gevent
Provides-Extra: python-magic
Provides-Extra: pymilvus
Provides-Extra: deepsegment
Provides-Extra: ngt
Provides-Extra: audio
Provides-Extra: librosa
Provides-Extra: uvloop
Provides-Extra: core
Provides-Extra: numpy
Provides-Extra: pyzmq
Provides-Extra: protobuf
Provides-Extra: grpcio
Provides-Extra: ruamel.yaml
Provides-Extra: tornado
Provides-Extra: cookiecutter
Provides-Extra: pytest
Provides-Extra: pytest-xdist
Provides-Extra: pytest-timeout
Provides-Extra: pytest-cov
Provides-Extra: pytest-repeat
Provides-Extra: flaky
Provides-Extra: mock
Provides-Extra: requests
Provides-Extra: prettytable
Provides-Extra: sseclient-py
Provides-Extra: all
Provides-Extra: match-py-ver
