You are now familiar with DocArray and experienced its capabilities first-hand. It's time to keep the ball rolling and start building sophisticated search applications. This section will guide you through this journey step-by-step and equip you with all the information required to build real-world examples with Jina AI.
The first thing to do is find a project that you're optimistic about. That way you'll be motivated to keep working on it. There are some recommendations for the issues from the Jina repository, but you can always work on one that suits your interests.
Don't shy away from asking for help if you get stuck at any step. Reach out to us through Slack!
Jina is a framework that empowers anyone to build cross-modal and multi-modal applications on the cloud. It uplifts a PoC into a production-ready service and handles the infrastructure complexity, making advanced solution engineering and cloud-native technologies accessible to every developer.
As a framework, Jina intends to be inclusive of all developers. So, came up with several ways that make it easy for any developer to install and get started with Jina.
If you are using Linux or Mac, you can use this command to install Jina:
pip install -U jina
For Windows users, there are two ways to install and run Jina on your machine:
For both installation types, you can use the above command. Jina is built with *nix-based platforms in mind, and Jina’s dependencies follow a similar ideology. Hence, there are some caveats when running Jina on Windows. If you encounter difficulties, you can check the following page.
To quickly start playing with Jina without worrying about any dependencies, you can install via Docker using the following command:
docker run jinaai/jina:latest
For detailed information on Jina installation, like minimal install or other dependencies, you can check the Install Jina page in our docs. For general troubleshooting, please refer to the following page.
In the beginner section, we learned DocArray and how it can be leveraged to massage the data. The other key building blocks of Jina are Executor and Flow. Before we move forward, it's helpful to learn these concepts in depth. Let's go through each of them one by one and understand the nuances behind them.
Creating a new project with Jina is very simple, open the CLI and type the following command:
jina new hello-jina
It will generate a new directory called hello-jina with the following files:
hello-jina
|- app.py
|- executor1/
|- config.yml
|- executor.py
Depending on your use case, you can edit the code in these files and then your application is ready to run. To learn more about creating a project with Jina, check out the following documentation.
We at Jina believe in empowering our users to create and build their own examples, so we created Jina Hub. - An open-source marketplace for Executors that allows you to plug and play with different Executors for your applications with just one line of code.
Jina Hub lets you share your work with the world in the form of an Executor. Similarly, you can pull in pre-built Executors like TransformTorchEncoder, CLIPTextEncoder, SimpleIndexer published by others to build your application on top of them. The Hub portal gives you a bird’s eye view of all the Executors on Jina Hub.
Jina Hub is built by the community and for the community. By going through the above resources, you have already gained a great understanding of the Jina ecosystem. Why limit all this knowledge to yourself?
It sounds about right to start contributing to the community by building and pushing your executors to JinaHub! We created this tutorial Master Executor: From Zero to Hub to help you take your Jina exploration journey to the next level!
You can follow these docs to use , build and publish Executors using Jina Hub along with the best practices .
Using an Executor locally is a resource-intensive and time-consuming process, so we created an "Executor Sandbox" that lets you try out an Executor remotely in a cloud environment. It saves a lot of time and computing resources on your local machine.
In the previous module, we learned how to prepare and manipulate raw text and image data to make it suitable for neural search applications. Now let’s head over to the examples that will give you a broad context on how to create search applications depending on the data types:
Text
Suppose you have source code in a file and you want to run a grep command in Linux on that file. This is a kind of search system in itself, i.e. searching text inside a bigger text file. We have created a similar semantic code search example using Jina. It indexes the source code as a reference and takes input as a query in the form of code. It then semantically matches the query with the indexed data and produces the desired result.
Chatbots are among the latest trends in the world of artificial intelligence. In this example, we have built an intelligent Q&A chatbot that provides semantically relevant answers when a user inputs a question.
Question Answering on long text documents is an inherently difficult task, due to the fuzziness and ambiguity of human language. There are an infinite number of ways one could ask questions with endless variations in style. One way to solve this problem is to train a neural network on a huge dataset of question-answer pairs, but it isn’t a feasible approach due to the unavailability of dataset. This tutorial will teach you how to reframe this task as a search problem and create robust solutions without the need of any dataset.
Image
In last few examples, you learned how to create a text-to-text search using Jina. Now, it's time to extend the search capabilities to manage images as a data type for doing an image-to-image search. Image to image search allows you to find relevant results by providing an image as an input.
You previously saw examples of text-to-text and image-to-image searche. In this example, you'll learn how Jina's framework implements cross-modal search.
The input query and the output result can be two different data types in a cross-modal search, such as text and images. In this example, we will look at a text-to-image search similar to Google Images, where you enter the description of the image you want to search, and the output is a number of similar images.
In this example, you'll understand a complex image search use case involving image segmentation and object detection. Here we will create a search solution to find small image patches inside larger images.
You are midway through your Neural Search journey with Jina, which means you are already equipped with knowledge for creating basic search solutions.
Take this quiz to move towards the last phase of learning Jina and earn an exclusive intermediate level certificate.
Previous:
Next:
We’d appreciate any feedback you’d have about your experience with the developer portal. Please check it out and provide us with your valuable feedback.