<?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: Yuki Lun</title>
    <description>The latest articles on DEV Community by Yuki Lun (@yuki_lun_8c8d3a0d2421e395).</description>
    <link>https://dev.to/yuki_lun_8c8d3a0d2421e395</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%2F3068015%2F9bba27f6-b4f9-4ba6-8bd6-c6d1a671171b.png</url>
      <title>DEV Community: Yuki Lun</title>
      <link>https://dev.to/yuki_lun_8c8d3a0d2421e395</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/yuki_lun_8c8d3a0d2421e395"/>
    <language>en</language>
    <item>
      <title>📺 Find the Anime: A Semantic AI Anime Search Tool</title>
      <dc:creator>Yuki Lun</dc:creator>
      <pubDate>Sun, 20 Apr 2025 12:24:09 +0000</pubDate>
      <link>https://dev.to/yuki_lun_8c8d3a0d2421e395/find-the-anime-a-semantic-ai-anime-search-tool-1d1l</link>
      <guid>https://dev.to/yuki_lun_8c8d3a0d2421e395/find-the-anime-a-semantic-ai-anime-search-tool-1d1l</guid>
      <description>&lt;p&gt;&lt;em&gt;(Note: This project was created as part of the &lt;strong&gt;&lt;a href="https://kaggle.com/competitions/gen-ai-intensive-course-capstone-2025q1" rel="noopener noreferrer"&gt;Gen AI Intensive Course Capstone 2025Q1&lt;/a&gt;&lt;/strong&gt;.)&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  🔎 Use Case: Smarter Anime Discovery with Gen AI
&lt;/h3&gt;

&lt;p&gt;Anime lovers know the struggle: sometimes you're dying to rewatch a show, but all you remember is that it had a shy girl, a magical sword, and maybe a floating cat. Or maybe you’ve just finished an amazing series and want something &lt;em&gt;just like it&lt;/em&gt; — another story with the same themes, genre, or a specific kind of character.&lt;/p&gt;

&lt;p&gt;Unfortunately, traditional search tools like Google or anime databases often fall short when the query is fuzzy, emotional, or based on vibes. They rely on exact titles, tags, or genre filters — great if you know what you're looking for, but not so great when you're working from memory or mood.&lt;/p&gt;

&lt;p&gt;That’s where &lt;strong&gt;"Find the Anime"&lt;/strong&gt; comes in.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;What it solves:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Memory-based discovery&lt;/strong&gt;: For users who remember only fragments of the story, tone, or visual elements (e.g. “a robot cat from the future”).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Interest-based discovery&lt;/strong&gt;: For users who want to explore new anime with similar themes, genres, or character archetypes (e.g. “dark psychological thriller with a lone genius protagonist”).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;How Gen AI helps:&lt;/strong&gt;&lt;br&gt;
Instead of relying on rigid keyword matching, this tool uses &lt;strong&gt;semantic search&lt;/strong&gt; — a technique that goes beyond literal keyword matching and instead focuses on understanding the &lt;em&gt;meaning&lt;/em&gt; and context of a query. This approach, powered by &lt;strong&gt;large language models (LLMs)&lt;/strong&gt; (AI models trained on huge amounts of text that understand and generate human language), along with &lt;strong&gt;image understanding&lt;/strong&gt; (the AI's ability to "see" and interpret what's in an image), &lt;strong&gt;vector embeddings&lt;/strong&gt; (where words or images are converted into numerical representations that capture their meaning, allowing computers to compare them), and &lt;strong&gt;grounded explanations&lt;/strong&gt; (which uses external sources like Google Search to make the AI's answers more accurate and based on real-world information), can interpret vague or descriptive queries and return &lt;strong&gt;contextually relevant results&lt;/strong&gt; — along with the &lt;em&gt;reasoning&lt;/em&gt; behind them.&lt;/p&gt;


&lt;h3&gt;
  
  
  🛠️ How Gen AI Solves the Problem: Implementation Highlights
&lt;/h3&gt;

&lt;p&gt;My solution uses Google’s Gemini to connect what the user is looking for with the right anime. Here’s a quick look at the main parts and techniques I used:&lt;/p&gt;
&lt;h4&gt;
  
  
  Data Acquisition
&lt;/h4&gt;

&lt;p&gt;I gathered anime data using the &lt;a href="https://jikan.moe" rel="noopener noreferrer"&gt;Jikan API&lt;/a&gt;, which provides metadata like titles, genres, and synopses.&lt;/p&gt;


&lt;h4&gt;
  
  
  Data Structuring with Gemini
&lt;/h4&gt;

&lt;p&gt;The raw data from the API was often unstructured and difficult to work with. To structure this data, I used &lt;strong&gt;Gemini's JSON mode&lt;/strong&gt; to convert it into a clean, strongly typed format.&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="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Anime&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;typing&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;TypedDict&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;mal_id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt;
    &lt;span class="n"&gt;title&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;
    &lt;span class="n"&gt;genres&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;list&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;

&lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;models&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;generate_content&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;gemini-2.0-flash&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;contents&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;prompt&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;config&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;types&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;GenerateContentConfig&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="n"&gt;temperature&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;0.1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;response_mime_type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;application/json&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;response_schema&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;Anime&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h4&gt;
  
  
  Character Image Analysis with Gemini Vision
&lt;/h4&gt;

&lt;p&gt;To capture character appearances, I used &lt;strong&gt;Gemini Vision&lt;/strong&gt; to analyze the images and extract relevant features:&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="n"&gt;image&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;image_url&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;models&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;generate_content&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;gemini-2.0-flash&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;contents&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;prompt&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;types&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Part&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;from_bytes&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;image&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;content&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;mime_type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;image/jpeg&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)]&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h4&gt;
  
  
  Embedding Generation
&lt;/h4&gt;

&lt;p&gt;The core of semantic search is converting text (anime descriptions and character appearances) into meaningful numerical representations. Here's the code for my custom embedding function:&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="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;GeminiEmbeddingFunction&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;EmbeddingFunction&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;document_mode&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;

    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;__call__&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;input&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;Documents&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;Embeddings&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;embedding_task&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;retrieval_document&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;document_mode&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;retrieval_query&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
        &lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;models&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;embed_content&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
            &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;models/text-embedding-004&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="n"&gt;contents&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nb"&gt;input&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="n"&gt;config&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;types&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;EmbedContentConfig&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;task_type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;embedding_task&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
        &lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;values&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;embeddings&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h4&gt;
  
  
  Semantic Search with Chroma
&lt;/h4&gt;

&lt;p&gt;I used &lt;strong&gt;Chroma&lt;/strong&gt;, a &lt;strong&gt;vector database&lt;/strong&gt;, to store the anime embeddings. Chroma allows for efficient similarity search, enabling the system to quickly retrieve the anime that are most relevant to a user's query.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;```python
results = anime_db.query(query_texts=[query], n_results=3)
```
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h4&gt;
  
  
  Relevance Evaluation with Gemini and Google Grounding:
&lt;/h4&gt;

&lt;p&gt;After retrieving potential matches, I used &lt;strong&gt;Gemini&lt;/strong&gt; to evaluate how &lt;em&gt;relevant&lt;/em&gt; each anime was to the user's query. I also enabled &lt;strong&gt;Google Grounding&lt;/strong&gt; for more accurate, real-world-aware reasoning.&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="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;models&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;generate_content&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;gemini-2.0-flash&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;contents&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;prompt&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;config&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;types&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;GenerateContentConfig&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="n"&gt;tools&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;types&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Tool&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;google_search&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;types&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;GoogleSearch&lt;/span&gt;&lt;span class="p"&gt;())],&lt;/span&gt;
    &lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h4&gt;
  
  
  User Interface with Gradio
&lt;/h4&gt;

&lt;p&gt;I built a simple yet effective front end using Gradio, allowing users to input queries and view the results with styled anime cards.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4unegvrbrhgg70czx3r6.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4unegvrbrhgg70czx3r6.gif" alt="User Interface Demo" width="600" height="337"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  💭 Limitations and Future Improvements
&lt;/h3&gt;

&lt;p&gt;While this project demonstrates the power of generative AI for anime search, it's important to acknowledge its limitations:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Data Dependence&lt;/strong&gt;: The accuracy of the search relies heavily on the quality and completeness of the anime data.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Image Variability&lt;/strong&gt;: Character appearance matching can be affected by variations in image quality and style.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Model Subjectivity&lt;/strong&gt;: The relevance evaluation process introduces some degree of subjectivity, as it depends on Gemini's reasoning.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Limited Data Scope&lt;/strong&gt;: The current system was trained and evaluated on a relatively small dataset, which may limit its ability to generalize to the entire anime catalog.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To further enhance this tool, future work could explore these directions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Enhanced Data&lt;/strong&gt;: Incorporating a larger and more detailed dataset of anime information, including more granular details about plot, characters, and themes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Image Embeddings&lt;/strong&gt;: Using image embeddings and allowing users to upload images for character-based search, leading to more precise and intuitive search results.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Voice Input&lt;/strong&gt;: Adding voice-based query input to allow users to search using spoken words, making the tool more accessible and convenient.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Chatbot Interface&lt;/strong&gt;: Transforming the UI into a conversational chatbot to provide a more natural and interactive search experience, with guided recommendations.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multi-Model Evaluation&lt;/strong&gt;: Employing multiple Gemini models to evaluate the relevance of search results, combining their outputs to reduce bias and subjectivity.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  🎉 Conclusion
&lt;/h3&gt;

&lt;p&gt;This project demonstrates the transformative potential of generative AI for anime search and discovery. By using Gemini’s ability to understand language, analyze images, and give grounded explanations, we can create a more intuitive, efficient, and personalized way to find the perfect anime.&lt;/p&gt;

&lt;p&gt;🚀 Whether you're an anime fan or an AI enthusiast, try the tool out and let me know what anime it recommends for you!&lt;/p&gt;

&lt;p&gt;👉 Check out the full code and data in my Kaggle notebook: &lt;a href="https://www.kaggle.com/code/yukilun22/find-the-anime-a-semantic-ai-anime-search-tool" rel="noopener noreferrer"&gt;Find the Anime: A Semantic AI Anime Search Tool&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>gemini</category>
      <category>llm</category>
      <category>vectordatabase</category>
    </item>
  </channel>
</rss>
