English • 日本語 • français • Deutsch • Русский язык • 中文
Website • Docs • Examples • Newsletter • Hub (beta) • Dashboard (beta) • Twitter • We are Hiring
Want to build a search system backed by deep learning? You've come to the right place!
Jina is an easier way to build neural search in the cloud. It has long-term support from a full-time, venture-backed team.
🌌 Universal Search - Large-scale indexing and querying of any kind on multiple platforms and architectures.
🚀 High Performance - Scale out your VideoBERT, Xception, word tokenizer, image segmenter, and database to handle billions of data points. Features like async, replicas, and sharding come out-of-the-box.
🐣 Easy System Engineering - One-stop solution that frees you from handcrafting and gluing packages, libraries and databases.
🧩 Powerful Extensions - Extensions are just Python scripts or Docker images. Check out Jina Hub to find out more.
- Install
- Jina "Hello, World!" 👋🌍
- Build your own Project
- Tutorials
- Documentation
- Contributing
- Community
- Join Us
- Roadmap
- License
On Linux/MacOS with Python >= 3.7:
pip install jina
To install Jina with extra dependencies, or install on Raspberry Pi please refer to the documentation.
We provide a universal Docker image (only 80MB!) that supports multiple architectures (including x64, x86, arm-64/v7/v6). Simply run:
docker run jinaai/jina --help
As a starter, you can try out our "Hello, World" - a simple demo of image neural search for Fashion-MNIST. No extra dependencies needed, just run:
jina hello-world
...or even easier for Docker users, no install required:
docker run -v "$(pwd)/j:/j" jinaai/jina hello-world --workdir /j && open j/hello-world.html # replace "open" with "xdg-open" on Linux
The Docker image downloads Fashion-MNIST training and test data 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 it'll eventually open a webpage and show results like this:
The implementation behind it is as simple as can be:
Python API | index.yml | Flow in Dashboard |
from jina.flow import Flow
f = Flow.load_config('index.yml')
with f:
f.index(input_fn) |
!Flow
pods:
chunk_seg:
yaml_path: helloworld.crafter.yml
replicas: $REPLICAS
read_only: true
doc_idx:
yaml_path: helloworld.indexer.doc.yml
encode:
yaml_path: helloworld.encoder.yml
needs: chunk_seg
replicas: $REPLICAS
chunk_idx:
yaml_path: helloworld.indexer.chunk.yml
replicas: $SHARDS
separated_workspace: true
join_all:
yaml_path: _merge
needs: [doc_idx, chunk_idx]
read_only: true |
All the big words you can name: computer vision, neural IR, microservice, message queue, elastic, replicas & shards. They all happened in just one minute!
Intrigued? Play with different options:
jina hello-world --help
Be sure to continue with our Jina 101 Guide - to understand all key concepts of Jina in 3 minutes!
pip install cookiecutter && cookiecutter gh:jina-ai/cookiecutter-jina
With Cookiecutter you can easily create a Jina project from templates with one terminal command. This creates a Python entrypoint, YAML configs and a Dockerfile. You can start from there.
English • 日本語 • français • Português • Deutsch • Русский язык • 中文 • عربية |
Tutorials | Level |
---|---|
Orchestrate Pods to work together: sequentially and in parallel; locally and remotely | |
Use Jina's input and output functions | |
Monitor workflows and get insights with Jina's dashboard | |
Extract feature vector data using any deep learning representation | |
Search South Park scripts and practice with Flows and Pods | |
Search images, define your own executors, and run them in Docker | |
Increase performance using prefetching and sharding | |
Run a Flow remotely and connect from a local client | |
Run Jina on remote instances and distribute your workflow | |
Implement your own ideas as Jina plugins | |
Solve complex dependencies easily with Docker containers | |
Search Pokemon with SOTA visual representation! | |
Share your extensions with engineers around the globe on Jina Hub |
The best way to learn Jina in depth is to read our documentation. Documentation is built on every push, merge, and release of the master branch.
- Jina command line interface arguments explained
- Jina Python API interface
- Jina YAML syntax for Executor, Driver and Flow
- Jina Protobuf schema
- Environment variables used in Jina
- ... and more
Are you a "Doc"-star? Affirmative? Join us! We welcome all kinds of improvements on the documentation.
Documentation for older versions is archived here.
We welcome all kinds of contributions from the open-source community, individuals and partners. Without your active involvement, Jina won't be successful.
- Slack channel - a communication platform for developers to discuss Jina
- Community newsletter - subscribe to the latest updates, releases and event news of Jina
- LinkedIn - get to know Jina AI as a company and find job opportunities
- - follow us and interact with using hashtag
#JinaSearch
- Company - know more about our company and how we are fully committed to open-source!
Jina is an open-source project. We are hiring full-stack developers, evangelists, and PMs to build the next neural search ecosystem in open source.
GitHub milestones lay out the path to Jina's future improvements.
We are looking for partnerships to build a Open Governance model (e.g. Technical Steering Committee) around Jina, to enable a healthy open-source ecosystem and developer-friendly culture. If you are interested, contact us at [email protected].
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.