diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 3e6c55d5d5f30a1b10d506adf918bd08013515f0..fd0ace912792f84c5998a4475ee30b322406b8e1 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -16,7 +16,7 @@ repos: - id: mixed-line-ending - id: trailing-whitespace - repo: https://github.com/charliermarsh/ruff-pre-commit - rev: v0.1.2 + rev: v0.1.5 hooks: - id: ruff diff --git a/docs/examples/evaluation/multi_modal/multi_modal_rag_evaluation.ipynb b/docs/examples/evaluation/multi_modal/multi_modal_rag_evaluation.ipynb index afcbecaa161d8ef06a73952bd0eb94efdd0ca764..203bbb1576ecebf66a42931b6abb3eefe98e5dbb 100644 --- a/docs/examples/evaluation/multi_modal/multi_modal_rag_evaluation.ipynb +++ b/docs/examples/evaluation/multi_modal/multi_modal_rag_evaluation.ipynb @@ -106,7 +106,7 @@ "## the same directory as this notebook. ##\n", "#######################################################################\n", "\n", - "download_notebook_data = True\n", + "download_notebook_data = False\n", "if download_notebook_data:\n", " !wget \"https://www.dropbox.com/scl/fo/tpesl5m8ye21fqza6wq6j/h?rlkey=zknd9pf91w30m23ebfxiva9xn&dl=1\" -O asl_data.zip -q" ] @@ -130,10 +130,10 @@ "from llama_index.multi_modal_llms.generic_utils import (\n", " load_image_urls,\n", ")\n", - "from llama_index import SimpleDirectoryReader\n", + "from llama_index import SimpleDirectoryReader, Document\n", "\n", "# context images\n", - "image_path = \"/Users/nerdai/Datasets/Images/asl-labelled\"\n", + "image_path = \"./asl_data/images\"\n", "image_documents = SimpleDirectoryReader(image_path).load_data()\n", "\n", "# context text\n", @@ -162,9 +162,9 @@ "outputs": [], "source": [ "from llama_index.indices.multi_modal.base import MultiModalVectorStoreIndex\n", - "from llama_index.node_parser import SimpleNodeParser\n", + "from llama_index.node_parser import SentenceSplitter\n", "\n", - "node_parser = SimpleNodeParser.from_defaults()\n", + "node_parser = SentenceSplitter.from_defaults()\n", "image_nodes = node_parser.get_nodes_from_documents(image_documents)\n", "text_nodes = node_parser.get_nodes_from_documents(text_documents)\n", "\n", @@ -196,7 +196,7 @@ "## that are included in the .zip download ##\n", "#######################################################################\n", "\n", - "load_previously_generated_text_descriptions = False" + "load_previously_generated_text_descriptions = True" ] }, { @@ -207,6 +207,7 @@ "outputs": [], "source": [ "from llama_index.multi_modal_llms.openai import OpenAIMultiModal\n", + "from llama_index.schema import ImageDocument\n", "import tqdm\n", "\n", "if not load_previously_generated_text_descriptions:\n", @@ -254,7 +255,7 @@ "source": [ "A keen reader will notice that we stored the text descriptions within the `text` field of an `ImageDocument`. As we did before, to create a `MultiModalVectorStoreIndex`, we'll need to parse the `ImageDocuments` as `ImageNodes`, and thereafter pass the nodes to the constructor. \n", "\n", - "Note that when `ImageNodes`s with populated `text` fields are used to build a `MultiModalVectorStoreIndex`, the current implementation will use text embeddings as the representation for the image, and again these are what will be used for retrieval." + "Note that when `ImageNodes`s that have populated `text` fields are used to build a `MultiModalVectorStoreIndex`, we can choose to use this text to build embeddings on that will be used for retrieval. To so, we just specify the class attribute `is_image_to_text` to `True`." ] }, { @@ -269,7 +270,7 @@ ")\n", "\n", "asl_text_desc_index = MultiModalVectorStoreIndex(\n", - " image_with_text_nodes + text_nodes\n", + " nodes=image_with_text_nodes + text_nodes, is_image_to_text=True\n", ")" ] }, @@ -315,7 +316,6 @@ "openai_mm_llm = OpenAIMultiModal(\n", " model=\"gpt-4-vision-preview\",\n", " max_new_tokens=300,\n", - " api_key=os.getenv(\"OPENAI_API_KEY_ORG\"),\n", ")\n", "\n", "llava_mm_llm = ReplicateMultiModal(\n", @@ -329,7 +329,8 @@ " multi_modal_llm=openai_mm_llm, text_qa_template=qa_tmpl\n", " ),\n", " \"mm_clip_llava\": asl_index.as_query_engine(\n", - " multi_modal_llm=llava_mm_llm, text_qa_template=qa_tmpl\n", + " multi_modal_llm=llava_mm_llm,\n", + " text_qa_template=qa_tmpl,\n", " ),\n", " \"mm_text_desc_gpt4v\": asl_text_desc_index.as_query_engine(\n", " multi_modal_llm=openai_mm_llm, text_qa_template=qa_tmpl\n", @@ -337,7 +338,11 @@ " \"mm_text_desc_llava\": asl_text_desc_index.as_query_engine(\n", " multi_modal_llm=llava_mm_llm, text_qa_template=qa_tmpl\n", " ),\n", - "}" + "}\n", + "\n", + "# llava only supports 1 image per call at current moment\n", + "rag_engines[\"mm_clip_llava\"].retriever.image_similarity_top_k = 1\n", + "rag_engines[\"mm_text_desc_llava\"].retriever.image_similarity_top_k = 1" ] }, { @@ -356,9 +361,9 @@ "metadata": {}, "outputs": [], "source": [ - "letter = \"Q\"\n", + "letter = \"R\"\n", "query = QUERY_STR_TEMPLATE.format(symbol=letter)\n", - "response = rag_engines[\"mm_text_desc_llava\"].query(query)" + "response = rag_engines[\"mm_text_desc_gpt4v\"].query(query)" ] }, { @@ -371,7 +376,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Query: How can I sign a Q?.\n", + "Query: How can I sign a R?.\n", "=======\n", "Retrieved Images:\n", "\n" @@ -379,7 +384,7 @@ }, { "data": { - "image/png": "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\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAaIAAAC+CAYAAAB3aAs7AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAADE40lEQVR4nOz9e9Cl11XfiX/W3s/znPNe+q6+qHVrSb7LFwhgYQcwBAVDapgh8BsSxyGeTGrwJJgMcU1N4Uxi4pmpITCXgINnqAqMIZUwCTNTISmS4jdgJwU/cAjYGPkiybqrW31VX977OefZe6/fH2vv53nO2y1Z3ZYltzirdPSePuc89733Wuu7vmstUVVlIQtZyEIWspBXSNwrfQILWchCFrKQP9myUEQLWchCFrKQV1QWimghC1nIQhbyispCES1kIQtZyEJeUVkoooUsZCELWcgrKgtFtJCFLGQhC3lFZaGIFrKQhSxkIa+oLBTRQhaykIUs5BWVhSJayEIWspCFvKKyUETPI/fddx+//uu//ooce//+/fy7f/fvXrbj/dN/+k955zvf+YK/WV1d5XOf+9zLdEYLWcj1y2LOzsvNNGdvOkX07d/+7YxGI1ZXVzl48CDvete7+MM//MMXvf2JEyf4tV/7tS/7uy984Qv8R//Rf/QVnOlXR37pl34J7z2rq6vs2bOH1772tfzsz/7sV7TP9773vfze7/1e9+9r3aPNzU3e8pa3fEXHuR75yEc+wtGjR9m7dy/vfe972dzcfNmOvZCXVhZz9tU/Z3/1V3+Vd77znSwvL/N1X/d11739TaeIAH7qp36Kzc1Nzp49y/3338/3f//3v2T7DiHwtV5+7y1veQubm5tsbGzwC7/wC/z4j/84v/mbv/lKn9ZLJh//+Mf5xV/8RX7nd36HZ555hosXL/I3/+bffKVPayFfgSzm7Kt7zh48eJAf+7Ef47/9b//bG9r+plRERZqm4X3vex8nT57kwoULAKgqH/3oR3nDG97A/v37+fZv/3YeeughAP7T//Q/5ZlnnuE973kPq6ur/Jf/5X8JgIjwcz/3c7z5zW9mZWWFzc3NqyyM3/qt3+Ltb387+/fv57777uNf/at/BcAf/dEfsWfPHra3t7vfnjlzhqZpePbZZwH4zGc+w3d8x3dw8OBBXvOa1/CP/tE/6n6bUuLv/t2/y9GjRzl+/Dgf+9jHrusevOtd7+K+++7jwQcfRFX5X/6X/4V7772XgwcP8t3f/d088cQT3W//1//1f+XOO+9kz549nDhxgl/4hV8AzGIrVswL3aPPfvaz3T1+oeOcOHGCn/7pn+abv/mb2bNnD+9617s4efLki76m/+P/+D/4m3/zb/K6172O/fv389//9/89/+f/+X+ys7NzXfdmIV97spizr845+8ADD/CDP/iD3Hbbbdd1LzrRm0ze9a536T/4B/9AVVW3t7f1b/2tv6W33HKLtm2rqqof+9jH9K1vfat+6Utf0rZt9Wd/9mf13nvv1el0qqqqd911l/6Lf/Ev5vYJ6Dve8Q599tlndTKZaIxx7nd//Md/rPv379dPfOITGmPU3/md39G9e/fqww8/rKqq9913n/6Tf/JPuv39T//T/6QPPPCAqqqeOXNGDx48qP/8n/9zDSHo5z73Ob311lv1t37rt1RV9Rd/8Rf19ttv14ceeki3trb0P/vP/jN1zum//bf/9prX//GPf1zf9ra3qapqSkk/+clP6ng81k9+8pP6y7/8y3r8+HF98MEHdWdnRz/4wQ/qm970Jm3bVh955BFdWlrShx56SFVVz549q3/8x3981T5f6B790R/9karqCx6nbP+Wt7xFn3jiCd3Z2dHv+Z7v0fe9733dvv76X//r+tf/+l9/niesunfvXv3N3/zN7t+z2UwB/exnP/u82yzka1cWc/bVP2evda3XIzelIhqPx7pv3z4VET169Kj+9m//dvf9m970Jv21X/u1uW2OHz/e/eb5Htjuz4a/+xt/42/oj/3Yj819/5f+0l/S/+6/++9UVfWnfuqn9N3vfnf33Vvf+lb9x//4H6uq6k//9E/r933f981t+7f/9t/W//w//89VVfXP/Jk/oz/1Uz/VfXf27FkFXnBQO+d03759euDAAX3zm9+sP//zP6+qqg888ID+/b//97vfTiYT3bNnj/7u7/6uPvbYYzoej/X//r//b93e3r5qn9czqF/oOGX7//1//9+77//JP/kn+uY3v/ma13Mtcc7pH/zBH8x9try8rL/zO7/zovexkK8dWczZV/+cfb7zerFyU0JzP/mTP8mVK1c4efIkt912Gw8++GD33VNPPcVf/st/mf3793evy5cvc+rUqRfc55133vm83z311FP8/M///Nw+/+W//JecPn0a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/elPc8cdd7CwsMADDzzAv/3bv93sId2wfOlLX+Ld7343R48eRUT47Gc/O/W+qvI7v/M7HDlyhMXFRR566CG+/e1vT33m7NmzPProo6yurrK+vs6HPvQhLl269DpeRS+9XF36Nduv2avJrlNEf/M3f8NHP/pRPvaxj/HVr36V+++/n3e961288MILN3toNySbm5vcf//9fPrTn577/h/8wR/wyU9+ks985jM8/vjjLC8v8653vYvt7e3ymUcffZRvfOMbfO5zn+Pv//7v+dKXvsSHP/zh1+sSeunlqtKv2X7NXlN0l8k73vEO/fVf//XyPISgR48e1U984hM3cVSvjgD6t3/7t+V5jFEPHz6sf/iHf1heO3funA6HQ/2rv/orVVV96qmnFNAvf/nL5TP/8A//oCKiP/zhD1+3sffSy5WkX7P9mr2W7CqPaDwe88QTT/DQQw+V15xzPPTQQzz22GM3cWSvjTz77LOcOnVq6nrX1tZ44IEHyvU+9thjrK+v8/a3v7185qGHHsI5x+OPP/66j7mXXrrSr9l+zb4S2VWK6KWXXiKEwKFDh6ZeP3ToEKdOnbpJo3rtJF/T1a731KlTbGxsTL1fVRX79u27Je9JL7tL+jVLed6v2SvLrlJEvfTSSy+93HqyqxTRgQMH8N5z+vTpqddPnz7N4cOHb9KoXjvJ13S16z18+PCOoG/TNJw9e/aWvCe97C7p1yzleb9mryy7ShENBgPe9ra38fnPf768FmPk85//PA8++OBNHNlrI3feeSeHDx+eut4LFy7w+OOPl+t98MEHOXfuHE888UT5zBe+8AVijDzwwAOv+5h76aUr/Zrt1+wrkpudLXG98td//dc6HA71z/7sz/Spp57SD3/4w7q+vq6nTp262UO7Ibl48aI++eST+uSTTyqgf/zHf6xPPvmkfu9731NV1d///d/X9fV1/bu/+zv9+te/rr/0S7+kd955p25tbZVjPPzww/ozP/Mz+vjjj+u//Mu/6MmTJ/X973//zbqkXnqZkn7N9mv2WrLrFJGq6qc+9Sm97bbbdDAY6Dve8Q7913/915s9pBuWf/7nf1Zgx88HPvABVbV00N/+7d/WQ4cO6XA41He+8536zW9+c+oYZ86c0fe///26srKiq6ur+sEPflAvXrx4E66ml17mS79m+zV7NenbQPTSSy+99HJTZVfFiHrppZdeern1pFdEvfTSSy+93FTpFVEvvfTSSy83VXpF1EsvvfTSy02VXhH10ksvvfRyU6VXRL300ksvvdxU6RVRL7300ksvN1V6RdRLL7300stNlV4R9dJLL730clOlV0S99NJLL73cVOkVUS+99NJLLzdVekXUSy+99NLLTZX/H0TmRjVERtpNAAAAAElFTkSuQmCC\n", "text/plain": [ "<Figure size 500x200 with 2 Axes>" ] @@ -392,14 +397,7 @@ "output_type": "stream", "text": [ "=======\n", - "Response: To sign the letter \"Q\" in American Sign Language (ASL), you can use the following steps:\n", - "1. Fold the ring and little fingers down across the palm of your hand.\n", - "2. Tuck your thumb in so that it is in front of the index finger.\n", - "3. Straighten the index finger and point it slightly forward, parallel to the thumb.\n", - "4. Bend the middle finger down and across to the right of the thumb.\n", - "5. Rotate your whole hand towards the left and tilt it slightly so that the thumb and index finger are pointing almost straight down.\n", - "\n", - "This hand gesture represents the letter \"Q\" in the American Sign Language alphabet.\n", + "Response: To sign the letter \"R\" in American Sign Language (ASL), you would follow the instructions provided: the ring and little finger should be folded against the palm and held down by your thumb, while the index and middle finger are straight and crossed with the index finger in front to form the letter \"R.\"\n", "=======\n", "\n" ] @@ -420,7 +418,9 @@ "source": [ "### Retriever Evaluation\n", "\n", - "In this part of the notebook, we will carry out the evaluations of our retrievers. Recall that essentially we have two multi-modal retrievers: one that uses default CLIP image embeddings; and another that uses embeddings of associated gpt-4v text descriptions. Before getting into a quantitative analysis of the performances, we create a visualization of the top-1 retrievals for the `text_desc_retriever` (simply swap out for `clip_retriever` if you want!) on all user queries asking to sign each ASL alphabet letter." + "In this part of the notebook, we will carry out the evaluations of our retrievers. Recall that essentially we have two multi-modal retrievers: one that uses default CLIP image embeddings; and another that uses embeddings of associated gpt-4v text descriptions. Before getting into a quantitative analysis of the performances, we create a visualization of the top-1 retrievals for the `text_desc_retriever` (simply swap out for `clip_retriever` if you want!) on all user queries asking to sign each ASL alphabet letter.\n", + "\n", + "NOTE: since we're not sending retrieved documents to LLaVA, we can set `image_simiarity_top_k` to a value greater than 1. When we perform Generation Evaluation, we will have to again use the `rag_engine` defined above which has this parameter set to 1 for those RAG engines using LLaVA." ] }, { @@ -465,6 +465,8 @@ } ], "source": [ + "from llama_index.schema import TextNode, ImageNode\n", + "\n", "f, axarr = plt.subplots(3, 9)\n", "f.set_figheight(6)\n", "f.set_figwidth(15)\n", @@ -784,7 +786,7 @@ "## the .zip download ##\n", "#######################################################################\n", "\n", - "load_previous_responses = False" + "load_previous_responses = True" ] }, { @@ -792,26 +794,16 @@ "execution_count": null, "id": "9dd5fb24-ef83-436b-847d-847c07b58ed6", "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:27<00:00, 27.40s/it]\n" - ] - } - ], + "outputs": [], "source": [ "import time\n", "import tqdm\n", "\n", - "query_str = \"How can I sign a {symbol}?.\"\n", - "\n", "if not load_previous_responses:\n", - " # response_data = []\n", + " response_data = []\n", " for letter in tqdm.tqdm(asl_text_descriptions.keys()):\n", " data_entry = {}\n", - " query = query_str.format(symbol=letter)\n", + " query = QUERY_STR_TEMPLATE.format(symbol=letter)\n", " data_entry[\"query\"] = query\n", "\n", " responses = {}\n", @@ -879,16 +871,55 @@ "source": [ "from llama_index import ServiceContext\n", "from llama_index.llms import OpenAI\n", - "from llama_index.evaluation import (\n", - " CorrectnessEvaluator,\n", + "from llama_index.evaluation import CorrectnessEvaluator\n", + "from llama_index.evaluation.multi_modal import (\n", + " MultiModalRelevancyEvaluator,\n", + " MultiModalFaithfulnessEvaluator,\n", ")\n", + "\n", "import os\n", "\n", - "gpt_4_context = ServiceContext.from_defaults(\n", - " llm=OpenAI(temperature=0, model=\"gpt-4\"),\n", + "judges = {}\n", + "\n", + "judges[\"correctness\"] = CorrectnessEvaluator(\n", + " service_context=ServiceContext.from_defaults(\n", + " llm=OpenAI(temperature=0, model=\"gpt-4\"),\n", + " )\n", + ")\n", + "\n", + "judges[\"relevancy\"] = MultiModalRelevancyEvaluator(\n", + " multi_modal_llm=OpenAIMultiModal(\n", + " model=\"gpt-4-vision-preview\",\n", + " max_new_tokens=300,\n", + " )\n", ")\n", "\n", - "gpt4_judge = CorrectnessEvaluator(service_context=gpt_4_context)" + "judges[\"faithfulness\"] = MultiModalFaithfulnessEvaluator(\n", + " multi_modal_llm=OpenAIMultiModal(\n", + " model=\"gpt-4-vision-preview\",\n", + " max_new_tokens=300,\n", + " )\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "0a43ecec-9dd7-4915-aa88-5cc736495e6a", + "metadata": {}, + "outputs": [], + "source": [ + "#######################################################################\n", + "## This section of the notebook can make a total of ~200 GPT-4V ##\n", + "## which is heavily rate limited (100 per day). To follow along, ##\n", + "## with previous generated evaluations set load_previous_evaluations ##\n", + "## to True. To test out the evaluation execution, set number_evals ##\n", + "## to any number between (1-27). The json is part of the .zip ##\n", + "## download ##\n", + "#######################################################################\n", + "\n", + "load_previous_evaluations = True\n", + "number_evals = 27" ] }, { @@ -896,33 +927,88 @@ "execution_count": null, "id": "127823db-0bc2-4071-b853-2ad27516f862", "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 27/27 [08:21<00:00, 18.57s/it]\n" - ] - } - ], + "outputs": [], "source": [ - "# loop through all responses and evaluate them\n", - "names = []\n", - "evals = []\n", - "for data_entry in tqdm.tqdm(response_data):\n", - " reg_ex = r\"(?:How can I sign a ([A-Z]+)?)\"\n", - " match = re.search(reg_ex, data_entry[\"query\"])\n", - " if match:\n", - " letter = match.group(1)\n", - " reference_answer = human_answers[letter]\n", - " for rag_name, rag_response_data in data_entry[\"responses\"].items():\n", - " eval_result = await gpt4_judge.aevaluate(\n", - " query=data_entry[\"query\"],\n", - " response=rag_response_data[\"response\"],\n", - " reference=reference_answer,\n", - " )\n", - " names.append(rag_name)\n", - " evals.append(eval_result)" + "if not load_previous_evaluations:\n", + " evals = {\n", + " \"names\": [],\n", + " \"correctness\": [],\n", + " \"relevancy\": [],\n", + " \"faithfulness\": [],\n", + " }\n", + "\n", + " # loop through all responses and evaluate them\n", + " for data_entry in tqdm.tqdm(response_data[:number_evals]):\n", + " reg_ex = r\"(?:How can I sign a ([A-Z]+)?)\"\n", + " match = re.search(reg_ex, data_entry[\"query\"])\n", + "\n", + " batch_names = []\n", + " batch_correctness = []\n", + " batch_relevancy = []\n", + " batch_faithfulness = []\n", + " if match:\n", + " letter = match.group(1)\n", + " reference_answer = human_answers[letter]\n", + " for rag_name, rag_response_data in data_entry[\"responses\"].items():\n", + " correctness_result = await judges[\"correctness\"].aevaluate(\n", + " query=data_entry[\"query\"],\n", + " response=rag_response_data[\"response\"],\n", + " reference=reference_answer,\n", + " )\n", + "\n", + " relevancy_result = judges[\"relevancy\"].evaluate(\n", + " query=data_entry[\"query\"],\n", + " response=rag_response_data[\"response\"],\n", + " contexts=rag_response_data[\"sources\"][\"texts\"],\n", + " image_paths=rag_response_data[\"sources\"][\"images\"],\n", + " )\n", + "\n", + " faithfulness_result = judges[\"faithfulness\"].evaluate(\n", + " query=data_entry[\"query\"],\n", + " response=rag_response_data[\"response\"],\n", + " contexts=rag_response_data[\"sources\"][\"texts\"],\n", + " image_paths=rag_response_data[\"sources\"][\"images\"],\n", + " )\n", + "\n", + " batch_names.append(rag_name)\n", + " batch_correctness.append(correctness_result)\n", + " batch_relevancy.append(relevancy_result)\n", + " batch_faithfulness.append(faithfulness_result)\n", + "\n", + " evals[\"names\"] += batch_names\n", + " evals[\"correctness\"] += batch_correctness\n", + " evals[\"relevancy\"] += batch_relevancy\n", + " evals[\"faithfulness\"] += batch_faithfulness\n", + "\n", + " # save evaluations\n", + " evaluations_objects = {\n", + " \"names\": evals[\"names\"],\n", + " \"correctness\": [e.dict() for e in evals[\"correctness\"]],\n", + " \"faithfulness\": [e.dict() for e in evals[\"faithfulness\"]],\n", + " \"relevancy\": [e.dict() for e in evals[\"relevancy\"]],\n", + " }\n", + " with open(\"asl_data/evaluations.json\", \"w\") as json_file:\n", + " json.dump(evaluations_objects, json_file)\n", + "else:\n", + " from llama_index.evaluation import EvaluationResult\n", + "\n", + " # load up previously saved image descriptions\n", + " with open(\"asl_data/evaluations.json\") as json_file:\n", + " evaluations_objects = json.load(json_file)\n", + "\n", + " evals = {}\n", + " evals[\"names\"] = evaluations_objects[\"names\"]\n", + " evals[\"correctness\"] = [\n", + " EvaluationResult.parse_obj(e)\n", + " for e in evaluations_objects[\"correctness\"]\n", + " ]\n", + " evals[\"faithfulness\"] = [\n", + " EvaluationResult.parse_obj(e)\n", + " for e in evaluations_objects[\"faithfulness\"]\n", + " ]\n", + " evals[\"relevancy\"] = [\n", + " EvaluationResult.parse_obj(e) for e in evaluations_objects[\"relevancy\"]\n", + " ]" ] }, { @@ -945,9 +1031,27 @@ " df_make_pretty,\n", ")\n", "\n", - "deep_eval_df, mean_scores_df = get_eval_results_df(\n", - " names, evals, metric=\"correctness\"\n", - ")" + "deep_eval_df, mean_correctness_df = get_eval_results_df(\n", + " evals[\"names\"], evals[\"correctness\"], metric=\"correctness\"\n", + ")\n", + "_, mean_relevancy_df = get_eval_results_df(\n", + " evals[\"names\"], evals[\"relevancy\"], metric=\"relevancy\"\n", + ")\n", + "_, mean_faithfulness_df = get_eval_results_df(\n", + " evals[\"names\"], evals[\"faithfulness\"], metric=\"faithfulness\"\n", + ")\n", + "\n", + "mean_scores_df = pd.concat(\n", + " [\n", + " mean_correctness_df.reset_index(),\n", + " mean_relevancy_df.reset_index(),\n", + " mean_faithfulness_df.reset_index(),\n", + " ],\n", + " axis=0,\n", + " ignore_index=True,\n", + ")\n", + "mean_scores_df = mean_scores_df.set_index(\"index\")\n", + "mean_scores_df.index = mean_scores_df.index.set_names([\"metrics\"])" ] }, { @@ -960,55 +1064,55 @@ "data": { "text/html": [ "<style type=\"text/css\">\n", - "#T_14049_row0_col0, #T_14049_row0_col1, #T_14049_row0_col2, #T_14049_row0_col3, #T_14049_row1_col0, #T_14049_row1_col1, #T_14049_row1_col2, #T_14049_row1_col3, #T_14049_row2_col0, #T_14049_row2_col1, #T_14049_row2_col2, #T_14049_row2_col3, #T_14049_row3_col0, #T_14049_row3_col1, #T_14049_row3_col2, #T_14049_row3_col3 {\n", + "#T_ae790_row0_col0, #T_ae790_row0_col1, #T_ae790_row0_col2, #T_ae790_row0_col3, #T_ae790_row1_col0, #T_ae790_row1_col1, #T_ae790_row1_col2, #T_ae790_row1_col3, #T_ae790_row2_col0, #T_ae790_row2_col1, #T_ae790_row2_col2, #T_ae790_row2_col3, #T_ae790_row3_col0, #T_ae790_row3_col1, #T_ae790_row3_col2, #T_ae790_row3_col3 {\n", " inline-size: 300px;\n", " overflow-wrap: break-word;\n", "}\n", "</style>\n", - "<table id=\"T_14049\">\n", + "<table id=\"T_ae790\">\n", " <thead>\n", " <tr>\n", " <th class=\"blank level0\" > </th>\n", - " <th id=\"T_14049_level0_col0\" class=\"col_heading level0 col0\" >rag</th>\n", - " <th id=\"T_14049_level0_col1\" class=\"col_heading level0 col1\" >query</th>\n", - " <th id=\"T_14049_level0_col2\" class=\"col_heading level0 col2\" >scores</th>\n", - " <th id=\"T_14049_level0_col3\" class=\"col_heading level0 col3\" >feedbacks</th>\n", + " <th id=\"T_ae790_level0_col0\" class=\"col_heading level0 col0\" >rag</th>\n", + " <th id=\"T_ae790_level0_col1\" class=\"col_heading level0 col1\" >query</th>\n", + " <th id=\"T_ae790_level0_col2\" class=\"col_heading level0 col2\" >scores</th>\n", + " <th id=\"T_ae790_level0_col3\" class=\"col_heading level0 col3\" >feedbacks</th>\n", " </tr>\n", " </thead>\n", " <tbody>\n", " <tr>\n", - " <th id=\"T_14049_level0_row0\" class=\"row_heading level0 row0\" >0</th>\n", - " <td id=\"T_14049_row0_col0\" class=\"data row0 col0\" >mm_clip_gpt4v</td>\n", - " <td id=\"T_14049_row0_col1\" class=\"data row0 col1\" >How can I sign a A?.</td>\n", - " <td id=\"T_14049_row0_col2\" class=\"data row0 col2\" >4.500000</td>\n", - " <td id=\"T_14049_row0_col3\" class=\"data row0 col3\" >The generated answer is relevant and mostly correct. It accurately describes how to sign the letter 'A' in ASL, which matches the user query and the reference answer. However, it includes unnecessary information about images that were not mentioned in the user query.</td>\n", + " <th id=\"T_ae790_level0_row0\" class=\"row_heading level0 row0\" >0</th>\n", + " <td id=\"T_ae790_row0_col0\" class=\"data row0 col0\" >mm_clip_gpt4v</td>\n", + " <td id=\"T_ae790_row0_col1\" class=\"data row0 col1\" >How can I sign a A?.</td>\n", + " <td id=\"T_ae790_row0_col2\" class=\"data row0 col2\" >4.500000</td>\n", + " <td id=\"T_ae790_row0_col3\" class=\"data row0 col3\" >The generated answer is relevant and mostly correct. It accurately describes how to sign the letter 'A' in ASL, which matches the user query. However, it includes unnecessary information about images that were not mentioned in the user query, which slightly detracts from its overall correctness.</td>\n", " </tr>\n", " <tr>\n", - " <th id=\"T_14049_level0_row1\" class=\"row_heading level0 row1\" >1</th>\n", - " <td id=\"T_14049_row1_col0\" class=\"data row1 col0\" >mm_clip_llava</td>\n", - " <td id=\"T_14049_row1_col1\" class=\"data row1 col1\" >How can I sign a A?.</td>\n", - " <td id=\"T_14049_row1_col2\" class=\"data row1 col2\" >4.500000</td>\n", - " <td id=\"T_14049_row1_col3\" class=\"data row1 col3\" >The generated answer is relevant and mostly correct. It provides the necessary steps to sign the letter 'A' in ASL, but it lacks the additional information about the position of the hand and the common mistake of leaving the thumb in front, which is present in the reference answer.</td>\n", + " <th id=\"T_ae790_level0_row1\" class=\"row_heading level0 row1\" >1</th>\n", + " <td id=\"T_ae790_row1_col0\" class=\"data row1 col0\" >mm_clip_llava</td>\n", + " <td id=\"T_ae790_row1_col1\" class=\"data row1 col1\" >How can I sign a A?.</td>\n", + " <td id=\"T_ae790_row1_col2\" class=\"data row1 col2\" >4.500000</td>\n", + " <td id=\"T_ae790_row1_col3\" class=\"data row1 col3\" >The generated answer is relevant and mostly correct. It provides the necessary steps to sign the letter 'A' in ASL, but it lacks the additional information about the hand position and the difference between 'A' and 'S' that the reference answer provides.</td>\n", " </tr>\n", " <tr>\n", - " <th id=\"T_14049_level0_row2\" class=\"row_heading level0 row2\" >2</th>\n", - " <td id=\"T_14049_row2_col0\" class=\"data row2 col0\" >mm_text_desc_gpt4v</td>\n", - " <td id=\"T_14049_row2_col1\" class=\"data row2 col1\" >How can I sign a A?.</td>\n", - " <td id=\"T_14049_row2_col2\" class=\"data row2 col2\" >4.500000</td>\n", - " <td id=\"T_14049_row2_col3\" class=\"data row2 col3\" >The generated answer is relevant and mostly correct. It provides a clear description of how to sign the letter 'A' in American Sign Language, which matches the reference answer. However, it unnecessarily mentions the lack of images, which is not required in the context of the user's query.</td>\n", + " <th id=\"T_ae790_level0_row2\" class=\"row_heading level0 row2\" >2</th>\n", + " <td id=\"T_ae790_row2_col0\" class=\"data row2 col0\" >mm_text_desc_gpt4v</td>\n", + " <td id=\"T_ae790_row2_col1\" class=\"data row2 col1\" >How can I sign a A?.</td>\n", + " <td id=\"T_ae790_row2_col2\" class=\"data row2 col2\" >4.500000</td>\n", + " <td id=\"T_ae790_row2_col3\" class=\"data row2 col3\" >The generated answer is relevant and mostly correct. It provides a clear description of how to sign the letter 'A' in American Sign Language, which matches the reference answer. However, it starts with an unnecessary statement about the lack of images, which is not relevant to the user's query.</td>\n", " </tr>\n", " <tr>\n", - " <th id=\"T_14049_level0_row3\" class=\"row_heading level0 row3\" >3</th>\n", - " <td id=\"T_14049_row3_col0\" class=\"data row3 col0\" >mm_text_desc_llava</td>\n", - " <td id=\"T_14049_row3_col1\" class=\"data row3 col1\" >How can I sign a A?.</td>\n", - " <td id=\"T_14049_row3_col2\" class=\"data row3 col2\" >4.500000</td>\n", - " <td id=\"T_14049_row3_col3\" class=\"data row3 col3\" >The generated answer is relevant and mostly correct. It accurately describes how to sign the letter 'A' in American Sign Language. However, it lacks the detail about the position of the hand (at shoulder height with palm facing out) that is present in the reference answer.</td>\n", + " <th id=\"T_ae790_level0_row3\" class=\"row_heading level0 row3\" >3</th>\n", + " <td id=\"T_ae790_row3_col0\" class=\"data row3 col0\" >mm_text_desc_llava</td>\n", + " <td id=\"T_ae790_row3_col1\" class=\"data row3 col1\" >How can I sign a A?.</td>\n", + " <td id=\"T_ae790_row3_col2\" class=\"data row3 col2\" >4.500000</td>\n", + " <td id=\"T_ae790_row3_col3\" class=\"data row3 col3\" >The generated answer is relevant and almost fully correct. It accurately describes how to sign the letter 'A' in American Sign Language. However, it lacks the detail about the position of the hand (at shoulder height with palm facing out) that is present in the reference answer.</td>\n", " </tr>\n", " </tbody>\n", "</table>\n" ], "text/plain": [ - "<pandas.io.formats.style.Styler at 0x2cf359ea0>" + "<pandas.io.formats.style.Styler at 0x3312422f0>" ] }, "execution_count": null, @@ -1052,25 +1156,52 @@ " <th>mm_text_desc_gpt4v</th>\n", " <th>mm_text_desc_llava</th>\n", " </tr>\n", + " <tr>\n", + " <th>metrics</th>\n", + " <th></th>\n", + " <th></th>\n", + " <th></th>\n", + " <th></th>\n", + " </tr>\n", " </thead>\n", " <tbody>\n", " <tr>\n", " <th>mean_correctness_score</th>\n", + " <td>3.685185</td>\n", + " <td>4.092593</td>\n", " <td>3.722222</td>\n", - " <td>4.055556</td>\n", - " <td>3.777778</td>\n", - " <td>3.944444</td>\n", + " <td>3.870370</td>\n", + " </tr>\n", + " <tr>\n", + " <th>mean_relevancy_score</th>\n", + " <td>0.777778</td>\n", + " <td>0.851852</td>\n", + " <td>0.703704</td>\n", + " <td>0.740741</td>\n", + " </tr>\n", + " <tr>\n", + " <th>mean_faithfulness_score</th>\n", + " <td>0.777778</td>\n", + " <td>0.888889</td>\n", + " <td>0.851852</td>\n", + " <td>0.851852</td>\n", " </tr>\n", " </tbody>\n", "</table>\n", "</div>" ], "text/plain": [ - "rag mm_clip_gpt4v mm_clip_llava mm_text_desc_gpt4v \\\n", - "mean_correctness_score 3.722222 4.055556 3.777778 \n", + "rag mm_clip_gpt4v mm_clip_llava mm_text_desc_gpt4v \\\n", + "metrics \n", + "mean_correctness_score 3.685185 4.092593 3.722222 \n", + "mean_relevancy_score 0.777778 0.851852 0.703704 \n", + "mean_faithfulness_score 0.777778 0.888889 0.851852 \n", "\n", - "rag mm_text_desc_llava \n", - "mean_correctness_score 3.944444 " + "rag mm_text_desc_llava \n", + "metrics \n", + "mean_correctness_score 3.870370 \n", + "mean_relevancy_score 0.740741 \n", + "mean_faithfulness_score 0.851852 " ] }, "execution_count": null, @@ -1089,10 +1220,9 @@ "source": [ "#### Observations\n", "\n", - "- It appears that RAGs that use LLaVA are yield better Correctness scores than those that use GPT-4V\n", - " - A potential explanation for this is that GPT-4V is better at following instructions, and if the retrieved images do not represent the queried letter, then it will not provide a response. On the other hand, LLaVA will still use its own prior knowledge to answer the query. Since our reference answers don't take into account (maybe it should) the case where retrieved images are not relevant, and instead always supplies an answer to the query, then LLaVA should be expected to get better results.\n", - " - Moreover, we note that GPT-4V answers for `SPACE` with the following eveno though the image was correctly retrieved: \"I'm sorry, but I'm unable to answer the query based on the images provided as the system doesn't allow me to visually analyze images at the moment. However, according to the context provided, to sign \"SPACE\" in ASL, you should hold your palm to the sky with your fingers curled upwards and thumb pointing up.\" \n", - "- It appears that the fact that `text_desc` retriever yields better scores than the `clip` retriever doesn't propagate to the correctness of the overall RAG generated response." + "- It appears that RAGs that use LLaVA are yield better Correctness, Relevancy, and Faithfulness scores than those that use GPT-4V\n", + "- Upon some inspection of the responses, we note that GPT-4V answers for `SPACE` with the following eveno though the image was correctly retrieved: \"I'm sorry, but I'm unable to answer the query based on the images provided as the system doesn't allow me to visually analyze images at the moment. However, according to the context provided, to sign \"SPACE\" in ASL, you should hold your palm to the sky with your fingers curled upwards and thumb pointing up.\"\n", + "- These types of generated responses could be the reason why the judges are not scoring GPT-4V generations as high as that for LLaVA. A more thorough analysis would involve digging into the generated responses more deeply, and perhaps adjusting with the generation prompts and even the evaluation prompts." ] }, { @@ -1102,7 +1232,7 @@ "source": [ "## In Conclusion\n", "\n", - "In this notebook we demonstrated how one can evaluate both the Retriever and Generator of a Multi-Modal RAG. Specifically we applied existing `llama-index` evaluation tools on the ASL use case in an effort to illustrate how they could be applied to your evaluation needs." + "In this notebook we demonstrated how one can evaluate both the Retriever and Generator of a Multi-Modal RAG. Specifically we applied existing `llama-index` evaluation tools on the ASL use case in an effort to illustrate how they could be applied to your evaluation needs. Note that Multi-Modal LLMs should still be considered beta, and special standards of care should be applied if they are going to be used in production systems to evaluate multi-modal responses." ] } ], diff --git a/docs/module_guides/evaluating/modules.md b/docs/module_guides/evaluating/modules.md index e8b6110a4668458388db8df216b28101896aaf6c..75a2b267beb435dec5da81c154982edeead82491 100644 --- a/docs/module_guides/evaluating/modules.md +++ b/docs/module_guides/evaluating/modules.md @@ -17,6 +17,7 @@ maxdepth: 1 /examples/evaluation/Deepeval.ipynb /examples/evaluation/QuestionGeneration.ipynb /examples/evaluation/batch_eval.ipynb +/examples/evaluation/multi_modal/multi_modal_rag_evaluation.ipynb ``` ## Retrieval Evaluation diff --git a/llama_index/evaluation/multi_modal/__init__.py b/llama_index/evaluation/multi_modal/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..2a5582708d0cfcc0c140dd3044ab749012cde043 --- /dev/null +++ b/llama_index/evaluation/multi_modal/__init__.py @@ -0,0 +1,8 @@ +"""Multi-Modal Evaluation Modules.""" + +from llama_index.evaluation.multi_modal.faithfulness import ( + MultiModalFaithfulnessEvaluator, +) +from llama_index.evaluation.multi_modal.relevancy import MultiModalRelevancyEvaluator + +__all__ = ["MultiModalRelevancyEvaluator", "MultiModalFaithfulnessEvaluator"] diff --git a/llama_index/evaluation/multi_modal/faithfulness.py b/llama_index/evaluation/multi_modal/faithfulness.py new file mode 100644 index 0000000000000000000000000000000000000000..4b4d87d5c6e400b7b30a83a4e6926275319fdc6e --- /dev/null +++ b/llama_index/evaluation/multi_modal/faithfulness.py @@ -0,0 +1,213 @@ +"""Faithfulness evaluation.""" +from __future__ import annotations + +from typing import Any, List, Optional, Sequence, Union + +from llama_index.evaluation.base import BaseEvaluator, EvaluationResult +from llama_index.multi_modal_llms.base import MultiModalLLM +from llama_index.multi_modal_llms.openai import OpenAIMultiModal +from llama_index.prompts import BasePromptTemplate, PromptTemplate +from llama_index.prompts.mixin import PromptDictType +from llama_index.schema import ImageNode + +DEFAULT_EVAL_TEMPLATE = PromptTemplate( + "Please tell if a given piece of information " + "is supported by the visual as well as textual context information.\n" + "You need to answer with either YES or NO.\n" + "Answer YES if any of the image(s) and textual context supports the information, even " + "if most of the context is unrelated. " + "Some examples are provided below with only text context, but please do use\n" + "any images for context if they are provided.\n\n" + "Information: Apple pie is generally double-crusted.\n" + "Context: An apple pie is a fruit pie in which the principal filling " + "ingredient is apples. \n" + "Apple pie is often served with whipped cream, ice cream " + "('apple pie à la mode'), custard or cheddar cheese.\n" + "It is generally double-crusted, with pastry both above " + "and below the filling; the upper crust may be solid or " + "latticed (woven of crosswise strips).\n" + "Answer: YES\n" + "Information: Apple pies tastes bad.\n" + "Context: An apple pie is a fruit pie in which the principal filling " + "ingredient is apples. \n" + "Apple pie is often served with whipped cream, ice cream " + "('apple pie à la mode'), custard or cheddar cheese.\n" + "It is generally double-crusted, with pastry both above " + "and below the filling; the upper crust may be solid or " + "latticed (woven of crosswise strips).\n" + "Answer: NO\n" + "Information: {query_str}\n" + "Context: {context_str}\n" + "Answer: " +) + +DEFAULT_REFINE_TEMPLATE = PromptTemplate( + "We want to understand if the following information is present " + "in the context information: {query_str}\n" + "We have provided an existing YES/NO answer: {existing_answer}\n" + "We have the opportunity to refine the existing answer " + "(only if needed) with some more context below.\n" + "------------\n" + "{context_msg}\n" + "------------\n" + "If the existing answer was already YES, still answer YES. " + "If the information is present in the new context, answer YES. " + "Otherwise answer NO.\n" +) + + +class MultiModalFaithfulnessEvaluator(BaseEvaluator): + """Multi-Modal Faithfulness evaluator. + + Evaluates whether a response is faithful to the contexts + (i.e. whether the response is supported by the contexts or hallucinated.) + + This evaluator only considers the response string and the list of context strings. + + Args: + multi_modal_llm(Optional[MultiModalLLM]): + The Multi-Modal LLM Judge to use for evaluations. + raise_error(bool): Whether to raise an error when the response is invalid. + Defaults to False. + eval_template(Optional[Union[str, BasePromptTemplate]]): + The template to use for evaluation. + refine_template(Optional[Union[str, BasePromptTemplate]]): + The template to use for refining the evaluation. + """ + + def __init__( + self, + multi_modal_llm: Optional[MultiModalLLM] = None, + raise_error: bool = False, + eval_template: Union[str, BasePromptTemplate, None] = None, + refine_template: Union[str, BasePromptTemplate, None] = None, + ) -> None: + """Init params.""" + self._multi_modal_llm = multi_modal_llm or OpenAIMultiModal( + model="gpt-4-vision-preview", max_new_tokens=1000 + ) + self._raise_error = raise_error + + self._eval_template: BasePromptTemplate + if isinstance(eval_template, str): + self._eval_template = PromptTemplate(eval_template) + else: + self._eval_template = eval_template or DEFAULT_EVAL_TEMPLATE + + self._refine_template: BasePromptTemplate + if isinstance(refine_template, str): + self._refine_template = PromptTemplate(refine_template) + else: + self._refine_template = refine_template or DEFAULT_REFINE_TEMPLATE + + def _get_prompts(self) -> PromptDictType: + """Get prompts.""" + return { + "eval_template": self._eval_template, + "refine_template": self._refine_template, + } + + def _update_prompts(self, prompts: PromptDictType) -> None: + """Update prompts.""" + if "eval_template" in prompts: + self._eval_template = prompts["eval_template"] + if "refine_template" in prompts: + self._refine_template = prompts["refine_template"] + + def evaluate( + self, + query: Union[str, None] = None, + response: Union[str, None] = None, + contexts: Union[Sequence[str], None] = None, + image_paths: Union[List[str], None] = None, + image_urls: Union[List[str], None] = None, + **kwargs: Any, + ) -> EvaluationResult: + """Evaluate whether the response is faithful to the multi-modal contexts.""" + del query # Unused + del kwargs # Unused + if contexts is None or response is None: + raise ValueError("contexts and response must be provided") + + context_str = "\n\n".join(contexts) + fmt_prompt = self._eval_template.format( + context_str=context_str, query_str=response + ) + + if image_paths: + image_nodes = [ + ImageNode(image_path=image_path) for image_path in image_paths + ] + if image_urls: + image_nodes = [ImageNode(image_url=image_url) for image_url in image_urls] + + response_obj = self._multi_modal_llm.complete( + prompt=fmt_prompt, + image_documents=image_nodes, + ) + + raw_response_txt = str(response_obj) + + if "yes" in raw_response_txt.lower(): + passing = True + else: + passing = False + if self._raise_error: + raise ValueError("The response is invalid") + + return EvaluationResult( + response=response, + contexts=contexts, + passing=passing, + score=1.0 if passing else 0.0, + feedback=raw_response_txt, + ) + + async def aevaluate( + self, + query: Union[str, None] = None, + response: Union[str, None] = None, + contexts: Union[Sequence[str], None] = None, + image_paths: Union[List[str], None] = None, + image_urls: Union[List[str], None] = None, + **kwargs: Any, + ) -> EvaluationResult: + """Async evaluate whether the response is faithful to the multi-modal contexts.""" + del query # Unused + del kwargs # Unused + if contexts is None or response is None: + raise ValueError("contexts and response must be provided") + + context_str = "\n\n".join(contexts) + fmt_prompt = self._eval_template.format( + context_str=context_str, query_str=response + ) + + if image_paths: + image_nodes = [ + ImageNode(image_path=image_path) for image_path in image_paths + ] + if image_urls: + image_nodes = [ImageNode(image_url=image_url) for image_url in image_urls] + + response_obj = await self._multi_modal_llm.acomplete( + prompt=fmt_prompt, + image_documents=image_nodes, + ) + + raw_response_txt = str(response_obj) + + if "yes" in raw_response_txt.lower(): + passing = True + else: + passing = False + if self._raise_error: + raise ValueError("The response is invalid") + + return EvaluationResult( + response=response, + contexts=contexts, + passing=passing, + score=1.0 if passing else 0.0, + feedback=raw_response_txt, + ) diff --git a/llama_index/evaluation/multi_modal/relevancy.py b/llama_index/evaluation/multi_modal/relevancy.py new file mode 100644 index 0000000000000000000000000000000000000000..145ddc1ec92764d74eb8169beed1b4594b1eb586 --- /dev/null +++ b/llama_index/evaluation/multi_modal/relevancy.py @@ -0,0 +1,194 @@ +"""Relevancy evaluation.""" +from __future__ import annotations + +from typing import Any, List, Sequence, Union + +from llama_index.evaluation.base import BaseEvaluator, EvaluationResult +from llama_index.multi_modal_llms.base import MultiModalLLM +from llama_index.multi_modal_llms.openai import OpenAIMultiModal +from llama_index.prompts import BasePromptTemplate, PromptTemplate +from llama_index.prompts.mixin import PromptDictType +from llama_index.schema import ImageNode + +DEFAULT_EVAL_TEMPLATE = PromptTemplate( + "Your task is to evaluate if the response for the query \ + is in line with the images and textual context information provided.\n" + "You have two options to answer. Either YES/ NO.\n" + "Answer - YES, if the response for the query \ + is in line with context information otherwise NO.\n" + "Query and Response: \n {query_str}\n" + "Context: \n {context_str}\n" + "Answer: " +) + +DEFAULT_REFINE_TEMPLATE = PromptTemplate( + "We want to understand if the following query and response is" + "in line with the textual and visual context information: \n {query_str}\n" + "We have provided an existing YES/NO answer: \n {existing_answer}\n" + "We have the opportunity to refine the existing answer " + "(only if needed) with some more context below.\n" + "------------\n" + "{context_msg}\n" + "------------\n" + "If the existing answer was already YES, still answer YES. " + "If the information is present in the new context, answer YES. " + "Otherwise answer NO.\n" +) + + +class MultiModalRelevancyEvaluator(BaseEvaluator): + """Relevancy evaluator. + + Evaluates the relevancy of retrieved image and textual contexts and response to a query. + This evaluator considers the query string, retrieved contexts, and response string. + + Args: + multi_modal_llm(Optional[MultiModalLLM]): + The Multi-Modal LLM Judge to use for evaluations. + raise_error(Optional[bool]): + Whether to raise an error if the response is invalid. + Defaults to False. + eval_template(Optional[Union[str, BasePromptTemplate]]): + The template to use for evaluation. + refine_template(Optional[Union[str, BasePromptTemplate]]): + The template to use for refinement. + """ + + def __init__( + self, + multi_modal_llm: Union[MultiModalLLM, None] = None, + raise_error: bool = False, + eval_template: Union[str, BasePromptTemplate, None] = None, + refine_template: Union[str, BasePromptTemplate, None] = None, + ) -> None: + """Init params.""" + self._multi_modal_llm = multi_modal_llm or OpenAIMultiModal( + model="gpt-4-vision-preview", max_new_tokens=1000 + ) + self._raise_error = raise_error + + self._eval_template: BasePromptTemplate + if isinstance(eval_template, str): + self._eval_template = PromptTemplate(eval_template) + else: + self._eval_template = eval_template or DEFAULT_EVAL_TEMPLATE + + self._refine_template: BasePromptTemplate + if isinstance(refine_template, str): + self._refine_template = PromptTemplate(refine_template) + else: + self._refine_template = refine_template or DEFAULT_REFINE_TEMPLATE + + def _get_prompts(self) -> PromptDictType: + """Get prompts.""" + return { + "eval_template": self._eval_template, + "refine_template": self._refine_template, + } + + def _update_prompts(self, prompts: PromptDictType) -> None: + """Update prompts.""" + if "eval_template" in prompts: + self._eval_template = prompts["eval_template"] + if "refine_template" in prompts: + self._refine_template = prompts["refine_template"] + + def evaluate( + self, + query: Union[str, None] = None, + response: Union[str, None] = None, + contexts: Union[Sequence[str], None] = None, + image_paths: Union[List[str], None] = None, + image_urls: Union[List[str], None] = None, + **kwargs: Any, + ) -> EvaluationResult: + """Evaluate whether the multi-modal contexts and response are relevant to the query.""" + del kwargs # Unused + + if query is None or contexts is None or response is None: + raise ValueError("query, contexts, and response must be provided") + + context_str = "\n\n".join(contexts) + evaluation_query_str = f"Question: {query}\nResponse: {response}" + fmt_prompt = self._eval_template.format( + context_str=context_str, query_str=evaluation_query_str + ) + + if image_paths: + image_nodes = [ + ImageNode(image_path=image_path) for image_path in image_paths + ] + if image_urls: + image_nodes = [ImageNode(image_url=image_url) for image_url in image_urls] + + response_obj = self._multi_modal_llm.complete( + prompt=fmt_prompt, + image_documents=image_nodes, + ) + + raw_response_txt = str(response_obj) + + if "yes" in raw_response_txt.lower(): + passing = True + else: + if self._raise_error: + raise ValueError("The response is invalid") + passing = False + + return EvaluationResult( + query=query, + response=response, + passing=passing, + score=1.0 if passing else 0.0, + feedback=raw_response_txt, + ) + + async def aevaluate( + self, + query: Union[str, None] = None, + response: Union[str, None] = None, + contexts: Union[Sequence[str], None] = None, + image_paths: Union[List[str], None] = None, + image_urls: Union[List[str], None] = None, + **kwargs: Any, + ) -> EvaluationResult: + """Async evaluate whether the multi-modal contexts and response are relevant to the query.""" + del kwargs # Unused + + if query is None or contexts is None or response is None: + raise ValueError("query, contexts, and response must be provided") + + context_str = "\n\n".join(contexts) + evaluation_query_str = f"Question: {query}\nResponse: {response}" + fmt_prompt = self._eval_template.format( + context_str=context_str, query_str=evaluation_query_str + ) + + if image_paths: + image_nodes = [ + ImageNode(image_path=image_path) for image_path in image_paths + ] + if image_urls: + image_nodes = [ImageNode(image_url=image_url) for image_url in image_urls] + + response_obj = await self._multi_modal_llm.acomplete( + prompt=fmt_prompt, + image_documents=image_nodes, + ) + + raw_response_txt = str(response_obj) + + if "yes" in raw_response_txt.lower(): + passing = True + else: + if self._raise_error: + raise ValueError("The response is invalid") + passing = False + + return EvaluationResult( + query=query, + response=response, + passing=passing, + score=1.0 if passing else 0.0, + feedback=raw_response_txt, + ) diff --git a/llama_index/response/notebook_utils.py b/llama_index/response/notebook_utils.py index e7041ca64a8c00f4b7055110b8e7aac97c2e6d21..8a08619309fbea485841b872ad2afd7803a18e7a 100644 --- a/llama_index/response/notebook_utils.py +++ b/llama_index/response/notebook_utils.py @@ -133,8 +133,12 @@ def display_query_and_multimodal_response( raise ValueError( "A retrieved image must have image_path or image_url specified." ) - axarr[ix].imshow(image) - axarr[ix].set_title(f"Retrieved Position: {ix}", pad=10, fontsize=9) + if num_subplots > 1: + axarr[ix].imshow(image) + axarr[ix].set_title(f"Retrieved Position: {ix}", pad=10, fontsize=9) + else: + axarr.imshow(image) + axarr.set_title(f"Retrieved Position: {ix}", pad=10, fontsize=9) f.tight_layout() print(f"Query: {query_str}\n=======") diff --git a/pyproject.toml b/pyproject.toml index d7977c5c96630a3628dac840f1daaa096c5c2cc7..aabf06631df7ce91118814df46064e9fe2eca345 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -146,6 +146,7 @@ ignore = [ "F541", # Messes with prompts.py "TCH002", "UP006", # Messes with pydantic + "UP007", # Wants | over Union, which breaks 3.8 ] # Feel free to add more here select = [