<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Alex C-G 🏳️‍🌈</title>
    <description>The latest articles on DEV Community by Alex C-G 🏳️‍🌈 (@alexcg).</description>
    <link>https://dev.to/alexcg</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F419301%2F4293bfd4-4cd7-4890-bc02-9fa323189fab.jpg</url>
      <title>DEV Community: Alex C-G 🏳️‍🌈</title>
      <link>https://dev.to/alexcg</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/alexcg"/>
    <language>en</language>
    <item>
      <title>What is Neural Search, and Why Should I Care?</title>
      <dc:creator>Alex C-G 🏳️‍🌈</dc:creator>
      <pubDate>Thu, 15 Oct 2020 11:29:24 +0000</pubDate>
      <link>https://dev.to/alexcg/what-is-neural-search-and-why-should-i-care-2gpd</link>
      <guid>https://dev.to/alexcg/what-is-neural-search-and-why-should-i-care-2gpd</guid>
      <description>&lt;h1&gt;
  
  
  Neural Search? What’s That?
&lt;/h1&gt;

&lt;p&gt;In short, neural search is a new approach to retrieving information. Instead of telling a machine a set of rules to understand what data is what, neural search does the same thing with a pre-trained neural network. This means developers don’t have to write every little rule, saving time and headaches, while the system trains itself to get better as it goes along. One such company providing an open-source neural search framework is &lt;a href="https://github.com/jina-ai/jina/" rel="noopener noreferrer"&gt;Jina&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Background
&lt;/h2&gt;

&lt;p&gt;Search is big business, and getting bigger every day. Just a few years ago, searching meant typing something into a text box (ah, those heady days of Yahoo! and Altavista). Now search encompasses text, voice, music, photos, videos, products, and so much more. Just before the turn of the millennium there were only 3.5 million Google searches a day. Today (according to the top result for search term &lt;code&gt;2020 google searches per day&lt;/code&gt;) that figure could be as high as 5 billion and rising, more than 1,000 times more. That’s not to mention all the billions of Wikipedia articles, Amazon products, and Spotify playlists searched by millions of people every day from their phones, computers, and virtual assistants.&lt;/p&gt;

&lt;p&gt;Just look at the stratospheric growth in Google queries — and that’s only until 2012!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F800%2F0%2AwnDzwewnBW9iIwYO" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F800%2F0%2AwnDzwewnBW9iIwYO"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In short, search is &lt;em&gt;huge&lt;/em&gt;. We’re going to look at the reigning champ of search methods, symbolic search, and the plucky upstart contender, neural search.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; This article is based on a &lt;a href="https://hanxiao.io/2018/01/10/Build-Cross-Lingual-End-to-End-Product-Search-using-Tensorflow/" rel="noopener noreferrer"&gt;post by Han Xiao&lt;/a&gt; with his permission. Check there if you want a more technical introduction to neural search.&lt;/p&gt;

&lt;h2&gt;
  
  
  Symbolic Search: Rules are Rules
&lt;/h2&gt;

&lt;p&gt;Google is a huge general-purpose search engine. Other companies can’t just adapt it to their needs and plug it into their systems. Instead, they use frameworks like &lt;a href="http://elastic.co/" rel="noopener noreferrer"&gt;Elastic&lt;/a&gt; and &lt;a href="https://lucene.apache.org/solr/" rel="noopener noreferrer"&gt;Apache Solr&lt;/a&gt;, symbolic search systems that let developers write the rules and create pipelines for searching products, people, messages, or whatever the company needs.&lt;/p&gt;

&lt;p&gt;Let’s take &lt;a href="http://www.shopify.com" rel="noopener noreferrer"&gt;Shopify&lt;/a&gt; for example. They use Elastic to index and search through millions of products across hundreds of categories. This couldn’t be done out-of-the-box or with a general purpose search engine like Google. They have to take Elastic and write specific rules and pipelines to index, filter, sort, and rank products by a variety of criteria, and convert this data into symbols that the system can understand. Hence the name, &lt;em&gt;symbolic search&lt;/em&gt;. Here’s &lt;a href="http://www.greats.com/" rel="noopener noreferrer"&gt;Greats&lt;/a&gt;, a popular Shopify store for sneakers:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F1200%2F1%2AgL70yGnLXRdWTdzY-LsLhw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F1200%2F1%2AgL70yGnLXRdWTdzY-LsLhw.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You and I know that if you search for &lt;code&gt;red nike sneakers&lt;/code&gt; you want, well, red Nike sneakers. Those are just words to a typical search system though. Sure, if you type them in you’ll hopefully get what you asked for, but what if those sneakers are tagged as &lt;em&gt;trainers&lt;/em&gt;? Or even tagged as &lt;em&gt;scarlet&lt;/em&gt; for that matter? In cases like this, a developer needs to write rules:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Red&lt;/strong&gt; is a color&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Scarlet&lt;/strong&gt; is a synonym of red&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Nike&lt;/strong&gt; is a brand&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Sneakers&lt;/strong&gt; are a type of footwear&lt;/li&gt;
&lt;li&gt;  Another name for sneakers is &lt;strong&gt;trainers&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Or, expressed in JSON as key-value pairs:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"color"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"red"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"color_synonyms"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"scarlet"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"brand"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"nike"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"sneaker"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"type_synonyms"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"trainers"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"category"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"footwear"&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Each of these key-value pairs can be thought of as a symbol, hence the name &lt;em&gt;symbolic search&lt;/em&gt;. When a user inputs a search query, the system breaks it down into symbols, and matches these symbols with the symbols from the products in its database.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F800%2F0%2AteWlGGTPTrSWv53P" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F800%2F0%2AteWlGGTPTrSWv53P"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;But what if a user types &lt;code&gt;nikke&lt;/code&gt; instead of &lt;code&gt;nike&lt;/code&gt;, or searches &lt;code&gt;shirts&lt;/code&gt; (with an &lt;code&gt;s&lt;/code&gt;) rather than &lt;code&gt;shirt&lt;/code&gt;? There are so many rules in language, and people break them all the time. To get effective symbols (i.e. knowing that &lt;code&gt;nikke&lt;/code&gt; really means &lt;code&gt;{"brand": "nike"}&lt;/code&gt;), you need to define lots of rules and chain them together in a complex pipeline:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F800%2F0%2A4wLeOjEStyGbFaSV" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F800%2F0%2A4wLeOjEStyGbFaSV"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Drawbacks of Symbolic Search
&lt;/h2&gt;

&lt;h3&gt;
  
  
  You Have to Explain Every. Little. Thing
&lt;/h3&gt;

&lt;p&gt;Our example search query above was &lt;code&gt;red nike sneaker man&lt;/code&gt;. But what if our searcher is British? A Brit would type &lt;code&gt;red nike trainer man&lt;/code&gt;. We would have to explain to our system that sneakers and trainers are just the same thing with different names. Or what is someone is searching &lt;code&gt;LV handbag&lt;/code&gt;? The system would have to be told &lt;code&gt;LV&lt;/code&gt; stands for &lt;code&gt;Louis Vuitton&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Doing that for every kind of product takes &lt;em&gt;forever&lt;/em&gt; and there are always things that fall between the cracks. And if you want to localize for other languages? You’ll have to go through it all over again. That means a lot of hard work, knowledge, and attention to detail.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F800%2F0%2A-UquURWXwEnCNbLH" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F800%2F0%2A-UquURWXwEnCNbLH"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  It’s Fragile
&lt;/h3&gt;

&lt;p&gt;Text is complicated: As we explained above, if a user types in &lt;code&gt;red nikke sneaker man&lt;/code&gt; a classic search system has to recognize that they're searching for a red (color) Nike (brand with corrected spelling) sneaker (type) for men (sub-type). This is done by interpreting the search string and product details to symbols via the pipeline, and these pipelines can have major issues.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F800%2F0%2ABuOUzbFcDXUDr4gg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F800%2F0%2ABuOUzbFcDXUDr4gg"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Every component in the chain has an output that is fed as input into the next component along. So a problem early on in the process and break the whole system&lt;/li&gt;
&lt;li&gt;  Some components may take inputs from multiple predecessors. That means you have to introduce more mechanisms to stop them blocking each other&lt;/li&gt;
&lt;li&gt;  It’s difficult to improve overall search quality. Just improving one or two components may lead to no improvement in actual search results&lt;/li&gt;
&lt;li&gt;  If you want to search in another language, you have to rewrite all the language-dependent components in the pipeline, increasing maintenance cost&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Neural Search: (Pre-)Train, Don’t Explain
&lt;/h2&gt;

&lt;p&gt;An easier way would be a search system trained on existing data. If you train a system on enough different scenarios beforehand (i.e. a pre-trained model), it develops a generalized ability to find outputs that match inputs, whether they’re &lt;a href="https://github.com/jina-ai/examples/tree/master/flower-search" rel="noopener noreferrer"&gt;flowers&lt;/a&gt;, &lt;a href="https://github.com/jina-ai/examples/tree/master/southpark-search" rel="noopener noreferrer"&gt;lines from South Park&lt;/a&gt;, or &lt;a href="https://github.com/jina-ai/examples/tree/master/pokedex-with-bit" rel="noopener noreferrer"&gt;Pokémon&lt;/a&gt;. You can plug this model directly into your system and start indexing and searching right away.&lt;/p&gt;

&lt;p&gt;The code is pretty straightforward. It loads a “Flow”, which in turns loads a series of modules to process, index, and query your data:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;jina.flow&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;Flow&lt;/span&gt;
&lt;span class="n"&gt;f&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;Flow&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
        &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;add&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;my-encoder&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;image&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;jinaai/hub.examples.my_encoder&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
             &lt;span class="n"&gt;volumes&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;./abc&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;yaml_path&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;hub/examples/my_encoder/my_encoder_ext.yml&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
             &lt;span class="n"&gt;port_in&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;55555&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;port_out&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;55556&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This way, you don’t need to waste hours writing endless rules for your use case. Instead, just include a line in your code to download the model you want from an “app store” (like the upcoming &lt;a href="https://github.com/jina-ai/jina-hub/" rel="noopener noreferrer"&gt;Jina Hub&lt;/a&gt;), and get going.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F800%2F0%2AYyOEFgDpyzcJglGi.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F800%2F0%2AYyOEFgDpyzcJglGi.gif"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Compared to symbolic search, neural search:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Removes the fragile pipeline, making the system more resilient and scalable&lt;/li&gt;
&lt;li&gt;  Finds a better way to represent the underlying semantics of products and search queries&lt;/li&gt;
&lt;li&gt;  Learns as it goes along, so improves over time&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Does Neural Search Work Though?
&lt;/h2&gt;

&lt;p&gt;A search “works” if it understands and returns quality results for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Simple queries:&lt;/strong&gt; Like searching ‘red’, ‘nike’, or ‘sneakers’&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Compound queries:&lt;/strong&gt; Like ‘red nike sneakers’&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If it can’t even do those, there’s no point in checking for fancy things like spell-checking and ability to work in different languages.&lt;/p&gt;

&lt;p&gt;Anyway, less talking, more searching:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;🇬🇧 nike
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F1200%2F0%2A5OYeNWKsGcF0gVRy" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F1200%2F0%2A5OYeNWKsGcF0gVRy"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;🇩🇪 nike schwarz (different language)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F1200%2F0%2AsiGeHPkUzI1Yg7wO" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F1200%2F0%2AsiGeHPkUzI1Yg7wO"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;🇬🇧 addidsa (misspelled brand)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F1200%2F0%2AMJwcdam2P6dmNPh3" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F1200%2F0%2AMJwcdam2P6dmNPh3"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;🇬🇧 addidsa trosers (misspelled brand and category)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F1200%2F0%2A4LLQp3l-PU7TXYzc" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F1200%2F0%2A4LLQp3l-PU7TXYzc"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;🇬🇧 🇩🇪 kleider flowers (mixed languages)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F1200%2F0%2A9uRA1OnkjU6h1D_C" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F1200%2F0%2A9uRA1OnkjU6h1D_C"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So, as you can see, neural search does pretty well!&lt;/p&gt;

&lt;h2&gt;
  
  
  Comparing Symbolic and Neural Search
&lt;/h2&gt;

&lt;p&gt;So, how does neural search compare to the reigning champ that is symbolic search? Let’s take a look at the pros and cons of each:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F800%2F1%2AyXtMVXx8K6HrSlm2PaGoUQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F800%2F1%2AyXtMVXx8K6HrSlm2PaGoUQ.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We’re not trying to choose between Team Symbolic and Team Neural. Both approaches have their own advantages and complement each other pretty well. So a better question to ask is: Which is right for your organization?&lt;/p&gt;

&lt;h2&gt;
  
  
  Try Neural Search for Yourself
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F800%2F0%2A6zE8Q1xX7y8nb0jf" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F800%2F0%2A6zE8Q1xX7y8nb0jf"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There’s no better way to test-drive a technology than by diving in and playing with it. Jina provides pre-trained Docker images and &lt;a href="https://github.com/jina-ai/jinabox.js/" rel="noopener noreferrer"&gt;jinabox.js&lt;/a&gt;, an easy-to-use front-end for searching text, images, audio, or video. There’s no product search example (yet), but you &lt;em&gt;can&lt;/em&gt; search for more light-hearted things like &lt;a href="https://github.com/jina-ai/examples/tree/master/pokedex-with-bit" rel="noopener noreferrer"&gt;your favorite Pokémon&lt;/a&gt; or &lt;a href="https://github.com/jina-ai/examples/tree/master/southpark-search" rel="noopener noreferrer"&gt;lines from South Park&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Note: Originally posted on &lt;a href="https://medium.com/machine-learning-for-mortals/what-is-neural-search-and-why-should-i-care-4a6cee6b2249" rel="noopener noreferrer"&gt;Medium&lt;/a&gt;&lt;/p&gt;

</description>
      <category>machinelearning</category>
      <category>python</category>
    </item>
  </channel>
</rss>
