Jina is the cloud-native neural search solution powered by the state-of-the-art AI and deep learning
Project description
English • 日本語 • Français • Deutsch • Русский язык • 中文
Website • Docs • Examples • Hub (beta) • Dashboard (beta) • Jinabox (beta) • Twitter • We are Hiring
Jina is an open-source deep-learning powered search framework, empowering developers to create cross-modal or multi-modal search systems for text, images, video, and audio. Jina is a cloud-native project, and provides long-term support from a full-time, venture-backed team.
⏱️ Time Saver - Bootstrap an AI-powered system in just a few minutes with cookiecutter.
🧠 First-Class AI models - Jina is a new design pattern for neural search systems with first-class support for state-of-the-art AI models like Faiss, Annoy, Onnx, and more.
🌌 Universal Search - Large-scale indexing and querying data of any kind on multiple platforms. Video, image, long/short text, music, source code, and more.
🚀 Production Ready - Cloud-native features out-of-the-box, like containerization, microservice, distributing, scaling, sharding, async IO, REST, gRPC.
🧩 Plug & Play - With Jina Hub, you can extend Jina with simple Python scripts or Docker images optimized for your search domain.
Contents
- Get Started
- Jina "Hello, World!" 👋🌍
- Tutorials
- Documentation
- Contributing
- Community
- Open Governance
- Join Us
- License
Get Started
From PyPi
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.
With Cookiecutter
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.
In a Docker Container
We provide a universal Docker image that supports multiple architectures (including x64, x86, arm-64/v7/v6). Simply run:
docker run jinaai/jina --help
Jina "Hello, World!" 👋🌍
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
Click here to see console output
The Docker image 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:
The implementation behind it is simple:
Python API | or use YAML spec | or use Dashboard |
from jina.flow import Flow
f = (Flow()
.add(uses='encoder.yml', parallel=2)
.add(uses='indexer.yml', shards=2,
separated_workspace=True))
with f:
f.index(fashion_mnist, batch_size=1024)
|
!Flow
pods:
encode:
uses: encoder.yml
parallel: 2
index:
uses: indexer.yml
shards: 2
separated_workspace: true
|
Explore sharding, containerization, concatenating embeddings, and more
Adding Parallelism and Sharding
from jina.flow import Flow
f = (Flow().add(uses='encoder.yml', parallel=2)
.add(uses='indexer.yml', shards=2, separated_workspace=True))
Distributing the Flow
from jina.flow import Flow
f = Flow().add(uses='encoder.yml', host='192.168.0.99')
Using a Docker Container
from jina.flow import Flow
f = (Flow().add(uses='jinahub/cnn-encode:0.1')
.add(uses='jinahub/faiss-index:0.2', host='192.168.0.99'))
Concatenating Embeddings
from jina.flow import Flow
f = (Flow().add(name='eb1', uses='BiTImageEncoder')
.add(name='eb2', uses='KerasImageEncoder', needs='gateway')
.needs(['eb1', 'eb2'], uses='_concat'))
Enabling Network Queries
from jina.flow import Flow
f = Flow(port_expose=45678, rest_api=True)
with f:
f.block()
Intrigued? Play with different options:
jina hello-world --help
Tutorials
Jina 101: First Things to Learn About JinaEnglish • 日本語 • Français • Português • Deutsch • Русский язык • 中文 • عربية |
Level | Tutorials |
---|---|
🐣 |
Build an NLP Semantic Search SystemSearch South Park scripts and practice with Flows and Pods |
🐣 |
My First Jina AppUsing cookiecutter for bootstrap a jina app |
🐣 |
Fashion Search with Query LanguageSpice up the Hello-World with Query Language |
🕊 |
Use Chunk to search LyricsSplit documents in order to search on a finegrained level |
🕊 |
Mix and Match images and captionsSearch cross modal to get images from captions and vice versa |
🚀 |
Scale Up Video Semantic SearchImprove performance using prefetching and sharding |
Documentation
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.
The Basics
- Use Flow API to Compose Your Search Workflow
- Input and Output Functions in Jina
- Use Dashboard to Get Insight of Jina Workflow
- Distribute Your Workflow Remotely
- Run Jina Pods via Docker Container
Reference
- Command line interface arguments
- Python API interface
- YAML syntax for Executor, Driver and Flow
- Protobuf schema
- Environment variables
- ... and more
Are you a "Doc"-star? Join us! We welcome all kinds of improvements on the documentation.
Documentation for older versions is archived here.
Contributing
We welcome all kinds of contributions from the open-source community, individuals and partners. We owe our success to your active involvement.
Contributors ✨
Community
- Slack workspace - a communication platform for developers to discuss Jina
- YouTube channel - subscribe to the latest video tutorials, release demos, webinars and presentations.
- 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.
Open Governance
GitHub milestones lay out the path to Jina's future improvements.
As part of our open governance model, we host Jina's Engineering All Hands 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.
The meeting will also be live-streamed and later published to our YouTube channel.
Join Us
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.
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.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file gina-0.6.3.tar.gz
.
File metadata
- Download URL: gina-0.6.3.tar.gz
- Upload date:
- Size: 174.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.50.0 CPython/3.7.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | f5508506b5320cb7d57271eff93827df047bcfc367ebf0778aecd810f83ab2e6 |
|
MD5 | 352a35974584ce478a3f7a59d666b2f9 |
|
BLAKE2b-256 | 965f26b77a809cacf7131bdac69eb453a939c4ef3ed4ac9b4cadce5e989607a0 |