Metadata-Version: 2.1
Name: gnes
Version: 0.0.7
Summary: GNES is Generic Neural Elastic Search, a cloud-native semantic search system based on deep neural network.
Home-page: https://gnes.ai
Author: GNES team
Author-email: team@gnes.ai
License: Apache 2.0
Download-URL: https://github.com/gnes-ai/gnes/tags
Description: <p align="center">
        <a href="https://gnes.ai">
            <img src=".github/gnes-logo-tight.png?raw=true" width="300" alt="GNES Generic Neural Elastic Search, logo made by Han Xiao">
        </a>
        </p>
        
        <p align="center">
        <a href="https://travis-ci.com/gnes-ai/gnes">
            <img src="https://travis-ci.com/gnes-ai/gnes.svg?branch=master" alt="travis ci status">
        </a>
        <a href="https://pypi.org/project/gnes/">
            <img alt="PyPI" src="https://img.shields.io/pypi/v/gnes.svg">
        </a>
        <a href='https://doc.gnes.ai/'>
            <img src='https://readthedocs.org/projects/gnes/badge/?version=latest' alt='Documentation Status' />
        </a>
        <a href='https://github.com/gnes-ai/gnes/blob/master/LICENSE'>
            <img alt="PyPI - License" src="https://img.shields.io/pypi/l/gnes.svg">
        </a>
        </p>
        
        <p align="center">
          <a href="#highlights">Highlights</a> •
          <a href="#overview">Overview</a> •
          <a href="#install">Install</a> •
          <a href="#getting-started">Getting Started</a> •
          <a href="#usage">Usage</a> •
          <a href="#book-tutorial">Tutorials</a> •
          <a href="#speech_balloon-faq">FAQ</a>  
        </p>
        
        <h2 align="center">What is it</h2>
        
        GNES [<i>jee-nes</i>] is Generic Neural Elastic Search, a cloud-native semantic search system based on deep neural network. 
        
        
        Leveraging the cloud infrastructure, GNES enables large-scale index and semantic search for text-to-text, image-to-image, video-to-video and possibly any-to-any content form.
        
        
        <h2 align="center">Highlights</h2>
        
        - :cloud: **Cloud-native**: GNES is *all-in-microservice*: encoder, indexer, preprocessor and router are all running statelessly and independently in their own containers.  They communicate via versioned APIs and collaborate under the orchestration of Docker Swarm/Kubernetes etc. Scaling, load-balancing, automated recovering, they come off-the-shelf in GNES.
        - :hatching_chick: **Easy-to-use on every level**: How long would it take to deploy a change that involves just changing the encoder from BERT to ELMO or switching a layer in VGG? In GNES, this is just one line change in a YAML file. We abstract the encoding and indexing logic from the code to a YAML config, so that you can combine or stack encoders and indexers without even touching the codebase.
        - :rocket: **State-of-the-art**: Taking advantage of fast-evolving AI/ML/NLP/CV communities, we learn from best-of-breed deep learning models and plug them into GNES, making sure you always enjoy the state-of-the-art performance.
        - :nut_and_bolt: **Generic and compatible**: Searching for texts, image or even short-videos? Using Python/C/Java/Go/HTTP as the client? Doesn't matter which content form you have or which language do you use, GNES can handle them all. 
        - :100: **Best practice**: We love to learn the best practice from the community, helping our GNES to achieve the next level of availability, resiliency, performance, and durability. If you have any ideas or suggestions, feel free to contribute.
        
        
        <h2 align="center">Overview</h2>
        <p align="center">
        <img src=".github/gnes-component-overview.svg" alt="component overview">
        </p>
        
        
        <h2 align="center">Getting Started</h2>
        
        As a cloud-native application, GNES requires an orchestration engine to coordinate all micro-services. Currently, we support Kubernetes, Docker Swarm and a built-in solution.  Click on one of the icons below to get started.
        
        <p align="center">
        <img src=".github/gnes-orchestration.svg" width="70%" alt="orchestration selection">
        </p>
        <p align="center">
        <table>
          <tr>
            <th><a href="#using-gnes-with-kubernetes"> ▶️ I want to use GNES with Kubernetes.</a></th>
            <th><a href="#using-gnes-with-docker-swarm"> ▶️ I want to use GNES with Docker Swarm.</a></th>
            <th><a href="#using-gnes-with-built-in-orchestration"> ▶️ I want to use GNES on a single machine.</a></th>
          </tr>
        </table>
        </p>
        
        
        ### Using GNES with Docker Swarm
        
        The easiest and the recommended way to use GNES is via Docker, which uses containers to create virtual environments that isolate a GNES installation from the rest of the system. You don't need to worry about dependencies, they are self-contained in the GNES docker image. Moreover, GNES relies on the Docker Swarm for managing, scaling and conducting orchestration tasks over multiple micro-services. 
        
        #### 1. Prerequisites
        
        - [Docker Engine>=1.13](https://docs.docker.com/install/)
        - [Docker Compose](https://docs.docker.com/compose/install/)
        - [Docker Machine](https://docs.docker.com/machine/install-machine/)
        
        
        #### 2. Start GNES with the wizard
        
        If you are new to GNES, it is recommended to use the wizard to config and start GNES.
        
        ```bash
        bash <(curl -s https://raw.githubusercontent.com/gnes-ai/wizard/build/wizard.sh)
        ```
        
        At the last step, the wizard will generate a random name for the service, say `my-gnes-0531`. Keep that name in mind. If you miss that name, you can always use `docker stack ls` to checkout the name of your service.
        
        <details>
         <summary>How do I know if GNES is running succesfully? (click to expand...)</summary>
        
        To tell whether the service is running successfully or not, you can use `docker stack ps my-gnes-0531`. It should give you results as follows:
        ```bash
        ID                  NAME                         IMAGE                                           NODE                DESIRED STATE       CURRENT STATE                ERROR               PORTS
        zku2zm9deli9        my-gnes-0531_encoder.1      ccr.ccs.tencentyun.com/gnes/aipd-gnes:86c0a3a   VM-0-3-ubuntu       Running             Running about an hour ago
        yc09pst6s7yt        my-gnes-0531_grpc_serve.1   ccr.ccs.tencentyun.com/gnes/aipd-gnes:86c0a3a   VM-0-3-ubuntu       Running             Running about an hour ago
        ```
        
        Note, the running status under `CURRENT STATE` suggests everything is fine.
        
        </details>
        
        <details>
        <summary>How can I terminate GNES? (click to expand...)</summary>
        
        To stop a running GNES service, you can use `docker stack rm my-gnes-0531`.
        
        - Having troubles to start GNES? Checkout our [troubleshooting guide](#).
        - For pro-users/developers, you may want to use our `gnes-yaml.sh` tools to [generate a YAML config via CLI](#); or simply [handcraft your own `docker-compose.yml`](#).
        
        </details>
        
        ### Using GNES with Kubernetes
        
        TBA
        
        ### Using GNES with Built-In Orchestration
        
        TBA
        
        <h2 align="center">Usage</h2>
        
        First thing to know, GNES has **three independent runtimes**: train, index and search. This differs from the classic machine learning system which has two runtimes i.e. train and inference; also differs from the classic search system that has two runtimes i.e. index and search. Depending on the runtime of GNES, the microservices may be composed, work and communicate with others in different ways. In other word, the runtime determines which service doing what logic at when. In the sequel, we will demonstrate how to use GNES under different runtimes. 
        
        Note, to switch between runtimee you need to shutdown the current runtime and start a new GNES.
        
        ### Train mode: training encoders and indexers
        
        ### Index mode: adding new documents
        
        ### Query mode: searching relevant documents of a given query  
        
        
        <h2 align="center">:book: Documentation</h2>
        
        The official documentation of GNES is hosted on [doc.gnes.ai](https://doc.gnes.ai/). It is automatically built, updated and archived on every new release. 
        
        ### Building the documentation from scratch
        
        To build the documentation by yourself, you need to first [install sphinx](http://www.sphinx-doc.org/en/master/usage/installation.html).
        
        ```bash
        git clone https://github.com/tencent/gnes.git && cd gnes
        ./shell/make-doc.sh
        ```
        
        <h2 align="center">Tutorial</h2>
        
        TBA
        
        <h2 align="center">Contributing</h2>
        
        Thanks for your interest in contributing! There are many ways to get involved; start with our [contributor guidelines](#) and then check these [open issues](/issues) for specific tasks.
        
        For contributors looking to get deeper into the API we suggest cloning the repository and checking out the unit tests for examples of how to call methods.
        
        <h2 align="center">Release Notes</h2>
        
        TBA
        
        <h2 align="center">Citing GNES</h2>
        
        ```latex
        @misc{tencent2019GNES,
          title={GNES: Generic Neural Elastic Search},
          author={Xiao, Han and Yan, Jianfeng and Wang, Feng and Fu, Jie},
          howpublished={\url{https://github.com/gnes-ai}},
          year={2019}
        }
        ```
        
        <h2 align="center">License</h2>
        
        [Apache License 2.0](./LICENSE)
Keywords: gnes cloud-native semantic search elastic neural-network encoding embedding serving
Platform: UNKNOWN
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Education
Classifier: Intended Audience :: Science/Research
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Cython
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: all
Provides-Extra: chinese
Provides-Extra: nlp
Provides-Extra: flair
Provides-Extra: vision
Provides-Extra: test
Provides-Extra: bert
Provides-Extra: cn_nlp
Provides-Extra: leveldb
Provides-Extra: annoy
