From d6ba79d7def6533b1358ec9d6c122371f69a798b Mon Sep 17 00:00:00 2001 From: Prashant Dixit <54981696+PrashantDixit0@users.noreply.github.com> Date: Wed, 29 May 2024 13:52:17 +0530 Subject: [PATCH] evaluating RAG with RAGAs (#197) * assests and app name * update README * demo gifs * talk with github codespaces * talk with github codespaces * gitignore * linted * added version * link fix * added local llm tag * crag * link fix * lint * llm tags * non-clickable badge * non-clickable badge * fix * tutorial llm tags * added instructions and fix * colab fix * fix * formatted * hybrid search and rag colab * colab format * python test * node test * python test * blog link update * rag mlx * myntra search engine app * link fix * CrewAI Example * lint * node test * node test * node test * added readme * support for Gemini Pro * fix * chunking techniques * lint * Locally RAG from Scratch * lint * llama3 added * link finx * sdk manual cli chatbot phidata * sdk manual cli chatbot phidata * link fix * tags * advanced * update readme * remove key * lint * formatting fixes * lint * updated image * added demo image * change autogen notebook * lint * lint * rag evaluation with ragas --- README.md | 1 + assets/rag_evaluation_flow.png | Bin 0 -> 98126 bytes .../Evaluating_RAG_with_RAGAs.ipynb | 1158 ++++++++++++++++ examples/Evaluating_RAG_with_RAGAs/README.md | 13 + ...ommendation_with_doc2vec_and_lancedb.ipynb | 1192 +++++++++-------- 5 files changed, 1778 insertions(+), 586 deletions(-) create mode 100644 assets/rag_evaluation_flow.png create mode 100644 examples/Evaluating_RAG_with_RAGAs/Evaluating_RAG_with_RAGAs.ipynb create mode 100644 examples/Evaluating_RAG_with_RAGAs/README.md diff --git a/README.md b/README.md index 017253e0..11d18aef 100644 --- a/README.md +++ b/README.md @@ -59,6 +59,7 @@ If you're looking for in-depth tutorial-like examples, checkout the [tutorials]( | [Contextual-Compression-with-RAG](/examples/Contextual-Compression-with-RAG/) | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/lancedb/vectordb-recipes/blob/main/examples/Contextual-Compression-with-RAG/main.ipynb) [![local LLM](https://img.shields.io/badge/local-llm-green)](#) [![intermediate](https://img.shields.io/badge/intermediate-FFDA33)](#)|[![Ghost](https://img.shields.io/badge/ghost-000?style=for-the-badge&logo=ghost&logoColor=%23F7DF1E)](https://blog.lancedb.com/enhance-rag-integrate-contextual-compression-and-filtering-for-precision-a29d4a810301/) | | [Instruct-Multitask](./examples/instruct-multitask) | Open In Colab [![Python](https://img.shields.io/badge/python-3670A0?style=for-the-badge&logo=python&logoColor=ffdd54)](./examples/instruct-multitask/main.py) [![LLM](https://img.shields.io/badge/local-llm-green)](#) [![beginner](https://img.shields.io/badge/beginner-B5FF33)](#)|[![Ghost](https://img.shields.io/badge/ghost-000?style=for-the-badge&logo=ghost&logoColor=%23F7DF1E)](https://blog.lancedb.com/multitask-embedding-with-lancedb-be18ec397543)| | [Evaluating Prompts with Prompttools](/examples/prompttools-eval-prompts/) | Open In Colab [![LLM](https://img.shields.io/badge/openai-api-white)](#) [![local LLM](https://img.shields.io/badge/local-llm-green)](#) [![advanced](https://img.shields.io/badge/advanced-FF3333)](#)| | +| [Evaluating RAG with RAGAs](./examples/Evaluating_RAG_with_RAGAs/) | Open In Colab [![LLM](https://img.shields.io/badge/openai-api-white)](#) [![intermediate](https://img.shields.io/badge/intermediate-FFDA33)](#)| | | [AI Agents: Reducing Hallucination](/examples/reducing_hallucinations_ai_agents/) | Open In Colab [![Python](https://img.shields.io/badge/python-3670A0?style=for-the-badge&logo=python&logoColor=ffdd54)](./examples/reducing_hallucinations_ai_agents/main.py) [![JS](https://img.shields.io/badge/javascript-%23323330.svg?style=for-the-badge&logo=javascript&logoColor=%23F7DF1E)](./examples/reducing_hallucinations_ai_agents/index.js) [![LLM](https://img.shields.io/badge/openai-api-white)](#) [![advanced](https://img.shields.io/badge/advanced-FF3333)](#) |[![Ghost](https://img.shields.io/badge/ghost-000?style=for-the-badge&logo=ghost&logoColor=%23F7DF1E)](https://blog.lancedb.com/how-to-reduce-hallucinations-from-llm-powered-agents-using-long-term-memory-72f262c3cc1f/)| | [AI Trends Searcher with CrewAI](./examples/AI-Trends-with-CrewAI/) |Open In Colab [![LLM](https://img.shields.io/badge/openai-api-white)](#) [![beginner](https://img.shields.io/badge/beginner-B5FF33)](#)|[![Ghost](https://img.shields.io/badge/ghost-000?style=for-the-badge&logo=ghost&logoColor=%23F7DF1E)](https://blog.lancedb.com/track-ai-trends-crewai-agents-rag/)| | [SuperAgent Autogen](/examples/SuperAgent_Autogen) |Open In Colab [![LLM](https://img.shields.io/badge/openai-api-white)](#) [![intermediate](https://img.shields.io/badge/intermediate-FFDA33)](#)|| diff --git a/assets/rag_evaluation_flow.png b/assets/rag_evaluation_flow.png new file mode 100644 index 0000000000000000000000000000000000000000..4b74b6cb81bf180d1e70ba3bcf4ae0d6bafae77e GIT binary patch literal 98126 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 f{%`c348fBsp&>qb0Y3v##CrJ literal 0 HcmV?d00001 diff --git a/examples/Evaluating_RAG_with_RAGAs/Evaluating_RAG_with_RAGAs.ipynb b/examples/Evaluating_RAG_with_RAGAs/Evaluating_RAG_with_RAGAs.ipynb new file mode 100644 index 00000000..f69e55d3 --- /dev/null +++ b/examples/Evaluating_RAG_with_RAGAs/Evaluating_RAG_with_RAGAs.ipynb @@ -0,0 +1,1158 @@ +{ + "nbformat": 4, + "nbformat_minor": 0, + "metadata": { + "colab": { + "provenance": [] + }, + "kernelspec": { + "name": "python3", + "display_name": "Python 3" + }, + "language_info": { + "name": "python" + }, + "widgets": { + "application/vnd.jupyter.widget-state+json": { + "91f4187ef74b4c0791fa9058899f7454": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HBoxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_d9fb5f1092e24ba59cb768842ff8f828", + "IPY_MODEL_6441a4ce0f644c51aa6c140de43ed31d", + "IPY_MODEL_a6b459a38e5c4386b85ee7ebc0e302a4" + ], + "layout": "IPY_MODEL_cf96076499974020b541a541648028f4" + } + }, + "d9fb5f1092e24ba59cb768842ff8f828": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_82cd48cdf6f144e19cb3ef0a0553b689", + "placeholder": "​", + "style": "IPY_MODEL_8e537aa094004828b08a55a94cbd7dff", + "value": "Evaluating: 100%" + } + }, + "6441a4ce0f644c51aa6c140de43ed31d": { + "model_module": "@jupyter-widgets/controls", + "model_name": "FloatProgressModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_55a45baafaad4a4ca2cad720da0a80aa", + "max": 27, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_7f2a940f7f114e439f63e5e900748511", + "value": 27 + } + }, + "a6b459a38e5c4386b85ee7ebc0e302a4": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_50282721d29447c89bc05559a99183dd", + "placeholder": "​", + "style": "IPY_MODEL_23c5a724d0fa40efac45f1fe8fc0b9c5", + "value": " 27/27 [00:23<00:00,  4.90s/it]" + } + }, + "cf96076499974020b541a541648028f4": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "82cd48cdf6f144e19cb3ef0a0553b689": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "8e537aa094004828b08a55a94cbd7dff": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "55a45baafaad4a4ca2cad720da0a80aa": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "7f2a940f7f114e439f63e5e900748511": { + "model_module": "@jupyter-widgets/controls", + "model_name": "ProgressStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "50282721d29447c89bc05559a99183dd": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "23c5a724d0fa40efac45f1fe8fc0b9c5": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + } + } + } + }, + "cells": [ + { + "cell_type": "markdown", + "source": [ + "## Evaluating RAG with RAGAs using GPT-4o\n", + "\n", + "Ragas is a **framework for evaluating Retrieval Augmented Generation (RAG) pipelines**.\n", + "\n", + "Ragas provides you with the tools/metrics based on the latest research for evaluating LLM-generated text to give you insights about your RAG pipeline. Ragas can be integrated with your CI/CD to provide continuous checks to ensure performance.\n", + "\n", + "GPT4-o is used as an LLM to generate responses out of semantically close context chunks.\n", + "\n", + "![flow.png](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABSYAAAJUCAYAAAAIH/gPAAAABHNCSVQICAgIfAhkiAAAABl0RVh0U29mdHdhcmUAZ25vbWUtc2NyZWVuc2hvdO8Dvz4AAAAtdEVYdENyZWF0aW9uIFRpbWUAVHVlc2RheSAyOCBNYXkgMjAyNCAwMjozODoxOCBQTS8GbXgAACAASURBVHic7N13XJV1/8fx12FvkD0OIO69TcgsUyutrDRNK73bZcv0ltavvNvz1rRdNtSs1HCUd8OtWSSO3HsLB0EERPY65/z+QI4SuBUQ3s/Ho0eHc13X9/pcB/Tx4O3n+/0arFarFREREREREREREZFqZFfTBYiIiIiIiIiIiEj9o2BSREREREREREREqp2CSREREREREREREal2CiZFRERERERERESk2imYFBERERERERERkWqnYFJERERERERERESqnYJJERERERERERERqXYKJkVERERERERERKTaKZgUERERERERERGRaqdgUkRERERERERERKqdgkkRERERERERERGpdgomRUREREREREREpNopmBQREREREREREZFqp2BSREREREREREREqp2CSREREREREREREal2CiZFRERERERERESk2imYFBERERERERERkWqnYFJERERERERERESqnYJJERERERERERERqXYKJkVERERERERERKTaKZgUERERERERERGRaqdgUkRERERERERERKqdgkkRERERERERERGpdg41XYCIiIiIiIiIiNROJpOJuLg4AJKTk0lKSqpwzGQy1VRp1cpoNFZ4HR4ebvu6W7duGI1GYmJiaqK0y5rBarVaa7oIERERERERERGpWSaTiaSkJBISEmz/nYlvqH81VFbzMg+ln/Eco9FoCy1vv/12BZVnQcGkiIiIiIiIiEg9Vt4VOXHixErHfEP9ib7tSnxD/fEL8z/+np/tdX2TkVwWUGYeyrB9nXkond1rdrJ7zc4K5xqNRgYNGsTgwYMrdFzKCQomRURERERERETqoaoCyfIgsmnXFjTt2rwGq7s8ZSSfCClX/RQPYJvmrS7KyhRMioiIiIiIiIjUM7Gxsba1IwFufOwWut3avd52Ql4KGcnprPopnl8/mWd7Lzo6mpkzZ9ZgVbWLgkkRERERERERkXrCZDIxZswYEhISbN2RNz52a02XVaeVB5QJ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UTTZ99DBwQGtW7dGZmamSR7P3Nq0aWOR80gVk6b8Xt/KuI3beAL3rcNubv17MDIykoEkERERERER2RSbDCalN+NSIDl86mill0R14O3nA28/HwQGB0E1JgzDp47C6jnLcSIlFREREdybxYo4OjoiNDQUGzZsqPexTZo0QUFBQb2Pc3V1RXl5eYNawbt3717vY6zRrW3cERERAFBp2E11bduc0E1ERERERES2xlHpBdSXTqeTK4TmbvuQoaQN8/bzwaR5kxEYHARRFBEdHa30kugGR0fH2yZC19WSJUvg5uZW7+MiIyMxcuTIeh/XokULBAcH1/s4a2Tcxm08gVsadqPRaBAWFobY2FgIgoDIyEgkJSUxlCQiIiIiIiKbZHPBpBReTZo3WeGVkClI4SRQETpLbaykvDFjxqB37971OmbYsGF4+umnMXfu3Hod16xZM7zyyiuYNWsWXF1d63yci4sLvv76azRv3rxe57NW0h6soihWmsAtiiIiIiLkKkkpkGTrNhEREREREdkymwompTZHqRWY7IO3nw+GTx0FURSRmJio9HLohqZNm2L79u113r8xICAAa9asgaOjIyIjI3HPPffAwcGh1uM8PDzw448/wt/fH6GhoVi2bBmcnJxqPc7R0RFPPPEERowYUaf1WTsplBQEoVIAKVVJSkFlXFwcA0kiIiIiIiKyCza1x6Q02TlkNENJexMyOgybl2xEWlqa0kshI23btsXhw4cxevRouc24KsOHD8fq1avRqlUrABX7Re7evRtvvPEGPv7442qP8/Pzw4YNGzBgwAD5tokTJ8Lf3x+jR49GXl5etcfGxMRg2rRpcHS0qc9XqiV9f6W/51QqlVwhzmnbREREFb8j09LSoNfr5a2dpKF0RKQ8aTikIAjw9/eHn58fVCoVtx0iohrZVDCZnp6u9BLITKRJ6nxhaX3atm2LX3/9FZ999hlmzpyJ8vJy+T5XV1csXboUEyZMgLNz5b9OXF1dsXDhQkycOBFr167Fnj17kJmZCRcXF3Tr1g0jRozAqFGj4O3tXek4R0dHDB48GEePHsWMGTOQkJBQ6f6BAwdi6dKluPvuu6td88mTJ5GYmIjDhw+joKAAzZs3x8CBAzFhwgR4eXmZ4LtielLFpITTtomIiCqIoojY2NjbfldKBN8WFl4REVVFei8nbUsk4YfsRFQTmwom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)" + ], + "metadata": { + "id": "AwhxwHTf4VZp" + } + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "1mr4fXemsYci", + "outputId": "dd51d890-7da2-45ec-b14f-d96169bb8bdf" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m973.5/973.5 kB\u001b[0m \u001b[31m10.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m320.6/320.6 kB\u001b[0m \u001b[31m38.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m18.9/18.9 MB\u001b[0m \u001b[31m71.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m84.1/84.1 kB\u001b[0m \u001b[31m11.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m308.5/308.5 kB\u001b[0m \u001b[31m38.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m122.8/122.8 kB\u001b[0m \u001b[31m15.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m75.6/75.6 kB\u001b[0m \u001b[31m11.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m22.8/22.8 MB\u001b[0m \u001b[31m58.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m542.0/542.0 kB\u001b[0m \u001b[31m46.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.1/1.1 MB\u001b[0m \u001b[31m51.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m2.1/2.1 MB\u001b[0m \u001b[31m48.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m71.1/71.1 kB\u001b[0m \u001b[31m8.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m77.9/77.9 kB\u001b[0m \u001b[31m10.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m58.3/58.3 kB\u001b[0m \u001b[31m6.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m53.0/53.0 kB\u001b[0m \u001b[31m8.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m142.5/142.5 kB\u001b[0m \u001b[31m20.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m98.7/98.7 kB\u001b[0m \u001b[31m13.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m116.3/116.3 kB\u001b[0m \u001b[31m18.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m194.1/194.1 kB\u001b[0m \u001b[31m22.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m134.8/134.8 kB\u001b[0m \u001b[31m21.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m49.3/49.3 kB\u001b[0m \u001b[31m8.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25h" + ] + } + ], + "source": [ + "!pip install langchain openai lancedb ragas -q" + ] + }, + { + "cell_type": "markdown", + "source": [ + "### Setup `OPENAI_API_KEY` as an environment variable" + ], + "metadata": { + "id": "z8hT0Jn74ZmT" + } + }, + { + "cell_type": "code", + "source": [ + "import os\n", + "\n", + "os.environ[\"OPENAI_API_KEY\"] = \"sk-proj-...\"" + ], + "metadata": { + "id": "YHgQd_1rI04R" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "### Load .txt file and convert them into chunks" + ], + "metadata": { + "id": "mM0tf_vo6GbI" + } + }, + { + "cell_type": "code", + "source": [ + "import requests\n", + "from langchain.document_loaders import TextLoader\n", + "from langchain.text_splitter import CharacterTextSplitter\n", + "\n", + "url = \"https://raw.githubusercontent.com/hwchase17/chroma-langchain/master/state_of_the_union.txt\"\n", + "res = requests.get(url)\n", + "with open(\"state_of_the_union.txt\", \"w\") as f:\n", + " f.write(res.text)\n", + "\n", + "# Load the data\n", + "loader = TextLoader(\"./state_of_the_union.txt\")\n", + "documents = loader.load()\n", + "\n", + "# Chunk the data\n", + "text_splitter = CharacterTextSplitter(chunk_size=200, chunk_overlap=10)\n", + "chunks = text_splitter.split_documents(documents)" + ], + "metadata": { + "id": "IkLbg-_1I3Rt", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "4248c952-c719-4a30-ee7e-06d2f1b17449" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "name": "stderr", + "text": [ + "WARNING:langchain_text_splitters.base:Created a chunk of size 215, which is longer than the specified 200\n", + "WARNING:langchain_text_splitters.base:Created a chunk of size 232, which is longer than the specified 200\n", + "WARNING:langchain_text_splitters.base:Created a chunk of size 242, which is longer than the specified 200\n", + "WARNING:langchain_text_splitters.base:Created a chunk of size 219, which is longer than the specified 200\n", + "WARNING:langchain_text_splitters.base:Created a chunk of size 304, which is longer than the specified 200\n", + "WARNING:langchain_text_splitters.base:Created a chunk of size 205, which is longer than the specified 200\n", + "WARNING:langchain_text_splitters.base:Created a chunk of size 332, which is longer than the specified 200\n", + "WARNING:langchain_text_splitters.base:Created a chunk of size 215, which is longer than the specified 200\n", + "WARNING:langchain_text_splitters.base:Created a chunk of size 203, which is longer than the specified 200\n", + "WARNING:langchain_text_splitters.base:Created a chunk of size 281, which is longer than the specified 200\n", + "WARNING:langchain_text_splitters.base:Created a chunk of size 201, which is longer than the specified 200\n", + "WARNING:langchain_text_splitters.base:Created a chunk of size 250, which is longer than the specified 200\n", + "WARNING:langchain_text_splitters.base:Created a chunk of size 325, which is longer than the specified 200\n", + "WARNING:langchain_text_splitters.base:Created a chunk of size 242, which is longer than the specified 200\n" + ] + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "### Setup Retriever\n", + "\n", + "Retriever utilizes **LanceDB** for scalable vector search and advanced retrieval in RAG, delivering blazing fast performance for searching large sets of embeddings." + ], + "metadata": { + "id": "pgetSLZXEJ2Q" + } + }, + { + "cell_type": "code", + "source": [ + "from langchain.embeddings import OpenAIEmbeddings\n", + "from langchain.vectorstores import LanceDB\n", + "import lancedb\n", + "\n", + "openai_embed = OpenAIEmbeddings()\n", + "\n", + "# Setup lancedb\n", + "db = lancedb.connect(\"/tmp/lancedb\")\n", + "table = db.create_table(\n", + " \"raga_eval\",\n", + " data=[{\"vector\": openai_embed.embed_query(\"Hello World\"), \"text\": \"Hello World\"}],\n", + " mode=\"overwrite\",\n", + ")\n", + "\n", + "# Populate vector database\n", + "vectorstore = LanceDB.from_documents(\n", + " client=table, documents=chunks, embedding=openai_embed, by_text=False\n", + ")\n", + "\n", + "# Define vectorstore as retriever to enable semantic search\n", + "retriever = vectorstore.as_retriever()" + ], + "metadata": { + "id": "2PYhU_vvJC0P" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "### Setup RAG Pipeline with Prompt template" + ], + "metadata": { + "id": "9CFnNEfuExj7" + } + }, + { + "cell_type": "code", + "source": [ + "from langchain.chat_models import ChatOpenAI\n", + "from langchain.prompts import ChatPromptTemplate\n", + "from langchain.schema.runnable import RunnablePassthrough\n", + "from langchain.schema.output_parser import StrOutputParser\n", + "\n", + "# Define LLM\n", + "llm = ChatOpenAI(model_name=\"gpt-4o\", temperature=0)\n", + "\n", + "# Define Prompt template\n", + "template = \"\"\"You are an assistant for question-answering tasks.\n", + "Use the following pieces of retrieved context to answer the question.\n", + "If you don't know the answer, just say that you don't know.\n", + "Use two sentences maximum and keep the answer concise.\n", + "Question: {question}\n", + "Context: {context}\n", + "Answer:\n", + "\"\"\"\n", + "\n", + "prompt = ChatPromptTemplate.from_template(template)\n", + "\n", + "# Setup RAG pipeline\n", + "rag_chain = (\n", + " {\"context\": retriever, \"question\": RunnablePassthrough()}\n", + " | prompt\n", + " | llm\n", + " | StrOutputParser()\n", + ")" + ], + "metadata": { + "id": "-TiQhbNyLSKv" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "### Sample Questions with their Expected Answers\n", + "\n", + "Define a set of questions with their answers for creating dataset including ground truth, generated answers with their context using which they are generated." + ], + "metadata": { + "id": "Ge8JtkNXFXhI" + } + }, + { + "cell_type": "code", + "source": [ + "from datasets import Dataset\n", + "\n", + "questions = [\n", + " \"What did the president say about Justice Breyer?\",\n", + " \"What did the president say about Intel's CEO?\",\n", + " \"What did the president say about gun violence?\",\n", + "]\n", + "ground_truth = [\n", + " \"The president said that Justice Breyer has dedicated his life to serve the country and thanked him for his service.\",\n", + " \"The president said that Pat Gelsinger is ready to increase Intel's investment to $100 billion.\",\n", + " \"The president asked Congress to pass proven measures to reduce gun violence.\",\n", + "]\n", + "answers = []\n", + "contexts = []\n", + "\n", + "# Inference\n", + "for query in questions:\n", + " answers.append(rag_chain.invoke(query))\n", + " contexts.append(\n", + " [docs.page_content for docs in retriever.get_relevant_documents(query)]\n", + " )\n", + "\n", + "# To dict\n", + "data = {\n", + " \"question\": questions,\n", + " \"answer\": answers,\n", + " \"contexts\": contexts,\n", + " \"ground_truth\": ground_truth,\n", + "}\n", + "\n", + "# Convert dict to dataset\n", + "dataset = Dataset.from_dict(data)" + ], + "metadata": { + "id": "PGiU57QJMP0J" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "### RAGA Evaluation Pipeline\n", + "\n", + "Simple pipeline of RAGA for evaluation with the listed metrics to understand and evaluate the RAG system.\n", + "\n", + "**Metrics** on which we will evaulate are answer_correctness,\n", + "faithfulness,\n", + "answer_similarity,\n", + "context_precision,\n", + "context_utilization,\n", + "context_recall,\n", + "context_relevancy,\n", + "answer_relevancy, and\n", + "context_entity_recall" + ], + "metadata": { + "id": "szBZ1nwkFruF" + } + }, + { + "cell_type": "code", + "source": [ + "from ragas import evaluate\n", + "from ragas.metrics import (\n", + " answer_correctness,\n", + " faithfulness,\n", + " answer_similarity,\n", + " context_precision,\n", + " context_utilization,\n", + " context_recall,\n", + " context_relevancy,\n", + " answer_relevancy,\n", + " context_entity_recall,\n", + ")\n", + "\n", + "\n", + "# evaluating dataest on listed metrics\n", + "result = evaluate(\n", + " dataset=dataset,\n", + " metrics=[\n", + " answer_correctness,\n", + " faithfulness,\n", + " answer_similarity,\n", + " context_precision,\n", + " context_utilization,\n", + " context_recall,\n", + " context_relevancy,\n", + " answer_relevancy,\n", + " context_entity_recall,\n", + " ],\n", + ")\n", + "\n", + "\n", + "df = result.to_pandas()" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 49, + "referenced_widgets": [ + "91f4187ef74b4c0791fa9058899f7454", + "d9fb5f1092e24ba59cb768842ff8f828", + "6441a4ce0f644c51aa6c140de43ed31d", + "a6b459a38e5c4386b85ee7ebc0e302a4", + "cf96076499974020b541a541648028f4", + "82cd48cdf6f144e19cb3ef0a0553b689", + "8e537aa094004828b08a55a94cbd7dff", + "55a45baafaad4a4ca2cad720da0a80aa", + "7f2a940f7f114e439f63e5e900748511", + "50282721d29447c89bc05559a99183dd", + "23c5a724d0fa40efac45f1fe8fc0b9c5" + ] + }, + "id": "Samkm2TnMUQA", + "outputId": "f50e72d4-55fd-4f74-f0f6-334af8353ae2" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Evaluating: 0%| | 0/27 [00:00\n", + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
questionanswercontextsground_truthanswer_correctnessfaithfulnessanswer_similaritycontext_precisioncontext_utilizationcontext_recallcontext_relevancyanswer_relevancycontext_entity_recall
0What did the president say about Justice Breyer?The president honored Justice Stephen Breyer a...[And I did that 4 days ago, when I nominated C...The president said that Justice Breyer has ded...0.4154871.00.9119481.01.01.00.2000000.8415890.500000
1What did the president say about Intel's CEO?The president said that Intel’s CEO, Pat Gelsi...[Intel’s CEO, Pat Gelsinger, who is here tonig...The president said that Pat Gelsinger is ready...0.6199980.00.9801031.01.01.00.0909090.8970840.750000
2What did the president say about gun violence?The president called on Congress to pass prove...[And I ask Congress to pass proven measures to...The president asked Congress to pass proven me...0.6062301.00.9248951.01.01.00.2500000.9148880.666667
\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "
\n", + "\n", + "
\n", + " \n", + " \n", + " \n", + "
\n", + "\n", + "
\n", + " \n" + ], + "application/vnd.google.colaboratory.intrinsic+json": { + "type": "dataframe", + "variable_name": "df", + "summary": "{\n \"name\": \"df\",\n \"rows\": 3,\n \"fields\": [\n {\n \"column\": \"question\",\n \"properties\": {\n \"dtype\": \"string\",\n \"num_unique_values\": 3,\n \"samples\": [\n \"What did the president say about Justice Breyer?\",\n \"What did the president say about Intel's CEO?\",\n \"What did the president say about gun violence?\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"answer\",\n \"properties\": {\n \"dtype\": \"string\",\n \"num_unique_values\": 3,\n \"samples\": [\n \"The president honored Justice Stephen Breyer as an Army veteran, Constitutional scholar, and retiring Justice of the United States Supreme Court, and thanked him for his service. He also mentioned that Circuit Court of Appeals Judge Ketanji Brown Jackson, who he nominated, will continue Justice Breyer\\u2019s legacy of excellence.\",\n \"The president said that Intel\\u2019s CEO, Pat Gelsinger, told him they are ready to increase their investment from $20 billion to $100 billion.\",\n \"The president called on Congress to pass proven measures to reduce gun violence, including universal background checks and banning assault weapons and high-capacity magazines. He also questioned why individuals on a terrorist list should be able to purchase a weapon and advocated for repealing the liability shield that protects gun manufacturers from being sued.\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"contexts\",\n \"properties\": {\n \"dtype\": \"object\",\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"ground_truth\",\n \"properties\": {\n \"dtype\": \"string\",\n \"num_unique_values\": 3,\n \"samples\": [\n \"The president said that Justice Breyer has dedicated his life to serve the country and thanked him for his service.\",\n \"The president said that Pat Gelsinger is ready to increase Intel's investment to $100 billion.\",\n \"The president asked Congress to pass proven measures to reduce gun violence.\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"answer_correctness\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.11430741128276067,\n \"min\": 0.4154869951100285,\n \"max\": 0.6199979663207625,\n \"num_unique_values\": 3,\n \"samples\": [\n 0.4154869951100285,\n 0.6199979663207625,\n 0.6062297668831289\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"faithfulness\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.5773502691896258,\n \"min\": 0.0,\n \"max\": 1.0,\n \"num_unique_values\": 2,\n \"samples\": [\n 0.0,\n 1.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"answer_similarity\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.03619563595630723,\n \"min\": 0.911947980440114,\n \"max\": 0.9801032234987175,\n \"num_unique_values\": 3,\n \"samples\": [\n 0.911947980440114,\n 0.9801032234987175\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"context_precision\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 2.8867515847990063e-11,\n \"min\": 0.9999999999,\n \"max\": 0.99999999995,\n \"num_unique_values\": 2,\n \"samples\": [\n 0.9999999999,\n 0.99999999995\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"context_utilization\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 2.8867515847990063e-11,\n \"min\": 0.9999999999,\n \"max\": 0.99999999995,\n \"num_unique_values\": 2,\n \"samples\": [\n 0.9999999999,\n 0.99999999995\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"context_recall\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.0,\n \"min\": 1.0,\n \"max\": 1.0,\n \"num_unique_values\": 1,\n \"samples\": [\n 1.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"context_relevancy\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.08135390156762909,\n \"min\": 0.09090909090909091,\n \"max\": 0.25,\n \"num_unique_values\": 3,\n \"samples\": [\n 0.2\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"answer_relevancy\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.038230490911004,\n \"min\": 0.8415890798965432,\n \"max\": 0.9148879952296768,\n \"num_unique_values\": 3,\n \"samples\": [\n 0.8415890798965432\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"context_entity_recall\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.12729376960740932,\n \"min\": 0.4999999975,\n \"max\": 0.7499999981250001,\n \"num_unique_values\": 3,\n \"samples\": [\n 0.4999999975\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}" + } + }, + "metadata": {}, + "execution_count": 22 + } + ] + } + ] +} \ No newline at end of file diff --git a/examples/Evaluating_RAG_with_RAGAs/README.md b/examples/Evaluating_RAG_with_RAGAs/README.md new file mode 100644 index 00000000..98c70693 --- /dev/null +++ b/examples/Evaluating_RAG_with_RAGAs/README.md @@ -0,0 +1,13 @@ +# Evaluating RAG with RAGAs and GPT-4o +
Open In Colab + + +Ragas is a **framework for evaluating Retrieval Augmented Generation (RAG) pipelines**. + +Ragas provides you with the tools/metrics based on the latest research for evaluating LLM-generated text to give you insights about your RAG pipeline. Ragas can be integrated with your CI/CD to provide continuous checks to ensure performance. + +GPT4-o is used as an LLM to generate responses out of semantically close context chunks. + +![flow](../../assets/rag_evaluation_flow.png) + +Try it out on Colab - Open In Colab \ No newline at end of file diff --git a/examples/movie-recommendation-with-genres/movie_recommendation_with_doc2vec_and_lancedb.ipynb b/examples/movie-recommendation-with-genres/movie_recommendation_with_doc2vec_and_lancedb.ipynb index fdb29a77..2a75b19a 100644 --- a/examples/movie-recommendation-with-genres/movie_recommendation_with_doc2vec_and_lancedb.ipynb +++ b/examples/movie-recommendation-with-genres/movie_recommendation_with_doc2vec_and_lancedb.ipynb @@ -1,594 +1,614 @@ { - "cells": [ - { - "cell_type": "markdown", - "metadata": { - "id": "K45xhdPRsZJV" - }, - "source": [ - "# Movie Recommendation System using Doc2vec Embeddings and Vector DB" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "XUj6NXD0sdgf" - }, - "source": [ - "This Colab notebook aims to illustrate the process of creating a recommendation system using embeddings and a Vector DB.\n", - "\n", - "This approach involves combining the various movie genres or characteristics of a movie to form Doc2Vec embeddings, which offer a comprehensive portrayal of the movie content.\n", - "\n", - "These embeddings serve dual purposes: they can either be directly inputted into a classification model for genre classification or stored in a VectorDB. By storing embeddings in a VectorDB, efficient retrieval and query search for recommendations become possible at a later stage.\n" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "qEa74a_Wtpc7" - }, - "source": [ - "### Installing the relevant dependencies\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "hyde90IntuFi" - }, - "outputs": [], - "source": [ - "!pip install torch scikit-learn lancedb nltk gensim lancedb scipy==1.12 kaggle" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "shPjHTZbtxTh" - }, - "source": [ - "## Kaggle Configuration and Data Needs\n", - "\n", - "We are using a movies metadata data which is being uploaded on the Kaggle. To download the dataset and use it for our recommendation system, we will need a `kaggle.json` file containing our creds.\n", - "\n", - "You can download the `kaggle.json` file from your Kaggle account settings. Follow these steps and make your life easy.\n", - "\n", - "1. Go to Kaggle and log in to your account.\n", - "2. Navigate to Your Account Settings and click on your profile picture in the top right corner of the page, Now From the dropdown menu, select `Account`.\n", - "3. Scroll down to the `API` section, Click on `Create New API Token`. This will download a file named kaggle.json to your computer.\n", - "\n", - "Once you have the `kaggle.json` file, you need to upload it here on colab data space. After uploading the `kaggle.json` file, run the following code to set up the credentials and download the dataset in `data` directory" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "6Tl2qzgKsWtF" - }, - "outputs": [], - "source": [ - "import json\n", - "import os\n", - "\n", - "# Assuming kaggle.json is uploaded to the current directory\n", - "with open('kaggle.json') as f:\n", - " kaggle_credentials = json.load(f)\n", - "\n", - "os.environ['KAGGLE_USERNAME'] = kaggle_credentials['username']\n", - "os.environ['KAGGLE_KEY'] = kaggle_credentials['key']" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "8va-0of3sU0x" - }, - "outputs": [], - "source": [ - "from kaggle.api.kaggle_api_extended import KaggleApi\n", - "\n", - "# Initialize the Kaggle API\n", - "api = KaggleApi()\n", - "api.authenticate()\n", - "\n", - "# Specify the dataset you want to download\n", - "dataset = 'rounakbanik/the-movies-dataset'\n", - "destination = 'data/'\n", - "\n", - "# Create the destination directory if it doesn't exist\n", - "if not os.path.exists(destination):\n", - " os.makedirs(destination)\n", - "\n", - "# Download the dataset\n", - "api.dataset_download_files(dataset, path=destination, unzip=True)\n", - "\n", - "print(f\"Dataset {dataset} downloaded to {destination}\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "hBYzad3lrY4e", - "outputId": "5a8f7983-80be-47e0-aa9c-ae4e10495c1e" - }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "100%|██████████| 1000/1000 [00:00<00:00, 5050.83it/s]\n", - "100%|██████████| 1000/1000 [00:00<00:00, 5161.29it/s]\n", - "100%|██████████| 1000/1000 [00:00<00:00, 5006.18it/s]\n", - "100%|██████████| 1000/1000 [00:00<00:00, 5222.83it/s]\n", - "100%|██████████| 1000/1000 [00:00<00:00, 5216.24it/s]\n", - "100%|██████████| 1000/1000 [00:00<00:00, 5171.35it/s]\n", - "100%|██████████| 1000/1000 [00:00<00:00, 5109.78it/s]\n", - "100%|██████████| 1000/1000 [00:00<00:00, 5222.42it/s]\n", - "100%|██████████| 1000/1000 [00:00<00:00, 5133.39it/s]\n", - "100%|██████████| 1000/1000 [00:00<00:00, 5024.74it/s]\n", - "100%|██████████| 1000/1000 [00:00<00:00, 5117.18it/s]\n", - "100%|██████████| 1000/1000 [00:00<00:00, 4963.78it/s]\n", - "100%|██████████| 1000/1000 [00:00<00:00, 5405.55it/s]\n", - "100%|██████████| 1000/1000 [00:00<00:00, 5369.51it/s]\n", - "100%|██████████| 1000/1000 [00:00<00:00, 5349.33it/s]\n", - "100%|██████████| 1000/1000 [00:00<00:00, 5374.53it/s]\n", - "100%|██████████| 1000/1000 [00:00<00:00, 5194.32it/s]\n", - "100%|██████████| 1000/1000 [00:00<00:00, 5296.75it/s]\n", - "100%|██████████| 1000/1000 [00:00<00:00, 5204.32it/s]\n", - "100%|██████████| 1000/1000 [00:00<00:00, 5309.43it/s]\n", - "100%|██████████| 1000/1000 [00:00<00:00, 5333.12it/s]\n", - "100%|██████████| 1000/1000 [00:00<00:00, 5289.35it/s]\n", - "100%|██████████| 1000/1000 [00:00<00:00, 5317.42it/s]\n", - "100%|██████████| 1000/1000 [00:00<00:00, 5322.46it/s]\n", - "100%|██████████| 1000/1000 [00:00<00:00, 5378.43it/s]\n", - "100%|██████████| 1000/1000 [00:00<00:00, 5488.32it/s]\n", - "100%|██████████| 1000/1000 [00:00<00:00, 5546.43it/s]\n", - "100%|██████████| 1000/1000 [00:00<00:00, 2502.38it/s]\n", - "100%|██████████| 1000/1000 [00:00<00:00, 5369.91it/s]\n", - "100%|██████████| 1000/1000 [00:00<00:00, 4354.99it/s]\n", - "100%|██████████| 1000/1000 [00:00<00:00, 5193.60it/s]\n", - "100%|██████████| 1000/1000 [00:00<00:00, 5536.27it/s]\n", - "100%|██████████| 1000/1000 [00:00<00:00, 3476.56it/s]\n", - "100%|██████████| 1000/1000 [00:00<00:00, 4819.07it/s]\n", - "100%|██████████| 1000/1000 [00:00<00:00, 4500.37it/s]\n", - "100%|██████████| 1000/1000 [00:00<00:00, 5184.11it/s]\n", - "100%|██████████| 1000/1000 [00:00<00:00, 5098.14it/s]\n", - "100%|██████████| 1000/1000 [00:00<00:00, 5523.73it/s]\n", - "100%|██████████| 1000/1000 [00:00<00:00, 4655.12it/s]\n", - "100%|██████████| 1000/1000 [00:00<00:00, 5113.63it/s]\n", - "100%|██████████| 1000/1000 [00:00<00:00, 5336.63it/s]\n", - "100%|██████████| 1000/1000 [00:00<00:00, 5564.83it/s]\n", - "100%|██████████| 1000/1000 [00:00<00:00, 5310.91it/s]\n", - "100%|██████████| 1000/1000 [00:00<00:00, 5533.46it/s]\n", - "100%|██████████| 1000/1000 [00:00<00:00, 4255.41it/s]\n", - "100%|██████████| 466/466 [00:00<00:00, 5617.03it/s]\n", - "Building Vocabulary: 100%|██████████| 44506/44506 [00:00<00:00, 104121.48it/s]\n", - "Epoch 1: 100%|██████████| 44506/44506 [00:02<00:00, 20444.80it/s]\n", - "Epoch 2: 100%|██████████| 44506/44506 [00:02<00:00, 20700.43it/s]\n", - "Epoch 3: 100%|██████████| 44506/44506 [00:02<00:00, 20831.06it/s]\n", - "Epoch 4: 100%|██████████| 44506/44506 [00:02<00:00, 20885.78it/s]\n", - "Epoch 5: 100%|██████████| 44506/44506 [00:02<00:00, 19616.38it/s]\n", - "Epoch 6: 100%|██████████| 44506/44506 [00:02<00:00, 19634.24it/s]\n", - "Epoch 7: 100%|██████████| 44506/44506 [00:02<00:00, 20579.08it/s]\n", - "Epoch 8: 100%|██████████| 44506/44506 [00:02<00:00, 20727.00it/s]\n", - "Epoch 9: 100%|██████████| 44506/44506 [00:02<00:00, 21242.19it/s]\n", - "Epoch 10: 100%|██████████| 44506/44506 [00:02<00:00, 18476.39it/s]\n", - "Epoch 11: 100%|██████████| 44506/44506 [00:02<00:00, 21169.07it/s]\n", - "Epoch 12: 100%|██████████| 44506/44506 [00:02<00:00, 20967.64it/s]\n", - "Epoch 13: 100%|██████████| 44506/44506 [00:02<00:00, 20192.34it/s]\n", - "Epoch 14: 100%|██████████| 44506/44506 [00:02<00:00, 18910.62it/s]\n", - "Epoch 15: 100%|██████████| 44506/44506 [00:02<00:00, 20810.41it/s]\n", - "Epoch 16: 100%|██████████| 44506/44506 [00:02<00:00, 21361.88it/s]\n", - "Epoch 17: 100%|██████████| 44506/44506 [00:02<00:00, 18440.51it/s]\n", - "Epoch 18: 100%|██████████| 44506/44506 [00:02<00:00, 21206.01it/s]\n", - "Epoch 19: 100%|██████████| 44506/44506 [00:02<00:00, 20086.00it/s]\n", - "Epoch 20: 100%|██████████| 44506/44506 [00:02<00:00, 20943.08it/s]\n" - ] - } - ], - "source": [ - "import pandas as pd\n", - "import numpy as np\n", - "import torch\n", - "import torch.nn as nn\n", - "import torch.optim as optim\n", - "from torch.utils.data import DataLoader, TensorDataset\n", - "from gensim.models.doc2vec import Doc2Vec, TaggedDocument\n", - "from nltk.tokenize import word_tokenize\n", - "from sklearn.preprocessing import MultiLabelBinarizer\n", - "from sklearn.model_selection import train_test_split\n", - "from tqdm import tqdm\n", - "\n", - "# Read data from CSV file\n", - "movie_data = pd.read_csv('/Users/vipul/Nova/Projects/genre_spectrum/movies_metadata.csv', low_memory=False)\n", - "device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')\n", - "\n", - "def preprocess_data(movie_data_chunk):\n", - " tagged_docs = []\n", - " valid_indices = []\n", - " movie_info = []\n", - "\n", - " # Wrap your loop with tqdm\n", - " for i, row in tqdm(movie_data_chunk.iterrows(), total=len(movie_data_chunk)):\n", - " try:\n", - " # Constructing movie text\n", - " movies_text = ''\n", - " movies_text += \"Overview: \" + row['overview'] + '\\n'\n", - " genres = ', '.join([genre['name'] for genre in eval(row['genres'])])\n", - " movies_text += \"Overview: \" + row['overview'] + '\\n'\n", - " movies_text += \"Genres: \" + genres + '\\n'\n", - " movies_text += \"Title: \" + row['title'] + '\\n'\n", - " tagged_docs.append(TaggedDocument(words=word_tokenize(movies_text.lower()), tags=[str(i)]))\n", - " valid_indices.append(i)\n", - " movie_info.append((row['title'], genres))\n", - " except Exception as e:\n", - " continue\n", - "\n", - " return tagged_docs, valid_indices, movie_info\n", - "\n", - "def train_doc2vec_model(tagged_data, num_epochs=20):\n", - " # Initialize Doc2Vec model\n", - " doc2vec_model = Doc2Vec(vector_size=100, min_count=2, epochs=num_epochs)\n", - " doc2vec_model.build_vocab(tqdm(tagged_data, desc=\"Building Vocabulary\"))\n", - " for epoch in range(num_epochs):\n", - " doc2vec_model.train(tqdm(tagged_data, desc=f\"Epoch {epoch+1}\"), total_examples=doc2vec_model.corpus_count, epochs=doc2vec_model.epochs)\n", - "\n", - " return doc2vec_model\n", - "\n", - "# Preprocess data and extract genres for the first 1000 movies\n", - "chunk_size = 1000\n", - "tagged_data = []\n", - "valid_indices = []\n", - "movie_info = []\n", - "for chunk_start in range(0, len(movie_data), chunk_size):\n", - " movie_data_chunk = movie_data.iloc[chunk_start:chunk_start+chunk_size]\n", - " chunk_tagged_data, chunk_valid_indices, chunk_movie_info = preprocess_data(movie_data_chunk)\n", - " tagged_data.extend(chunk_tagged_data)\n", - " valid_indices.extend(chunk_valid_indices)\n", - " movie_info.extend(chunk_movie_info)\n", - "\n", - "doc2vec_model = train_doc2vec_model(tagged_data)" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "VryHT1zVuEp0" - }, - "source": [ - "### Training a Neural Network for the Genre Classification Task" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "3pVNy2UKt5lu" - }, - "outputs": [], - "source": [ - "# Extract genre labels for the valid indices\n", - "genres_list = []\n", - "for i in valid_indices:\n", - " row = movie_data.loc[i]\n", - " genres = [genre['name'] for genre in eval(row['genres'])]\n", - " genres_list.append(genres)\n", - "\n", - "mlb = MultiLabelBinarizer()\n", - "genre_labels = mlb.fit_transform(genres_list)\n", - "\n", - "embeddings = []\n", - "for i in valid_indices:\n", - " embeddings.append(doc2vec_model.dv[str(i)])\n", - "X_train, X_test, y_train, y_test = train_test_split(embeddings, genre_labels, test_size=0.2, random_state=42)\n", - "\n", - "X_train_np = np.array(X_train, dtype=np.float32)\n", - "y_train_np = np.array(y_train, dtype=np.float32)\n", - "X_test_np = np.array(X_test, dtype=np.float32)\n", - "y_test_np = np.array(y_test, dtype=np.float32)\n", - "\n", - "X_train_tensor = torch.tensor(X_train_np)\n", - "y_train_tensor = torch.tensor(y_train_np)\n", - "X_test_tensor = torch.tensor(X_test_np)\n", - "y_test_tensor = torch.tensor(y_test_np)\n", - "\n", - "class GenreClassifier(nn.Module):\n", - " def __init__(self, input_size, output_size):\n", - " super(GenreClassifier, self).__init__()\n", - " self.fc1 = nn.Linear(input_size, 512)\n", - " self.bn1 = nn.BatchNorm1d(512)\n", - " self.fc2 = nn.Linear(512, 256)\n", - " self.bn2 = nn.BatchNorm1d(256)\n", - " self.fc3 = nn.Linear(256, 128)\n", - " self.bn3 = nn.BatchNorm1d(128)\n", - " self.fc4 = nn.Linear(128, output_size)\n", - " self.relu = nn.ReLU()\n", - " self.dropout = nn.Dropout(p=0.2) # Adjust the dropout rate as needed\n", - "\n", - " def forward(self, x):\n", - " x = self.fc1(x)\n", - " x = self.bn1(x)\n", - " x = self.relu(x)\n", - " x = self.dropout(x)\n", - " x = self.fc2(x)\n", - " x = self.bn2(x)\n", - " x = self.relu(x)\n", - " x = self.dropout(x)\n", - " x = self.fc3(x)\n", - " x = self.bn3(x)\n", - " x = self.relu(x)\n", - " x = self.dropout(x)\n", - " x = self.fc4(x)\n", - " return x\n", - "\n", - "# Move model to the selected device\n", - "model = GenreClassifier(input_size=100, output_size=len(mlb.classes_)).to(device)\n", - "\n", - "# Define loss function and optimizer\n", - "criterion = nn.BCEWithLogitsLoss()\n", - "optimizer = optim.Adam(model.parameters(), lr=0.001)\n", - "\n", - "# Training loop\n", - "epochs = 50\n", - "batch_size = 64\n", - "\n", - "train_dataset = TensorDataset(X_train_tensor.to(device), y_train_tensor.to(device))\n", - "train_loader = DataLoader(train_dataset, batch_size=batch_size, shuffle=True)\n", - "\n", - "for epoch in range(epochs):\n", - " model.train()\n", - " running_loss = 0.0\n", - " for inputs, labels in train_loader:\n", - " inputs, labels = inputs.to(device), labels.to(device) # Move data to device\n", - " optimizer.zero_grad()\n", - " outputs = model(inputs)\n", - " loss = criterion(outputs, labels)\n", - " loss.backward()\n", - " optimizer.step()\n", - " running_loss += loss.item() * inputs.size(0)\n", - " epoch_loss = running_loss / len(train_loader.dataset)\n", - " print(f'Epoch [{epoch + 1}/{epochs}], Loss: {epoch_loss:.4f}')" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "yV8lTDYIubEQ" - }, - "source": [ - "### Testing the `model` to see if our model is able to predict the genres for the movies from the test dataset" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "73D3aqdJuct8" - }, - "outputs": [], - "source": [ - "from sklearn.metrics import f1_score\n", - "\n", - "model.eval()\n", - "with torch.no_grad():\n", - " X_test_tensor, y_test_tensor = X_test_tensor.to(device), y_test_tensor.to(device) # Move test data to device\n", - " outputs = model(X_test_tensor)\n", - " test_loss = criterion(outputs, y_test_tensor)\n", - " print(f'Test Loss: {test_loss.item():.4f}')\n", - "\n", - "\n", - "thresholds = [0.1] * len(mlb.classes_)\n", - "thresholds_tensor = torch.tensor(thresholds, device=device).unsqueeze(0)\n", - "\n", - "# Convert the outputs to binary predictions using varying thresholds\n", - "predicted_labels = (outputs > thresholds_tensor).cpu().numpy()\n", - "\n", - "# Convert binary predictions and actual labels to multi-label format\n", - "predicted_multilabels = mlb.inverse_transform(predicted_labels)\n", - "actual_multilabels = mlb.inverse_transform(y_test_np)\n", - "\n", - "# Print the Predicted and Actual Labels for each movie\n", - "for i, (predicted, actual) in enumerate(zip(predicted_multilabels, actual_multilabels)):\n", - " print(f'Movie {i+1}:')\n", - " print(f' Predicted Labels: {predicted}')\n", - " print(f' Actual Labels: {actual}')\n", - "\n", - "\n", - "# Compute F1-score\n", - "f1 = f1_score(y_test_np, predicted_labels, average='micro')\n", - "print(f'F1-score: {f1:.4f}')\n", - "\n", - "# Saving the trained model\n", - "torch.save(model.state_dict(), 'trained_model.pth')" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "kZrHpMm4un0G" - }, - "source": [ - "### Storing the Doc2Vec Embeddings into LanceDB VectorDatabase" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "BTTNb9irrY4h" - }, - "outputs": [], - "source": [ - "import lancedb\n", - "import numpy as np\n", - "import pandas as pd\n", - "\n", - "data = []\n", - "\n", - "for i in valid_indices:\n", - " embedding = doc2vec_model.dv[str(i)]\n", - " title, genres = movie_info[valid_indices.index(i)]\n", - " data.append({\"title\": title, \"genres\": genres, \"vector\": embedding.tolist()})\n", - "\n", - "db = lancedb.connect(\".db\")\n", - "tbl = db.create_table(\"doc2vec_embeddings\", data, mode=\"Overwrite\")\n", - "db[\"doc2vec_embeddings\"].head()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "ciUFn7uQrY4i" - }, - "outputs": [], - "source": [ - "def get_recommendations(title):\n", - " pd_data = pd.DataFrame(data)\n", - " result = (\n", - " tbl.search(pd_data[pd_data[\"title\"] == title][\"vector\"].values[0]).metric(\"cosine\")\n", - " .limit(10)\n", - " .to_pandas()\n", - " )\n", - " return result[[\"title\"]]" - ] - }, + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "K45xhdPRsZJV" + }, + "source": [ + "# Movie Recommendation System using Doc2vec Embeddings and Vector DB" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "XUj6NXD0sdgf" + }, + "source": [ + "This Colab notebook aims to illustrate the process of creating a recommendation system using embeddings and a Vector DB.\n", + "\n", + "This approach involves combining the various movie genres or characteristics of a movie to form Doc2Vec embeddings, which offer a comprehensive portrayal of the movie content.\n", + "\n", + "These embeddings serve dual purposes: they can either be directly inputted into a classification model for genre classification or stored in a VectorDB. By storing embeddings in a VectorDB, efficient retrieval and query search for recommendations become possible at a later stage.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "qEa74a_Wtpc7" + }, + "source": [ + "### Installing the relevant dependencies\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "hyde90IntuFi" + }, + "outputs": [], + "source": [ + "!pip install torch scikit-learn lancedb nltk gensim lancedb scipy==1.12 kaggle" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "shPjHTZbtxTh" + }, + "source": [ + "## Kaggle Configuration and Data Needs\n", + "\n", + "We are using a movies metadata data which is being uploaded on the Kaggle. To download the dataset and use it for our recommendation system, we will need a `kaggle.json` file containing our creds.\n", + "\n", + "You can download the `kaggle.json` file from your Kaggle account settings. Follow these steps and make your life easy.\n", + "\n", + "1. Go to Kaggle and log in to your account.\n", + "2. Navigate to Your Account Settings and click on your profile picture in the top right corner of the page, Now From the dropdown menu, select `Account`.\n", + "3. Scroll down to the `API` section, Click on `Create New API Token`. This will download a file named kaggle.json to your computer.\n", + "\n", + "Once you have the `kaggle.json` file, you need to upload it here on colab data space. After uploading the `kaggle.json` file, run the following code to set up the credentials and download the dataset in `data` directory" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "6Tl2qzgKsWtF" + }, + "outputs": [], + "source": [ + "import json\n", + "import os\n", + "\n", + "# Assuming kaggle.json is uploaded to the current directory\n", + "with open(\"kaggle.json\") as f:\n", + " kaggle_credentials = json.load(f)\n", + "\n", + "os.environ[\"KAGGLE_USERNAME\"] = kaggle_credentials[\"username\"]\n", + "os.environ[\"KAGGLE_KEY\"] = kaggle_credentials[\"key\"]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "8va-0of3sU0x" + }, + "outputs": [], + "source": [ + "from kaggle.api.kaggle_api_extended import KaggleApi\n", + "\n", + "# Initialize the Kaggle API\n", + "api = KaggleApi()\n", + "api.authenticate()\n", + "\n", + "# Specify the dataset you want to download\n", + "dataset = \"rounakbanik/the-movies-dataset\"\n", + "destination = \"data/\"\n", + "\n", + "# Create the destination directory if it doesn't exist\n", + "if not os.path.exists(destination):\n", + " os.makedirs(destination)\n", + "\n", + "# Download the dataset\n", + "api.dataset_download_files(dataset, path=destination, unzip=True)\n", + "\n", + "print(f\"Dataset {dataset} downloaded to {destination}\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "hBYzad3lrY4e", + "outputId": "5a8f7983-80be-47e0-aa9c-ae4e10495c1e" + }, + "outputs": [ { - "cell_type": "markdown", - "metadata": { - "id": "8Kz-JGsTuwmk" - }, - "source": [ - "### D-Day : Let's generate some recommendations" - ] - }, + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 1000/1000 [00:00<00:00, 5050.83it/s]\n", + "100%|██████████| 1000/1000 [00:00<00:00, 5161.29it/s]\n", + "100%|██████████| 1000/1000 [00:00<00:00, 5006.18it/s]\n", + "100%|██████████| 1000/1000 [00:00<00:00, 5222.83it/s]\n", + "100%|██████████| 1000/1000 [00:00<00:00, 5216.24it/s]\n", + "100%|██████████| 1000/1000 [00:00<00:00, 5171.35it/s]\n", + "100%|██████████| 1000/1000 [00:00<00:00, 5109.78it/s]\n", + "100%|██████████| 1000/1000 [00:00<00:00, 5222.42it/s]\n", + "100%|██████████| 1000/1000 [00:00<00:00, 5133.39it/s]\n", + "100%|██████████| 1000/1000 [00:00<00:00, 5024.74it/s]\n", + "100%|██████████| 1000/1000 [00:00<00:00, 5117.18it/s]\n", + "100%|██████████| 1000/1000 [00:00<00:00, 4963.78it/s]\n", + "100%|██████████| 1000/1000 [00:00<00:00, 5405.55it/s]\n", + "100%|██████████| 1000/1000 [00:00<00:00, 5369.51it/s]\n", + "100%|██████████| 1000/1000 [00:00<00:00, 5349.33it/s]\n", + "100%|██████████| 1000/1000 [00:00<00:00, 5374.53it/s]\n", + "100%|██████████| 1000/1000 [00:00<00:00, 5194.32it/s]\n", + "100%|██████████| 1000/1000 [00:00<00:00, 5296.75it/s]\n", + "100%|██████████| 1000/1000 [00:00<00:00, 5204.32it/s]\n", + "100%|██████████| 1000/1000 [00:00<00:00, 5309.43it/s]\n", + "100%|██████████| 1000/1000 [00:00<00:00, 5333.12it/s]\n", + "100%|██████████| 1000/1000 [00:00<00:00, 5289.35it/s]\n", + "100%|██████████| 1000/1000 [00:00<00:00, 5317.42it/s]\n", + "100%|██████████| 1000/1000 [00:00<00:00, 5322.46it/s]\n", + "100%|██████████| 1000/1000 [00:00<00:00, 5378.43it/s]\n", + "100%|██████████| 1000/1000 [00:00<00:00, 5488.32it/s]\n", + "100%|██████████| 1000/1000 [00:00<00:00, 5546.43it/s]\n", + "100%|██████████| 1000/1000 [00:00<00:00, 2502.38it/s]\n", + "100%|██████████| 1000/1000 [00:00<00:00, 5369.91it/s]\n", + "100%|██████████| 1000/1000 [00:00<00:00, 4354.99it/s]\n", + "100%|██████████| 1000/1000 [00:00<00:00, 5193.60it/s]\n", + "100%|██████████| 1000/1000 [00:00<00:00, 5536.27it/s]\n", + "100%|██████████| 1000/1000 [00:00<00:00, 3476.56it/s]\n", + "100%|██████████| 1000/1000 [00:00<00:00, 4819.07it/s]\n", + "100%|██████████| 1000/1000 [00:00<00:00, 4500.37it/s]\n", + "100%|██████████| 1000/1000 [00:00<00:00, 5184.11it/s]\n", + "100%|██████████| 1000/1000 [00:00<00:00, 5098.14it/s]\n", + "100%|██████████| 1000/1000 [00:00<00:00, 5523.73it/s]\n", + "100%|██████████| 1000/1000 [00:00<00:00, 4655.12it/s]\n", + "100%|██████████| 1000/1000 [00:00<00:00, 5113.63it/s]\n", + "100%|██████████| 1000/1000 [00:00<00:00, 5336.63it/s]\n", + "100%|██████████| 1000/1000 [00:00<00:00, 5564.83it/s]\n", + "100%|██████████| 1000/1000 [00:00<00:00, 5310.91it/s]\n", + "100%|██████████| 1000/1000 [00:00<00:00, 5533.46it/s]\n", + "100%|██████████| 1000/1000 [00:00<00:00, 4255.41it/s]\n", + "100%|██████████| 466/466 [00:00<00:00, 5617.03it/s]\n", + "Building Vocabulary: 100%|██████████| 44506/44506 [00:00<00:00, 104121.48it/s]\n", + "Epoch 1: 100%|██████████| 44506/44506 [00:02<00:00, 20444.80it/s]\n", + "Epoch 2: 100%|██████████| 44506/44506 [00:02<00:00, 20700.43it/s]\n", + "Epoch 3: 100%|██████████| 44506/44506 [00:02<00:00, 20831.06it/s]\n", + "Epoch 4: 100%|██████████| 44506/44506 [00:02<00:00, 20885.78it/s]\n", + "Epoch 5: 100%|██████████| 44506/44506 [00:02<00:00, 19616.38it/s]\n", + "Epoch 6: 100%|██████████| 44506/44506 [00:02<00:00, 19634.24it/s]\n", + "Epoch 7: 100%|██████████| 44506/44506 [00:02<00:00, 20579.08it/s]\n", + "Epoch 8: 100%|██████████| 44506/44506 [00:02<00:00, 20727.00it/s]\n", + "Epoch 9: 100%|██████████| 44506/44506 [00:02<00:00, 21242.19it/s]\n", + "Epoch 10: 100%|██████████| 44506/44506 [00:02<00:00, 18476.39it/s]\n", + "Epoch 11: 100%|██████████| 44506/44506 [00:02<00:00, 21169.07it/s]\n", + "Epoch 12: 100%|██████████| 44506/44506 [00:02<00:00, 20967.64it/s]\n", + "Epoch 13: 100%|██████████| 44506/44506 [00:02<00:00, 20192.34it/s]\n", + "Epoch 14: 100%|██████████| 44506/44506 [00:02<00:00, 18910.62it/s]\n", + "Epoch 15: 100%|██████████| 44506/44506 [00:02<00:00, 20810.41it/s]\n", + "Epoch 16: 100%|██████████| 44506/44506 [00:02<00:00, 21361.88it/s]\n", + "Epoch 17: 100%|██████████| 44506/44506 [00:02<00:00, 18440.51it/s]\n", + "Epoch 18: 100%|██████████| 44506/44506 [00:02<00:00, 21206.01it/s]\n", + "Epoch 19: 100%|██████████| 44506/44506 [00:02<00:00, 20086.00it/s]\n", + "Epoch 20: 100%|██████████| 44506/44506 [00:02<00:00, 20943.08it/s]\n" + ] + } + ], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "import torch\n", + "import torch.nn as nn\n", + "import torch.optim as optim\n", + "from torch.utils.data import DataLoader, TensorDataset\n", + "from gensim.models.doc2vec import Doc2Vec, TaggedDocument\n", + "from nltk.tokenize import word_tokenize\n", + "from sklearn.preprocessing import MultiLabelBinarizer\n", + "from sklearn.model_selection import train_test_split\n", + "from tqdm import tqdm\n", + "\n", + "# Read data from CSV file\n", + "movie_data = pd.read_csv(\n", + " \"/Users/vipul/Nova/Projects/genre_spectrum/movies_metadata.csv\", low_memory=False\n", + ")\n", + "device = torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\")\n", + "\n", + "\n", + "def preprocess_data(movie_data_chunk):\n", + " tagged_docs = []\n", + " valid_indices = []\n", + " movie_info = []\n", + "\n", + " # Wrap your loop with tqdm\n", + " for i, row in tqdm(movie_data_chunk.iterrows(), total=len(movie_data_chunk)):\n", + " try:\n", + " # Constructing movie text\n", + " movies_text = \"\"\n", + " movies_text += \"Overview: \" + row[\"overview\"] + \"\\n\"\n", + " genres = \", \".join([genre[\"name\"] for genre in eval(row[\"genres\"])])\n", + " movies_text += \"Overview: \" + row[\"overview\"] + \"\\n\"\n", + " movies_text += \"Genres: \" + genres + \"\\n\"\n", + " movies_text += \"Title: \" + row[\"title\"] + \"\\n\"\n", + " tagged_docs.append(\n", + " TaggedDocument(words=word_tokenize(movies_text.lower()), tags=[str(i)])\n", + " )\n", + " valid_indices.append(i)\n", + " movie_info.append((row[\"title\"], genres))\n", + " except Exception as e:\n", + " continue\n", + "\n", + " return tagged_docs, valid_indices, movie_info\n", + "\n", + "\n", + "def train_doc2vec_model(tagged_data, num_epochs=20):\n", + " # Initialize Doc2Vec model\n", + " doc2vec_model = Doc2Vec(vector_size=100, min_count=2, epochs=num_epochs)\n", + " doc2vec_model.build_vocab(tqdm(tagged_data, desc=\"Building Vocabulary\"))\n", + " for epoch in range(num_epochs):\n", + " doc2vec_model.train(\n", + " tqdm(tagged_data, desc=f\"Epoch {epoch+1}\"),\n", + " total_examples=doc2vec_model.corpus_count,\n", + " epochs=doc2vec_model.epochs,\n", + " )\n", + "\n", + " return doc2vec_model\n", + "\n", + "\n", + "# Preprocess data and extract genres for the first 1000 movies\n", + "chunk_size = 1000\n", + "tagged_data = []\n", + "valid_indices = []\n", + "movie_info = []\n", + "for chunk_start in range(0, len(movie_data), chunk_size):\n", + " movie_data_chunk = movie_data.iloc[chunk_start : chunk_start + chunk_size]\n", + " chunk_tagged_data, chunk_valid_indices, chunk_movie_info = preprocess_data(\n", + " movie_data_chunk\n", + " )\n", + " tagged_data.extend(chunk_tagged_data)\n", + " valid_indices.extend(chunk_valid_indices)\n", + " movie_info.extend(chunk_movie_info)\n", + "\n", + "doc2vec_model = train_doc2vec_model(tagged_data)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "VryHT1zVuEp0" + }, + "source": [ + "### Training a Neural Network for the Genre Classification Task" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "3pVNy2UKt5lu" + }, + "outputs": [], + "source": [ + "# Extract genre labels for the valid indices\n", + "genres_list = []\n", + "for i in valid_indices:\n", + " row = movie_data.loc[i]\n", + " genres = [genre[\"name\"] for genre in eval(row[\"genres\"])]\n", + " genres_list.append(genres)\n", + "\n", + "mlb = MultiLabelBinarizer()\n", + "genre_labels = mlb.fit_transform(genres_list)\n", + "\n", + "embeddings = []\n", + "for i in valid_indices:\n", + " embeddings.append(doc2vec_model.dv[str(i)])\n", + "X_train, X_test, y_train, y_test = train_test_split(\n", + " embeddings, genre_labels, test_size=0.2, random_state=42\n", + ")\n", + "\n", + "X_train_np = np.array(X_train, dtype=np.float32)\n", + "y_train_np = np.array(y_train, dtype=np.float32)\n", + "X_test_np = np.array(X_test, dtype=np.float32)\n", + "y_test_np = np.array(y_test, dtype=np.float32)\n", + "\n", + "X_train_tensor = torch.tensor(X_train_np)\n", + "y_train_tensor = torch.tensor(y_train_np)\n", + "X_test_tensor = torch.tensor(X_test_np)\n", + "y_test_tensor = torch.tensor(y_test_np)\n", + "\n", + "\n", + "class GenreClassifier(nn.Module):\n", + " def __init__(self, input_size, output_size):\n", + " super(GenreClassifier, self).__init__()\n", + " self.fc1 = nn.Linear(input_size, 512)\n", + " self.bn1 = nn.BatchNorm1d(512)\n", + " self.fc2 = nn.Linear(512, 256)\n", + " self.bn2 = nn.BatchNorm1d(256)\n", + " self.fc3 = nn.Linear(256, 128)\n", + " self.bn3 = nn.BatchNorm1d(128)\n", + " self.fc4 = nn.Linear(128, output_size)\n", + " self.relu = nn.ReLU()\n", + " self.dropout = nn.Dropout(p=0.2) # Adjust the dropout rate as needed\n", + "\n", + " def forward(self, x):\n", + " x = self.fc1(x)\n", + " x = self.bn1(x)\n", + " x = self.relu(x)\n", + " x = self.dropout(x)\n", + " x = self.fc2(x)\n", + " x = self.bn2(x)\n", + " x = self.relu(x)\n", + " x = self.dropout(x)\n", + " x = self.fc3(x)\n", + " x = self.bn3(x)\n", + " x = self.relu(x)\n", + " x = self.dropout(x)\n", + " x = self.fc4(x)\n", + " return x\n", + "\n", + "\n", + "# Move model to the selected device\n", + "model = GenreClassifier(input_size=100, output_size=len(mlb.classes_)).to(device)\n", + "\n", + "# Define loss function and optimizer\n", + "criterion = nn.BCEWithLogitsLoss()\n", + "optimizer = optim.Adam(model.parameters(), lr=0.001)\n", + "\n", + "# Training loop\n", + "epochs = 50\n", + "batch_size = 64\n", + "\n", + "train_dataset = TensorDataset(X_train_tensor.to(device), y_train_tensor.to(device))\n", + "train_loader = DataLoader(train_dataset, batch_size=batch_size, shuffle=True)\n", + "\n", + "for epoch in range(epochs):\n", + " model.train()\n", + " running_loss = 0.0\n", + " for inputs, labels in train_loader:\n", + " inputs, labels = inputs.to(device), labels.to(device) # Move data to device\n", + " optimizer.zero_grad()\n", + " outputs = model(inputs)\n", + " loss = criterion(outputs, labels)\n", + " loss.backward()\n", + " optimizer.step()\n", + " running_loss += loss.item() * inputs.size(0)\n", + " epoch_loss = running_loss / len(train_loader.dataset)\n", + " print(f\"Epoch [{epoch + 1}/{epochs}], Loss: {epoch_loss:.4f}\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "yV8lTDYIubEQ" + }, + "source": [ + "### Testing the `model` to see if our model is able to predict the genres for the movies from the test dataset" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "73D3aqdJuct8" + }, + "outputs": [], + "source": [ + "from sklearn.metrics import f1_score\n", + "\n", + "model.eval()\n", + "with torch.no_grad():\n", + " X_test_tensor, y_test_tensor = X_test_tensor.to(device), y_test_tensor.to(\n", + " device\n", + " ) # Move test data to device\n", + " outputs = model(X_test_tensor)\n", + " test_loss = criterion(outputs, y_test_tensor)\n", + " print(f\"Test Loss: {test_loss.item():.4f}\")\n", + "\n", + "\n", + "thresholds = [0.1] * len(mlb.classes_)\n", + "thresholds_tensor = torch.tensor(thresholds, device=device).unsqueeze(0)\n", + "\n", + "# Convert the outputs to binary predictions using varying thresholds\n", + "predicted_labels = (outputs > thresholds_tensor).cpu().numpy()\n", + "\n", + "# Convert binary predictions and actual labels to multi-label format\n", + "predicted_multilabels = mlb.inverse_transform(predicted_labels)\n", + "actual_multilabels = mlb.inverse_transform(y_test_np)\n", + "\n", + "# Print the Predicted and Actual Labels for each movie\n", + "for i, (predicted, actual) in enumerate(zip(predicted_multilabels, actual_multilabels)):\n", + " print(f\"Movie {i+1}:\")\n", + " print(f\" Predicted Labels: {predicted}\")\n", + " print(f\" Actual Labels: {actual}\")\n", + "\n", + "\n", + "# Compute F1-score\n", + "f1 = f1_score(y_test_np, predicted_labels, average=\"micro\")\n", + "print(f\"F1-score: {f1:.4f}\")\n", + "\n", + "# Saving the trained model\n", + "torch.save(model.state_dict(), \"trained_model.pth\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "kZrHpMm4un0G" + }, + "source": [ + "### Storing the Doc2Vec Embeddings into LanceDB VectorDatabase" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "BTTNb9irrY4h" + }, + "outputs": [], + "source": [ + "import lancedb\n", + "import numpy as np\n", + "import pandas as pd\n", + "\n", + "data = []\n", + "\n", + "for i in valid_indices:\n", + " embedding = doc2vec_model.dv[str(i)]\n", + " title, genres = movie_info[valid_indices.index(i)]\n", + " data.append({\"title\": title, \"genres\": genres, \"vector\": embedding.tolist()})\n", + "\n", + "db = lancedb.connect(\".db\")\n", + "tbl = db.create_table(\"doc2vec_embeddings\", data, mode=\"Overwrite\")\n", + "db[\"doc2vec_embeddings\"].head()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "ciUFn7uQrY4i" + }, + "outputs": [], + "source": [ + "def get_recommendations(title):\n", + " pd_data = pd.DataFrame(data)\n", + " result = (\n", + " tbl.search(pd_data[pd_data[\"title\"] == title][\"vector\"].values[0])\n", + " .metric(\"cosine\")\n", + " .limit(10)\n", + " .to_pandas()\n", + " )\n", + " return result[[\"title\"]]" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "8Kz-JGsTuwmk" + }, + "source": [ + "### D-Day : Let's generate some recommendations" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "uw_El12JrY4j", + "outputId": "c245bab5-7966-4fd1-ec72-37f708c3b570" + }, + "outputs": [ { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "uw_El12JrY4j", - "outputId": "c245bab5-7966-4fd1-ec72-37f708c3b570" - }, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
title
0Vertical Limit
1Demons of War
2Fear and Desire
3Escape from Sobibor
4Last Girl Standing
5K2: Siren of the Himalayas
6Ghost Ship
7Camp Massacre
8Captain Nemo and the Underwater City
9Seas Beneath
\n", - "
" - ], - "text/plain": [ - " title\n", - "0 Vertical Limit\n", - "1 Demons of War\n", - "2 Fear and Desire\n", - "3 Escape from Sobibor\n", - "4 Last Girl Standing\n", - "5 K2: Siren of the Himalayas\n", - "6 Ghost Ship\n", - "7 Camp Massacre\n", - "8 Captain Nemo and the Underwater City\n", - "9 Seas Beneath" - ] - }, - "execution_count": 20, - "metadata": {}, - "output_type": "execute_result" - } + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
title
0Vertical Limit
1Demons of War
2Fear and Desire
3Escape from Sobibor
4Last Girl Standing
5K2: Siren of the Himalayas
6Ghost Ship
7Camp Massacre
8Captain Nemo and the Underwater City
9Seas Beneath
\n", + "
" ], - "source": [ - "get_recommendations(\"Vertical Limit\")" + "text/plain": [ + " title\n", + "0 Vertical Limit\n", + "1 Demons of War\n", + "2 Fear and Desire\n", + "3 Escape from Sobibor\n", + "4 Last Girl Standing\n", + "5 K2: Siren of the Himalayas\n", + "6 Ghost Ship\n", + "7 Camp Massacre\n", + "8 Captain Nemo and the Underwater City\n", + "9 Seas Beneath" ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" } - ], - "metadata": { - "colab": { - "provenance": [] - }, - "kernelspec": { - "display_name": "env", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.12.3" - } + ], + "source": [ + "get_recommendations(\"Vertical Limit\")" + ] + } + ], + "metadata": { + "colab": { + "provenance": [] + }, + "kernelspec": { + "display_name": "env", + "language": "python", + "name": "python3" }, - "nbformat": 4, - "nbformat_minor": 0 + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.3" + } + }, + "nbformat": 4, + "nbformat_minor": 0 }