Welcome to Jina!#
Jina is a MLOps framework that empowers anyone to build multimodal AI services via cloud native technologies. It uplifts a local PoC into a production-ready service. Jina handles the infrastructure complexity, making advanced solution engineering and cloud-native technologies accessible to every developer.
Applications built with Jina enjoy the following features out of the box:
🌌 Universal
Build applications that deliver fresh insights from multiple data types such as text, image, audio, video, 3D mesh, PDF with LF’s DocArray.
Support all mainstream deep learning frameworks.
Polyglot gateway that supports gRPC, Websockets, HTTP, GraphQL protocols with TLS.
⚡ Performance
Intuitive design pattern for high-performance microservices.
Scaling at ease: set replicas, sharding in one line.
Duplex streaming between client and server.
Async and non-blocking data processing over dynamic flows.
☁️ Cloud native
Seamless Docker container integration: sharing, exploring, sandboxing, versioning and dependency control via Executor Hub.
Full observability via OpenTelemetry, Prometheus and Grafana.
Fast deployment to Kubernetes, Docker Compose.
🍱 Ecosystem
Improved engineering efficiency thanks to the Jina AI ecosystem, so you can focus on innovating with the data applications you build.
Free CPU/GPU hosting via Jina AI Cloud.
Install#
Make sure that you have Python 3.7+ installed on Linux/MacOS/Windows.
pip install -U jina
conda install jina -c conda-forge
docker pull jinaai/jina:latest
Now that you’re set up, let’s create a project:
jina new hello-jina && jina flow --uses hello-jina/flow.yml
docker run jinaai/jina:latest -v "$(pwd)/j:/j" new hello-jina
docker run -v "$(pwd)/j:/j" -p 54321:54321 jinaai/jina:latest flow --uses /j/hello-jina/flow.yml
Run the client on your machine and observe the results from your terminal.
from jina import Client, DocumentArray
c = Client(host='grpc://0.0.0.0:54321')
da = c.post('/', DocumentArray.empty(2))
print(da.texts)
from jina import Client, DocumentArray
c = Client(host='http://0.0.0.0:54322')
da = c.post('/', DocumentArray.empty(2))
print(da.texts)
from jina import Client, DocumentArray
c = Client(host='ws://0.0.0.0:54323')
da = c.post('/', DocumentArray.empty(2))
print(da.texts)
fetch('http://localhost:54322/post', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: {}
}).then(response => response.json()).then(data => console.log(data));
curl --request POST 'http://localhost:54323/post' --header 'Content-Type: application/json' -d '{}'
Next steps#
Support#
Join our Slack community and chat with other community members about ideas.
Join our Engineering All Hands 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 events calendar/.ical) and live stream on YouTube
Subscribe to the latest video tutorials on our YouTube channel
Join Us#
Jina is backed by Jina AI and licensed under Apache-2.0.