{ "cells": [ { "cell_type": "code", "execution_count": 1, "id": "07f255d7", "metadata": { "tags": [] }, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import pandas as pd \n", "import numpy as np\n", "import os\n", "\n", "%load_ext autoreload\n", "%autoreload 2\n", "\n", "import sys\n", "sys.path.append(\"C:/git/climate-question-answering\")\n", "sys.path.append(\"/mnt/c/git/climate-question-answering\")\n", "sys.path.append(\"/home/tim/ai4s/climate_qa/climate-question-answering\")\n", "\n", "from dotenv import load_dotenv\n", "load_dotenv()" ] }, { "cell_type": "markdown", "id": "4c9258cc-3800-4485-bdd8-889b299b9133", "metadata": {}, "source": [ "# Import objects" ] }, { "cell_type": "code", "execution_count": 2, "id": "6af1a96e", "metadata": { "tags": [] }, "outputs": [], "source": [ "from climateqa.engine.llm import get_llm\n", "from climateqa.engine.llm.ollama import get_llm as get_llm_ollama\n", "\n", "llm = get_llm(provider=\"openai\")\n", "# llm = get_llm_ollama(model = \"llama3\")" ] }, { "cell_type": "code", "execution_count": 3, "id": "a9128bfc-4b24-4b25-b7a7-68423b1124b1", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/home/tim/anaconda3/envs/climateqa/lib/python3.11/site-packages/tqdm/auto.py:21: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html\n", " from .autonotebook import tqdm as notebook_tqdm\n", "INFO:flashrank.Ranker:Downloading ms-marco-TinyBERT-L-2-v2...\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Loading FlashRankRanker model ms-marco-TinyBERT-L-2-v2\n", "Loading model FlashRank model ms-marco-TinyBERT-L-2-v2...\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "ms-marco-TinyBERT-L-2-v2.zip: 100%|██████████| 3.26M/3.26M [00:00<00:00, 69.9MiB/s]\n" ] } ], "source": [ "from climateqa.engine.reranker import get_reranker\n", "\n", "# reranker = get_reranker(\"large\")\n", "reranker = get_reranker(\"nano\")\n", "# from rerankers import Reranker\n", "# # Specific flashrank model.\n", "# # reranker = Reranker('ms-marco-TinyBERT-L-2-v2', model_type='flashrank')\n", "# # reranker = Reranker('ms-marco-MiniLM-L-12-v2', model_type='flashrank')\n", "# # reranker = Reranker('cross-encoder/ms-marco-MiniLM-L-4-v2', model_type='cross-encoder')\n", "# # reranker = Reranker(\"mixedbread-ai/mxbai-rerank-xsmall-v1\", model_type='cross-encoder')\n", "# # reranker = Reranker(\"mixedbread-ai/mxbai-rerank-xsmall-v1\", model_type='cross-encoder')\n", "# reranker = Reranker(\"cohere\", lang='en', api_key = \"XXX\")" ] }, { "cell_type": "code", "execution_count": 4, "id": "942d2705-22dd-46cf-8c31-6daa127e4743", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Loading embeddings model: BAAI/bge-base-en-v1.5\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "INFO:sentence_transformers.SentenceTransformer:Load pretrained SentenceTransformer: BAAI/bge-base-en-v1.5\n", "INFO:sentence_transformers.SentenceTransformer:Use pytorch device_name: cpu\n", "/home/tim/ai4s/climate_qa/climate-question-answering/climateqa/engine/vectorstore.py:32: LangChainDeprecationWarning: The class `Pinecone` was deprecated in LangChain 0.0.18 and will be removed in 0.3.0. An updated version of the class exists in the langchain-pinecone package and should be used instead. To use it run `pip install -U langchain-pinecone` and import as `from langchain_pinecone import Pinecone`.\n", " vectorstore = PineconeVectorstore(\n" ] } ], "source": [ "from climateqa.engine.vectorstore import get_pinecone_vectorstore\n", "from climateqa.engine.embeddings import get_embeddings_function\n", "from climateqa.knowledge.retriever import ClimateQARetriever\n", "\n", "embeddings_function = get_embeddings_function()\n", "vectorstore = get_pinecone_vectorstore(embeddings_function)" ] }, { "cell_type": "code", "execution_count": 5, "id": "882811c8-5890-4048-8630-d052c5179d7d", "metadata": {}, "outputs": [], "source": [ "import torch" ] }, { "cell_type": "code", "execution_count": 6, "id": "51aed81d-860b-409a-bae0-f0e1eeb0f120", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "False" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "torch.cuda.is_available()" ] }, { "cell_type": "markdown", "id": "16eb91cb-3bfb-4c0c-b29e-753c954c2399", "metadata": {}, "source": [ "# Semantic Routing" ] }, { "cell_type": "code", "execution_count": 7, "id": "1e769371-1f8c-4f34-89c5-c0f9914d47a0", "metadata": { "tags": [] }, "outputs": [], "source": [ "from climateqa.engine.chains.intent_categorization import make_intent_categorization_chain" ] }, { "cell_type": "code", "execution_count": 16, "id": "480ad611-33c7-49ea-b02c-94d6ce1f1d1a", "metadata": { "tags": [] }, "outputs": [], "source": [ "cat_chain = make_intent_categorization_chain(llm)" ] }, { "cell_type": "code", "execution_count": 17, "id": "82cf49d9-d48e-4d5c-8666-bcc95f637371", "metadata": { "tags": [] }, "outputs": [], "source": [ "# for question in SAMPLE_QUESTIONS:\n", "# output = router_chain.invoke({\"input\":question})\n", "# print(question)\n", "# print(output)\n", "# print(\"-\"*100)\n", "# break" ] }, { "cell_type": "code", "execution_count": null, "id": "d8ef7e0f-ac5f-4323-b02e-753ce2b4afda", "metadata": { "tags": [] }, "outputs": [], "source": [ "cat_chain.invoke({\"input\":\"Which industries have the highest GHG emissions?\"})" ] }, { "cell_type": "code", "execution_count": 19, "id": "a9c89f2d-c597-47b8-ae50-75eda964e609", "metadata": {}, "outputs": [], "source": [ "from climateqa.knowledge.openalex import OpenAlexRetriever\n", "from climateqa.engine.chains.keywords_extraction import make_keywords_extraction_chain" ] }, { "cell_type": "code", "execution_count": 20, "id": "0c609d34-5767-47a6-90a4-d5987e9499ee", "metadata": {}, "outputs": [], "source": [ "kec = make_keywords_extraction_chain(llm)" ] }, { "cell_type": "code", "execution_count": null, "id": "5d781cd4-228b-462f-bd0e-55c02084a616", "metadata": {}, "outputs": [], "source": [ "output = kec.invoke(\"What is the environmental footprint of artificial intelligence\")" ] }, { "cell_type": "code", "execution_count": null, "id": "553fd4d4-fe5a-4050-ae31-dffa2c7af7b2", "metadata": {}, "outputs": [], "source": [ "output" ] }, { "cell_type": "code", "execution_count": 23, "id": "50a57f08-40e5-4419-8568-0739a13af904", "metadata": {}, "outputs": [], "source": [ "ROUTING_INDEX = {\n", " \"Vector\":[\"IPCC\",\"IPBES\",\"IPOS\"],\n", " \"OpenAlex\":[\"OpenAlex\"],\n", "}\n", "\n", "POSSIBLE_SOURCES = [y for values in ROUTING_INDEX.values() for y in values]" ] }, { "cell_type": "code", "execution_count": 12, "id": "6b45dd9c-58c3-4204-bf44-7b9eb35dcb9d", "metadata": {}, "outputs": [], "source": [ "questions = [\n", " {\"question\":\"What is climate change ?\",\"sources\":[\"IPCC\",\"IPBES\"]},\n", " {\"question\":\"What is the link between El Nino and climate change ?\",\"sources\":[\"IPCC\",\"OpenAlex\"]},\n", "]\n", "\n", "state = {\"remaining_questions\":questions,\"auto_mode\":False,\"sources_input\":[\"OpenAlex\"]}" ] }, { "cell_type": "code", "execution_count": 13, "id": "90b02a8e-6e67-4592-8bc7-959b544e914b", "metadata": {}, "outputs": [], "source": [ "# from climateqa.engine.chains.search import make_search_node\n", "from climateqa.engine.graph import search\n" ] }, { "cell_type": "code", "execution_count": 14, "id": "347737d8-c4cb-45a7-9e5d-74d1a2e3f5a2", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'remaining_questions': [{'question': 'What is climate change ?',\n", " 'sources': ['IPCC', 'IPBES']},\n", " {'question': 'What is the link between El Nino and climate change ?',\n", " 'sources': ['IPCC', 'OpenAlex']}],\n", " 'auto_mode': False,\n", " 'sources_input': ['OpenAlex']}" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "state.update(search(state))\n", "state" ] }, { "cell_type": "code", "execution_count": 26, "id": "a27425de-1297-417a-af02-fba270df8e38", "metadata": {}, "outputs": [], "source": [ "from climateqa.engine.chains.retrieve_documents import make_retriever_node" ] }, { "cell_type": "code", "execution_count": 27, "id": "fde71c99-8bdd-4fd5-b36e-6804ec21bf2c", "metadata": {}, "outputs": [], "source": [ "retrieve = make_retriever_node(vectorstore,reranker,llm)" ] }, { "cell_type": "code", "execution_count": null, "id": "cdad5b2f-2103-43d6-9d7f-e2addc2c2c3f", "metadata": {}, "outputs": [], "source": [ "new_state = await retrieve.ainvoke(state)" ] }, { "cell_type": "code", "execution_count": null, "id": "751a9a6a-8271-4e89-8754-e2065cd7d737", "metadata": {}, "outputs": [], "source": [ "len(new_state[\"documents\"])" ] }, { "cell_type": "code", "execution_count": null, "id": "06db606d-0b04-4e7d-9f55-4f7cefbce654", "metadata": {}, "outputs": [], "source": [ "new_state[\"documents\"][1][\"reranking_score\"]" ] }, { "cell_type": "code", "execution_count": null, "id": "a5ed23f9-bbbe-4a0b-b919-429e08837765", "metadata": {}, "outputs": [], "source": [ "set([\"IPCC\",\"OpenAlex\"]).intersection(set([\"IPCC\",\"IPBES\",\"IPOS\"]))" ] }, { "cell_type": "code", "execution_count": null, "id": "ca801dc5-958b-4392-88ac-5cb69e5f6fab", "metadata": {}, "outputs": [], "source": [ "new_questions = []\n", "\n", "for q in questions:\n", " question,sources = q[\"question\"],q[\"sources\"]\n", "\n", " for index,index_sources in ROUTING_INDEX.items():\n", " selected_sources = list(set(sources).intersection(index_sources))\n", " new_questions.append({\"question\":question,\"sources\":selected_sources,\"index\":index})\n", "\n", "new_questions" ] }, { "cell_type": "code", "execution_count": 199, "id": "6091ada7-851c-4ffc-859e-ea33a6fbb310", "metadata": {}, "outputs": [], "source": [ "oa = OpenAlex()" ] }, { "cell_type": "code", "execution_count": 216, "id": "8c5771bb-9074-45e0-afdb-f9eda2cb5ad4", "metadata": {}, "outputs": [], "source": [ "test = oa.search(\"warming AND impoverished communities\")" ] }, { "cell_type": "code", "execution_count": null, "id": "5ef2094a-2e98-4ed9-b0a6-7536ae8057ca", "metadata": {}, "outputs": [], "source": [ "test" ] }, { "cell_type": "code", "execution_count": null, "id": "0996d61d-905e-4e88-bce3-3f905846dd73", "metadata": {}, "outputs": [], "source": [ "test[[\"title\",\"abstract\"]].isnull().sum()" ] }, { "cell_type": "markdown", "id": "6ee7ab03-2cb5-4c43-b38e-0996951d1649", "metadata": {}, "source": [ "##### test[\"content\"].dropna()" ] }, { "cell_type": "code", "execution_count": 218, "id": "677b95e3-ad04-41eb-85e6-76d45db81933", "metadata": {}, "outputs": [], "source": [ "oa = OpenAlexRetriever(min_year = 1960)" ] }, { "cell_type": "code", "execution_count": 232, "id": "c4d15feb-9faa-44bd-af2d-425351747725", "metadata": {}, "outputs": [], "source": [ "docs = oa.invoke(\"cloud formations AND Earth's radiative balance\")" ] }, { "cell_type": "code", "execution_count": null, "id": "d8eac98e-1efc-4f85-b8f5-41a8c0c03a8e", "metadata": { "scrolled": true }, "outputs": [], "source": [ "docs[0]" ] }, { "cell_type": "code", "execution_count": null, "id": "b27c6f48-f4d3-4525-aa1d-8c3c52eb2179", "metadata": {}, "outputs": [], "source": [ "docs[0].metadata" ] }, { "cell_type": "markdown", "id": "6f50f767-64e9-4f5d-82b4-496530532ad9", "metadata": { "jp-MarkdownHeadingCollapsed": true }, "source": [ "# Query Rewriter" ] }, { "cell_type": "code", "execution_count": 8, "id": "3345a24e-e794-4e84-93ae-98be5ca61af3", "metadata": { "tags": [] }, "outputs": [], "source": [ "from climateqa.engine.chains.query_transformation import make_query_rewriter_chain,make_query_decomposition_chain\n", "from climateqa.engine.chains.translation import make_translation_chain" ] }, { "cell_type": "code", "execution_count": 9, "id": "16bd17cd-f9ea-489c-923f-acd851b09cd8", "metadata": { "tags": [] }, "outputs": [], "source": [ "rewriter_chain = make_query_rewriter_chain(llm)\n", "translation_chain = make_translation_chain(llm)\n", "decomposition_chain = make_query_decomposition_chain(llm)\n", "router_chain = make_intent_router_chain(llm)" ] }, { "cell_type": "code", "execution_count": 10, "id": "3a2147fc-8437-44a3-87ae-52fe5b8f8f87", "metadata": { "tags": [] }, "outputs": [], "source": [ "def transform_query(user_input):\n", " \n", " state = {\"user_input\":user_input}\n", " \n", " # Route\n", " output_router = router_chain.invoke({\"input\":user_input})\n", " if \"language\" not in output_router: output_router[\"language\"] = \"English\"\n", " state.update(output_router)\n", " \n", " # Translation\n", " if output_router[\"language\"].lower() != \"english\":\n", " translation = translation_chain.invoke({\"input\":user_input})\n", " state[\"query\"] = translation[\"translation\"]\n", " else:\n", " state[\"query\"] = user_input\n", " \n", " # Decomposition\n", " decomposition_output = decomposition_chain.invoke({\"input\":state[\"query\"]})\n", " state.update(decomposition_output)\n", " \n", " # Query Analysis\n", " questions = []\n", " for question in state[\"questions\"]:\n", " question_state = {\"question\":question}\n", " analysis_output = rewriter_chain.invoke({\"input\":question})\n", " question_state.update(analysis_output)\n", " questions.append(question_state)\n", " state[\"questions\"] = questions\n", " \n", " return state" ] }, { "cell_type": "code", "execution_count": null, "id": "4151d2e4-0bfe-4642-a185-2dcb639e6f78", "metadata": { "tags": [] }, "outputs": [], "source": [ "# question = \"Franchement je sais pas trop de quoi on parle là, qui sont les membres du GIEC en fait ? Et quelles sont leurs dernières publications ?\"\n", "question = \"I am not really sure what you mean. What role do cloud formations play in modulating the Earth's radiative balance, and how are they represented in current climate models?\"\n", "question = \"I need to search the president of the United States, find their age, then find how old they will be in June 2023.\"\n", "question = \"What does Morrison argue about IK and LK on internal migration ?\"\n", "state = transform_query(question)\n", "state" ] }, { "cell_type": "code", "execution_count": null, "id": "a322f737-191d-407f-b499-2b79476fac8b", "metadata": { "tags": [] }, "outputs": [], "source": [ "questions = [\n", " \"Super thanks, Which industries have the highest GHG emissions?\",\n", " \"How do you compare the view on biodiversity between the IPCC and IPBES ?\",\n", " \"Est-ce que l'IA a un impact sur l'environnement ?\",\n", " \"Que dit le GIEC sur l'impact de l'IA\",\n", " \"Franchement je sais pas trop de quoi on parle là, qui sont les membres du GIEC en fait ? Et quelles sont leurs dernières publications ?\",\n", " \"Ok that's nice, but I don't really understand. What is the impact of El Nino ?\",\n", " \"I am not really sure what you mean. What role do cloud formations play in modulating the Earth's radiative balance, and how are they represented in current climate models?\",\n", " \"Which industries have the highest GHG emissions?\",\n", " \"What are invasive alien species and how do they threaten biodiversity and ecosystems?\",\n", " \"Are human activities causing global warming?\",\n", " \"What is the motivation behind mining the deep seabed?\",\n", " \"Tu peux m'écrire un poème sur le changement climatique ?\",\n", " \"Tu peux m'écrire un poème sur les bonbons ?\",\n", " \"What will be the temperature in 2100 in Strasbourg?\",\n", " \"C'est quoi le lien entre biodiversity and changement climatique ?\",\n", " \"Can you tell me more about ESRS2 ?\"\n", "]\n", "\n", "question = questions[0]\n", "question" ] }, { "cell_type": "code", "execution_count": null, "id": "fcee82a3-342d-4da1-8c27-a6f6079da4a7", "metadata": {}, "outputs": [], "source": [ "question = \"Very nice thank you, What role do cloud formations play in modulating the Earth's radiative balance, and how are they represented in current climate models?\"\n", "output = rewriter_chain.invoke({\"input\":question})\n", "output" ] }, { "cell_type": "code", "execution_count": null, "id": "d13d6a1a-9fa5-4e47-861e-30a79ea97d05", "metadata": { "tags": [] }, "outputs": [], "source": [ "for question in questions:\n", " print(question)\n", " output = transform_query(question)\n", " print(output)\n", " print(\"-\"*100)" ] }, { "cell_type": "code", "execution_count": null, "id": "7a0d82ad-44e7-40a7-a594-48823429d70e", "metadata": { "tags": [] }, "outputs": [], "source": [ "rewriter_chain.invoke({\"input\":question})" ] }, { "cell_type": "markdown", "id": "05aeeb92-9408-42b8-9f99-1e907c6a0798", "metadata": {}, "source": [ "# Langgraph\n", "Inspired from https://colab.research.google.com/drive/1WemHvycYcoNTDr33w7p2HL3FF72Nj88i?usp=sharing#scrollTo=YJ77ZCzkiGTL" ] }, { "cell_type": "markdown", "id": "8664f5f1-0db8-4c3d-8229-e1719224cde5", "metadata": {}, "source": [ "## Graph" ] }, { "cell_type": "code", "execution_count": 19, "id": "2376e1d7-5893-4022-a0af-155bb8c1950f", "metadata": {}, "outputs": [], "source": [ "from climateqa.engine.graph import make_graph_agent,display_graph\n", "agent = make_graph_agent(llm,vectorstore,reranker)" ] }, { "cell_type": "code", "execution_count": null, "id": "a1f78d00-e4a0-40f3-a1e9-61dea83fa6cb", "metadata": {}, "outputs": [], "source": [ "display_graph(agent)" ] }, { "cell_type": "code", "execution_count": null, "id": "3a07607b-eb02-467f-a255-0c6bcdc6f62c", "metadata": {}, "outputs": [], "source": [ "verbose = False\n", "# question = \"What does the IPCC and IPBES think about deforestation ?\"\n", "# question = \"I am not really sure what you mean. What role do cloud formations play in modulating the Earth's radiative balance, and how are they represented in current climate models?\"\n", "# question = \"Are human activities causing global warming?\"\n", "# question = \"What are the evidence of climate change?\"\n", "# question = \"What specific mechanisms link solar activity, particularly sunspots, to changes in global climate?\"\n", "# question = \"In what ways does warming specifically help impoverished communities?\"\n", "question = \"What's the impact of PFAS on babies ?\"\n", "\n", "steps_display = {\n", " \"categorize_intent\":(\"... Analyzing user message\",True),\n", " \"transform_query\":(\"... Thinking step by step to answer the question\",True),\n", " # \"retrieve_documents\":(\"... Searching in the knowledge base\",False),\n", "}\n", "\n", "def display_steps(event):\n", "\n", " for event_name,(event_description,display_output) in steps_display.items():\n", " if event[\"name\"] == event_name:\n", " if event[\"event\"] == \"on_chain_start\":\n", " print(event_description)\n", " elif event[\"event\"] == \"on_chain_end\":\n", " if display_output:\n", " print(event[\"data\"][\"output\"])\n", " if event[\"name\"] == \"log_retriever\" and event[\"event\"] == \"on_chain_start\":\n", " question = event[\"data\"][\"input\"][\"question\"]\n", " sources = event[\"data\"][\"input\"][\"sources\"]\n", " print(f\"\"\"... Searching for \"{question}\" in {\", \".join(sources)}\"\"\")\n", "\n", "async for event in agent.astream_events({\"user_input\":question,\"sources_input\":[\"IPCC\"],\"sources_auto\":False,\"audience\":\"experts\"},version = \"v1\"):\n", "# async for event in agent.astream_log({\"user_input\":question,\"sources_input\":[\"auto\"],\"audience\":\"experts\"}):\n", "\n", " if verbose:\n", " print(str(event)[:1000])\n", " print(\"-\"*50)\n", " else:\n", " \n", " if event[\"event\"] == \"on_chat_model_stream\":\n", " print(event[\"data\"][\"chunk\"].content,end = \"\")\n", "\n", " if event[\"name\"] == \"retrieve_documents\" and event[\"event\"] == \"on_chain_end\":\n", " docs = event[\"data\"][\"output\"][\"documents\"]\n", " \n", " display_steps(event)\n", " " ] }, { "cell_type": "code", "execution_count": null, "id": "a09f58e5-368b-486b-a458-7cfe56445c08", "metadata": { "scrolled": true }, "outputs": [], "source": [ "docs" ] }, { "cell_type": "code", "execution_count": null, "id": "9b41f377-b3a9-41eb-acef-fb3ea131c374", "metadata": {}, "outputs": [], "source": [ "output = await agent.ainvoke({\"user_input\":\"C'est quoi l'empreinte carbone de l'IA\"})\n", "output" ] }, { "cell_type": "markdown", "id": "8d89f36b-fc04-4d0c-b9c4-990b489b7fc3", "metadata": {}, "source": [ "## Test simple route chains" ] }, { "cell_type": "code", "execution_count": 36, "id": "1d884bb7-7230-47cb-a778-36cffed1fcde", "metadata": { "tags": [] }, "outputs": [], "source": [ "from climateqa.engine.chains.answer_chitchat import make_chitchat_chain\n", "from climateqa.engine.chains.answer_ai_impact import make_ai_impact_chain\n", "\n", "chitchat_chain = make_chitchat_chain(llm)\n", "ai_impact_chain = make_ai_impact_chain(llm)" ] }, { "cell_type": "code", "execution_count": null, "id": "586a4ead-6064-42e8-9f3c-8973b8d754c6", "metadata": { "tags": [] }, "outputs": [], "source": [ "async for event in ai_impact_chain.astream_events({\"question\":\"Mais c'est quoi l'empreinte carbone de cet outil, ça doit consommer pas mal ...\"},version = \"v1\"):\n", " if event[\"event\"] == \"on_chain_stream\":\n", " print(event[\"data\"][\"chunk\"],end = \"\")" ] }, { "cell_type": "code", "execution_count": null, "id": "6f3a1c52-f92a-442b-9442-22415087da8b", "metadata": { "tags": [] }, "outputs": [], "source": [ "async for event in chitchat_chain.astream_events({\"question\":\"Vas y blbablablala\"},version = \"v1\"):\n", " if event[\"event\"] == \"on_chain_stream\":\n", " print(event[\"data\"][\"chunk\"],end = \"\")" ] }, { "cell_type": "code", "execution_count": 16, "id": "0e380744-e03d-408d-9282-3fcb6925413b", "metadata": { "tags": [] }, "outputs": [], "source": [ "from langchain.schema import Document\n", "from langgraph.graph import END, StateGraph" ] }, { "cell_type": "markdown", "id": "1788fbb7-90df-41e5-88c4-83c5e59fe23c", "metadata": { "tags": [] }, "source": [ "## Retriever & Reranker" ] }, { "cell_type": "code", "execution_count": null, "id": "cbe2f9f0-0c0b-46f8-929c-51a94eab5f22", "metadata": { "tags": [] }, "outputs": [], "source": [ "query = \"Is global warming caused by humans?\"\n", "\n", "retriever = ClimateQARetriever(\n", " vectorstore=vectorstore,\n", " sources = [\"IPCC\"],\n", " # reports = ias_reports,\n", " min_size = 200,\n", " k_summary = 5,k_total = 100,\n", " threshold = 0.5,\n", ")\n", "\n", "docs_question = retriever.get_relevant_documents(query)\n", "len(docs_question)" ] }, { "cell_type": "code", "execution_count": null, "id": "6e6892d2-a5bd-456a-8284-6e844d02af0e", "metadata": { "tags": [] }, "outputs": [], "source": [ "%%time\n", "from scipy.special import expit, logit\n", "\n", "def rerank_docs(reranker,docs,query):\n", " \n", " # Get a list of texts from langchain docs\n", " input_docs = [x.page_content for x in docs]\n", " \n", " # Rerank using rerankers library\n", " results = reranker.rank(query=query, docs=input_docs)\n", "\n", " # Prepare langchain list of docs\n", " docs_reranked = []\n", " for result in results.results:\n", " doc_id = result.document.doc_id\n", " doc = docs[doc_id]\n", " doc.metadata[\"rerank_score\"] = result.score\n", " doc.metadata[\"query_used_for_retrieval\"] = query\n", " docs_reranked.append(doc)\n", " return docs_reranked\n", "\n", "docs_reranked = rerank_docs(reranker,docs_question,query)" ] }, { "cell_type": "code", "execution_count": null, "id": "430209db-5ffb-4017-8ebd-12fee30df327", "metadata": { "tags": [] }, "outputs": [], "source": [ "docs_reranked[0]" ] }, { "cell_type": "code", "execution_count": null, "id": "5ed0b677-bcc4-48b0-bc99-2f515f2e7293", "metadata": { "tags": [] }, "outputs": [], "source": [ "def divide_into_parts(target, parts):\n", " # Base value for each part\n", " base = target // parts\n", " # Remainder to distribute\n", " remainder = target % parts\n", " # List to hold the result\n", " result = []\n", " \n", " for i in range(parts):\n", " if i < remainder:\n", " # These parts get base value + 1\n", " result.append(base + 1)\n", " else:\n", " # The rest get the base value\n", " result.append(base)\n", " \n", " return result\n", "\n", "divide_into_parts(15,3)" ] }, { "cell_type": "code", "execution_count": null, "id": "1886fe98-4a29-4419-b436-adcbdbda35ac", "metadata": {}, "outputs": [], "source": [ "questions = " ] }, { "cell_type": "code", "execution_count": 133, "id": "4fca0c26-cc42-4f40-996a-c915b7c03a85", "metadata": { "tags": [] }, "outputs": [], "source": [ "state = {'query': \"I am not really sure what you mean. What role do cloud formations play in modulating the Earth's radiative balance, and how are they represented in current climate models?\",\n", " 'questions': [{'question': \"What role do cloud formations play in modulating the Earth's radiative balance?\",\n", " 'sources': ['IPCC']},\n", " {'question': 'How are cloud formations represented in current climate models?',\n", " 'sources': ['IPCC']}]}" ] }, { "cell_type": "code", "execution_count": 177, "id": "28307adf-42bb-4067-a95d-c5c4867d2657", "metadata": { "tags": [] }, "outputs": [], "source": [ "state = {'query': \"What does Morrison argue about the role of IK and LK ?\",\n", " 'questions': [{'question': \"How is the manga One Piece cited in the IPCC\",\n", " 'sources': ['IPCC']}]}" ] }, { "cell_type": "code", "execution_count": 178, "id": "9daa8285-919b-4eab-b071-70ea866d473e", "metadata": { "tags": [] }, "outputs": [], "source": [ "import sys\n", "import os\n", "from contextlib import contextmanager\n", "\n", "@contextmanager\n", "def suppress_output():\n", " # Open a null device\n", " with open(os.devnull, 'w') as devnull:\n", " # Store the original stdout and stderr\n", " old_stdout = sys.stdout\n", " old_stderr = sys.stderr\n", " # Redirect stdout and stderr to the null device\n", " sys.stdout = devnull\n", " sys.stderr = devnull\n", " try:\n", " yield\n", " finally:\n", " # Restore stdout and stderr\n", " sys.stdout = old_stdout\n", " sys.stderr = old_stderr" ] }, { "cell_type": "code", "execution_count": 179, "id": "4fc2efe2-783d-44ba-a246-2472ce6fd19b", "metadata": { "tags": [] }, "outputs": [], "source": [ "def retrieve_documents(state):\n", " \n", " POSSIBLE_SOURCES = [\"IPCC\",\"IPBES\",\"IPOS\",\"OpenAlex\"]\n", " questions = state[\"questions\"]\n", " \n", " # Use sources from the user input or from the LLM detection\n", " sources_input = state[\"sources_input\"] if \"sources_input\" in state else [\"auto\"]\n", " auto_mode = \"auto\" in sources_input\n", " \n", " # Constants\n", " k_final = 15\n", " k_before_reranking = 100\n", " k_summary = 5\n", " rerank_by_question = True\n", " \n", " # There are several options to get the final top k\n", " # Option 1 - Get 100 documents by question and rerank by question\n", " # Option 2 - Get 100/n documents by question and rerank the total\n", " if rerank_by_question:\n", " k_by_question = divide_into_parts(k_final,len(questions))\n", " \n", " docs = []\n", " \n", " for i,q in enumerate(questions):\n", " \n", " sources = q[\"sources\"]\n", " question = q[\"question\"]\n", " \n", " # If auto mode, we use the sources detected by the LLM\n", " if auto_mode:\n", " sources = [x for x in sources if x in POSSIBLE_SOURCES]\n", " \n", " # Otherwise, we use the config\n", " else:\n", " sources = sources_input\n", " \n", " # Search the document store using the retriever\n", " # Configure high top k for further reranking step\n", " retriever = ClimateQARetriever(\n", " vectorstore=vectorstore,\n", " sources = sources,\n", " # reports = ias_reports,\n", " min_size = 200,\n", " k_summary = k_summary,k_total = k_before_reranking,\n", " threshold = 0.5,\n", " )\n", " docs_question = retriever.get_relevant_documents(question)\n", " \n", " # Rerank\n", " with suppress_output():\n", " docs_question = rerank_docs(reranker,docs_question,question)\n", " \n", " # If rerank by question we select the top documents for each question\n", " if rerank_by_question:\n", " docs_question = docs_question[:k_by_question[i]]\n", " \n", " # Add sources used in the metadata\n", " for doc in docs_question:\n", " doc.metadata[\"sources_used\"] = sources\n", " \n", " # Add to the list of docs\n", " docs.extend(docs_question)\n", " \n", " # Sorting the list in descending order by rerank_score\n", " # Then select the top k\n", " docs = sorted(docs, key=lambda x: x.metadata[\"rerank_score\"], reverse=True)\n", " docs = docs[:k_final]\n", " \n", " new_state = {\"documents\":docs}\n", " return new_state\n", "\n", "def search(state):\n", " return {}" ] }, { "cell_type": "code", "execution_count": null, "id": "299cdae3-2e97-4e47-bad3-98643dfaf4ea", "metadata": { "tags": [] }, "outputs": [], "source": [ "%%time\n", "output = retrieve_documents(state)" ] }, { "cell_type": "code", "execution_count": null, "id": "638be0ea-bd41-45d7-ac7c-57ed789da3c5", "metadata": { "tags": [] }, "outputs": [], "source": [ "rerank_scores = np.array([doc.metadata[\"rerank_score\"] for doc in output[\"documents\"]])\n", "print(rerank_scores)\n", "print(np.mean(rerank_scores))" ] }, { "cell_type": "code", "execution_count": null, "id": "69ba19d3-97fb-4a23-99ee-c5827e0664e6", "metadata": { "tags": [] }, "outputs": [], "source": [ "for doc in output[\"documents\"]:\n", " print(doc)\n", " print(\"\")" ] }, { "cell_type": "markdown", "id": "5ef9b1be-d913-4dbd-ad67-b87c4e948d11", "metadata": {}, "source": [ "## Create the RAG" ] }, { "cell_type": "code", "execution_count": null, "id": "b4638a7a-08c4-4259-a2de-77d1eb45a47c", "metadata": {}, "outputs": [], "source": [ "\n", "# async def answer_ai_impact(state,config):\n", "# answer = await ai_impact_chain.ainvoke({\"question\":state[\"user_input\"]},config)\n", "# return {\"answer\":answer}\n", " \n", "async def answer_rag(state):\n", " \n", " # Get the docs\n", " docs = state[\"documents\"]\n", " \n", " # Compute the trust average score\n", " rerank_scores = np.array([doc.metadata[\"rerank_score\"] for doc in docs])\n", " trust_score = np.mean(rerank_scores)\n", " \n", " # \n", " answer = \"\\n\".join([x[\"question\"] for x in state[\"questions\"]])\n", " return {\"answer\":answer}" ] }, { "cell_type": "markdown", "id": "827873ee-f74d-4ed6-a4f8-fc8a3ef6aea8", "metadata": { "tags": [] }, "source": [ "## Test the graph" ] }, { "cell_type": "code", "execution_count": 8, "id": "b91f4f58", "metadata": {}, "outputs": [], "source": [ "from climateqa.engine.graph import make_graph_agent,display_graph\n", "\n", "app = make_graph_agent(llm,vectorstore,reranker)\n" ] }, { "cell_type": "code", "execution_count": 9, "id": "c3c70cdb", "metadata": {}, "outputs": [ { "data": { "image/jpeg": "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", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "display_graph(app)" ] }, { "cell_type": "markdown", "id": "3c387c53", "metadata": {}, "source": [] }, { "cell_type": "code", "execution_count": 10, "id": "05ead97d", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/tmp/ipykernel_26385/4164394190.py:6: LangChainBetaWarning: This API is in beta and may change in the future.\n", " async for event in app.astream_events({\"user_input\": question,\"sources\":[\"auto\"], \"audience\" : 'expert'}, version=\"v1\"):\n", "INFO:httpx:HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"\n", "INFO:httpx:HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"\n", "INFO:httpx:HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"\n", "INFO:httpx:HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"\n", "WARNING:langchain_core.callbacks.manager:Error in LogStreamCallbackHandler.on_chain_start callback: ValidationError(model='Run', errors=[{'loc': ('__root__',), 'msg': \"argument of type 'NoneType' is not iterable\", 'type': 'type_error'}])\n", "WARNING:langchain_core.callbacks.manager:Error in LangChainTracer.on_chain_start callback: ValidationError(model='Run', errors=[{'loc': ('__root__',), 'msg': \"argument of type 'NoneType' is not iterable\", 'type': 'type_error'}])\n", "WARNING:langchain_core.callbacks.manager:Error in LogStreamCallbackHandler.on_chain_end callback: TracerException('No indexed run ID 27bbc43d-748e-4061-a61a-872ea1e50b7e.')\n", "WARNING:langchain_core.callbacks.manager:Error in LangChainTracer.on_chain_end callback: TracerException('No indexed run ID 27bbc43d-748e-4061-a61a-872ea1e50b7e.')\n", "WARNING:langchain_core.callbacks.manager:Error in LogStreamCallbackHandler.on_chain_start callback: ValidationError(model='Run', errors=[{'loc': ('__root__',), 'msg': \"argument of type 'NoneType' is not iterable\", 'type': 'type_error'}])\n", "WARNING:langchain_core.callbacks.manager:Error in LangChainTracer.on_chain_start callback: ValidationError(model='Run', errors=[{'loc': ('__root__',), 'msg': \"argument of type 'NoneType' is not iterable\", 'type': 'type_error'}])\n", "WARNING:langchain_core.callbacks.manager:Error in LogStreamCallbackHandler.on_chain_end callback: TracerException('No indexed run ID 81a5385d-b9ff-4ec0-a581-15629901a185.')\n", "WARNING:langchain_core.callbacks.manager:Error in LangChainTracer.on_chain_end callback: TracerException('No indexed run ID 81a5385d-b9ff-4ec0-a581-15629901a185.')\n", "WARNING:langchain_core.callbacks.manager:Error in LogStreamCallbackHandler.on_chain_start callback: ValidationError(model='Run', errors=[{'loc': ('__root__',), 'msg': \"argument of type 'NoneType' is not iterable\", 'type': 'type_error'}])\n", "WARNING:langchain_core.callbacks.manager:Error in LangChainTracer.on_chain_start callback: ValidationError(model='Run', errors=[{'loc': ('__root__',), 'msg': \"argument of type 'NoneType' is not iterable\", 'type': 'type_error'}])\n", "WARNING:langchain_core.callbacks.manager:Error in LogStreamCallbackHandler.on_chain_end callback: TracerException('No indexed run ID 21a2d759-f3b0-480f-b1ba-52d6ce3ab09d.')\n", "WARNING:langchain_core.callbacks.manager:Error in LangChainTracer.on_chain_end callback: TracerException('No indexed run ID 21a2d759-f3b0-480f-b1ba-52d6ce3ab09d.')\n", "INFO:httpx:HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Cloud formations play a crucial role in modulating the Earth's radiative balance. They can either reflect incoming solar radiation back to space, cooling the Earth, or trap outgoing infrared radiation, contributing to warming. The representation of clouds in climate models is essential for accurately simulating the Earth's energy balance and predicting future climate changes.\n", "\n", "In current climate models, the representation of clouds, particularly low-level clouds, is a significant factor influencing the models' equilibrium climate sensitivity (ECS). The ECS of a model is determined by its effective radiative forcing from a doubling of CO2 and the feedbacks from cloud formations. The spread in ECS among different models is mainly attributed to cloud feedbacks, especially the response of low-level clouds [Doc 7].\n", "\n", "Despite efforts to improve cloud parametrizations and model resolutions, there has been no systematic convergence in model estimates of ECS. In fact, the inter-model spread in ECS for the latest CMIP6 models is larger than for CMIP5 models, indicating ongoing challenges in accurately representing cloud formations in climate models [Doc 7].\n", "\n", "Overall, the representation of cloud formations in current climate models is crucial for understanding and predicting the Earth's radiative balance and the impacts of climate change. Ongoing research and advancements in model development are essential to improve the accuracy of cloud representations in climate models." ] } ], "source": [ "# question = \"Tu penses quoi de Shakespeare ?\"\n", "question = \"C'est quoi la recette de la tarte aux pommes ?\"\n", "question = \"C'est quoi l'impact de ChatGPT ?\"\n", "question = \"I am not really sure what you mean. What role do cloud formations play in modulating the Earth's radiative balance, and how are they represented in current climate models?\"\n", "events_list = []\n", "async for event in app.astream_events({\"user_input\": question,\"sources\":[\"auto\"], \"audience\" : 'expert'}, version=\"v1\"):\n", " events_list.append(event)\n", "\n", " if event[\"event\"] == \"on_chat_model_stream\":\n", " token = event[\"data\"][\"chunk\"].content\n", " print(token,end = \"\")\n", " else :\n", " events_list.append(event)\n", " # print(event)\n", " # print(\"\")" ] }, { "cell_type": "code", "execution_count": 11, "id": "4aa3d0c7", "metadata": {}, "outputs": [], "source": [ "steps_display = {\n", " \"categorize_intent\":(\"🔄️ Analyzing user message\",True),\n", " \"transform_query\":(\"🔄️ Thinking step by step to answer the question\",True),\n", " \"retrieve_documents\":(\"🔄️ Searching in the knowledge base\",False),\n", "}" ] }, { "cell_type": "code", "execution_count": 13, "id": "ad6b4819", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{'event': 'on_chain_start', 'name': 'categorize_intent', 'run_id': '3ad80670-fa9e-4964-9961-f61d3d51b31b', 'tags': ['graph:step:1'], 'metadata': {'langgraph_step': 1, 'langgraph_node': 'categorize_intent', 'langgraph_triggers': ['start:categorize_intent'], 'langgraph_path': ('__pregel_pull', 'categorize_intent'), 'langgraph_checkpoint_ns': 'categorize_intent:60ee815d-ddc7-53f9-ee31-896198d632db'}, 'data': {'input': {'user_input': \"I am not really sure what you mean. What role do cloud formations play in modulating the Earth's radiative balance, and how are they represented in current climate models?\", 'audience': 'expert'}}, 'parent_ids': []}\n", "{'event': 'on_chain_start', 'name': 'categorize_intent', 'run_id': '3ad80670-fa9e-4964-9961-f61d3d51b31b', 'tags': ['graph:step:1'], 'metadata': {'langgraph_step': 1, 'langgraph_node': 'categorize_intent', 'langgraph_triggers': ['start:categorize_intent'], 'langgraph_path': ('__pregel_pull', 'categorize_intent'), 'langgraph_checkpoint_ns': 'categorize_intent:60ee815d-ddc7-53f9-ee31-896198d632db'}, 'data': {'input': {'user_input': \"I am not really sure what you mean. What role do cloud formations play in modulating the Earth's radiative balance, and how are they represented in current climate models?\", 'audience': 'expert'}}, 'parent_ids': []}\n", "{'event': 'on_chain_stream', 'name': 'categorize_intent', 'run_id': '3ad80670-fa9e-4964-9961-f61d3d51b31b', 'tags': ['graph:step:1'], 'metadata': {'langgraph_step': 1, 'langgraph_node': 'categorize_intent', 'langgraph_triggers': ['start:categorize_intent'], 'langgraph_path': ('__pregel_pull', 'categorize_intent'), 'langgraph_checkpoint_ns': 'categorize_intent:60ee815d-ddc7-53f9-ee31-896198d632db'}, 'data': {'chunk': {'intent': 'search', 'language': 'English', 'query': \"I am not really sure what you mean. What role do cloud formations play in modulating the Earth's radiative balance, and how are they represented in current climate models?\"}}, 'parent_ids': []}\n", "{'event': 'on_chain_stream', 'name': 'categorize_intent', 'run_id': '3ad80670-fa9e-4964-9961-f61d3d51b31b', 'tags': ['graph:step:1'], 'metadata': {'langgraph_step': 1, 'langgraph_node': 'categorize_intent', 'langgraph_triggers': ['start:categorize_intent'], 'langgraph_path': ('__pregel_pull', 'categorize_intent'), 'langgraph_checkpoint_ns': 'categorize_intent:60ee815d-ddc7-53f9-ee31-896198d632db'}, 'data': {'chunk': {'intent': 'search', 'language': 'English', 'query': \"I am not really sure what you mean. What role do cloud formations play in modulating the Earth's radiative balance, and how are they represented in current climate models?\"}}, 'parent_ids': []}\n", "{'event': 'on_chain_end', 'name': 'categorize_intent', 'run_id': '3ad80670-fa9e-4964-9961-f61d3d51b31b', 'tags': ['graph:step:1'], 'metadata': {'langgraph_step': 1, 'langgraph_node': 'categorize_intent', 'langgraph_triggers': ['start:categorize_intent'], 'langgraph_path': ('__pregel_pull', 'categorize_intent'), 'langgraph_checkpoint_ns': 'categorize_intent:60ee815d-ddc7-53f9-ee31-896198d632db'}, 'data': {'input': {'user_input': \"I am not really sure what you mean. What role do cloud formations play in modulating the Earth's radiative balance, and how are they represented in current climate models?\", 'audience': 'expert'}, 'output': {'intent': 'search', 'language': 'English', 'query': \"I am not really sure what you mean. What role do cloud formations play in modulating the Earth's radiative balance, and how are they represented in current climate models?\"}}, 'parent_ids': []}\n", "{'event': 'on_chain_end', 'name': 'categorize_intent', 'run_id': '3ad80670-fa9e-4964-9961-f61d3d51b31b', 'tags': ['graph:step:1'], 'metadata': {'langgraph_step': 1, 'langgraph_node': 'categorize_intent', 'langgraph_triggers': ['start:categorize_intent'], 'langgraph_path': ('__pregel_pull', 'categorize_intent'), 'langgraph_checkpoint_ns': 'categorize_intent:60ee815d-ddc7-53f9-ee31-896198d632db'}, 'data': {'input': {'user_input': \"I am not really sure what you mean. What role do cloud formations play in modulating the Earth's radiative balance, and how are they represented in current climate models?\", 'audience': 'expert'}, 'output': {'intent': 'search', 'language': 'English', 'query': \"I am not really sure what you mean. What role do cloud formations play in modulating the Earth's radiative balance, and how are they represented in current climate models?\"}}, 'parent_ids': []}\n" ] } ], "source": [ "nodes =[]\n", "for event in events_list:\n", " # print(\"event\",event[\"event\"],\"name\",event[\"name\"], \"metadata\", event[\"metadata\"])\n", " if \"langgraph_node\" in event[\"metadata\"]:\n", " nodes.append(event[\"metadata\"][\"langgraph_node\"])\n", " \n", " \n", " # print(\"node : \", event[\"metadata\"][\"langgraph_node\"], \"event\",event[\"event\"],\"name\",event[\"name\"])\n", " # print(event[\"event\"],\"name\",event[\"name\"])\n", " # if event[\"event\"] == \"on_chat_model_stream\":\n", " # print(event)\n", "\n", " # if event[\"name\"] in steps_display.keys() and event[\"event\"] == \"on_chain_end\": #display steps\n", " # if event[\"event\"] == \"on_chain_end\" and event[\"name\"] == \"transform_query\": #display steps\n", " # if event[\"name\"] == \"transform_query\": #display steps\n", " # print(event)\n", " \n", " # if event[\"name\"] != \"transform_query\" and event[\"event\"] == \"on_chat_model_stream\":\n", " # print(event)\n", " if event[\"name\"] == \"categorize_intent\":\n", " print(event)" ] }, { "cell_type": "code", "execution_count": 3, "id": "e54af13e", "metadata": {}, "outputs": [ { "ename": "NameError", "evalue": "name 'Document' is not defined", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", "Cell \u001b[0;32mIn[3], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m x \u001b[38;5;241m=\u001b[39m {\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mevent\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mon_chain_end\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mname\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mretrieve_documents\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mrun_id\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m60525384-8138-4522-99c1-a1eb59defbd4\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mtags\u001b[39m\u001b[38;5;124m'\u001b[39m: [\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mgraph:step:4\u001b[39m\u001b[38;5;124m'\u001b[39m], \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mmetadata\u001b[39m\u001b[38;5;124m'\u001b[39m: {\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mlanggraph_step\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;241m4\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mlanggraph_node\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mretrieve_documents\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mlanggraph_triggers\u001b[39m\u001b[38;5;124m'\u001b[39m: [\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mtransform_query\u001b[39m\u001b[38;5;124m'\u001b[39m], \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mlanggraph_path\u001b[39m\u001b[38;5;124m'\u001b[39m: (\u001b[38;5;124m'\u001b[39m\u001b[38;5;124m__pregel_pull\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mretrieve_documents\u001b[39m\u001b[38;5;124m'\u001b[39m), \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mlanggraph_checkpoint_ns\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mretrieve_documents:29351557-d5e9-6fb7-9c8f-fc1101da92e8\u001b[39m\u001b[38;5;124m'\u001b[39m}, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mdata\u001b[39m\u001b[38;5;124m'\u001b[39m: {\u001b[38;5;124m'\u001b[39m\u001b[38;5;124minput\u001b[39m\u001b[38;5;124m'\u001b[39m: {\u001b[38;5;124m'\u001b[39m\u001b[38;5;124muser_input\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mI am not really sure what you mean. What role do cloud formations play in modulating the Earth\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124ms radiative balance, and how are they represented in current climate models?\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mlanguage\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mEnglish\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mintent\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124msearch\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mquery\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mI am not really sure what you mean. What role do cloud formations play in modulating the Earth\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124ms radiative balance, and how are they represented in current climate models?\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mremaining_questions\u001b[39m\u001b[38;5;124m'\u001b[39m: [{\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mquestion\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mWhat role do cloud formations play in modulating the Earth\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124ms radiative balance?\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124msources\u001b[39m\u001b[38;5;124m'\u001b[39m: [\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mIPCC\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mIPOS\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mIPBES\u001b[39m\u001b[38;5;124m'\u001b[39m], \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mindex\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mVector\u001b[39m\u001b[38;5;124m'\u001b[39m}, {\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mquestion\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mHow are cloud formations represented in current climate models?\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124msources\u001b[39m\u001b[38;5;124m'\u001b[39m: [\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mIPCC\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mIPOS\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mIPBES\u001b[39m\u001b[38;5;124m'\u001b[39m], \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mindex\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mVector\u001b[39m\u001b[38;5;124m'\u001b[39m}], \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mn_questions\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;241m2\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124maudience\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mexpert\u001b[39m\u001b[38;5;124m'\u001b[39m}, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124moutput\u001b[39m\u001b[38;5;124m'\u001b[39m: {\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mdocuments\u001b[39m\u001b[38;5;124m'\u001b[39m: [\u001b[43mDocument\u001b[49m(metadata\u001b[38;5;241m=\u001b[39m{\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mchunk_type\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mtext\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mdocument_id\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mdocument1\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mdocument_number\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;241m1.0\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124melement_id\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mN/A\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mfigure_code\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mN/A\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mfile_size\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mN/A\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mimage_path\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mN/A\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mn_pages\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;241m32.0\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mname\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mSummary for Policymakers. In: Climate Change 2021: The Physical Science Basis. Contribution of the WGI to the AR6 of the IPCC\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mnum_characters\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;241m1056.0\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mnum_tokens\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;241m219.0\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mnum_tokens_approx\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;241m266.0\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mnum_words\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;241m200.0\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mpage_number\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;241m7\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mrelease_date\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;241m2021.0\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mreport_type\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mSPM\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124msection_header\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mFigure SPM.2 | Assessed contributions to observed warming in 2010-2019 relative to 1850-1900\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mshort_name\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mIPCC AR6 WGI SPM\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124msource\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mIPCC\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mtoc_level0\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mA. The Current State of the Climate\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mtoc_level1\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mN/A\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mtoc_level2\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mN/A\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mtoc_level3\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mN/A\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124murl\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mhttps://www.ipcc.ch/report/ar6/wg1/downloads/report/IPCC_AR6_WGI_SPM.pdf\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124msimilarity_score\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;241m0.595214307\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mcontent\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mPanel (b) Evidence from attribution studies, which synthesize information from climate models and observations. The panel shows temperature change attributed to: total human influence; changes in well-mixed greenhouse gas concentrations; other human drivers due to aerosols, ozone and land-use change (land-use reflectance); solar and volcanic drivers; and internal climate variability. Whiskers show likely ranges.\u001b[39m\u001b[38;5;130;01m\\n\u001b[39;00m\u001b[38;5;124mPanel (c) Evidence from the assessment of radiative forcing and climate sensitivity. The panel shows temperature changes from individual components of human influence: emissions of greenhouse gases, aerosols and their precursors; land-use changes (land-use reflectance and irrigation); and aviation contrails. Whiskers show very likely ranges. Estimates account for both direct emissions into the atmosphere and their effect, if any, on other climate drivers. For aerosols, both direct effects (through radiation) and indirect effects (through interactions with clouds) are considered. \u001b[39m\u001b[38;5;124m{\u001b[39m\u001b[38;5;124mCross-Chapter Box 2.3, 3.3.1, 6.4.2, 7.3}\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mreranking_score\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;241m0.9769342541694641\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mquery_used_for_retrieval\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mWhat role do cloud formations play in modulating the Earth\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124ms radiative balance?\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124msources_used\u001b[39m\u001b[38;5;124m'\u001b[39m: [\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mIPCC\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mIPOS\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mIPBES\u001b[39m\u001b[38;5;124m'\u001b[39m], \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mquestion_used\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mWhat role do cloud formations play in modulating the Earth\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124ms radiative balance?\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mindex_used\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mVector\u001b[39m\u001b[38;5;124m'\u001b[39m}, page_content\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mPanel (b) Evidence from attribution studies, which synthesize information from climate models and observations. The panel shows temperature change attributed to: total human influence; changes in well-mixed greenhouse gas concentrations; other human drivers due to aerosols, ozone and land-use change (land-use reflectance); solar and volcanic drivers; and internal climate variability. Whiskers show likely ranges.\u001b[39m\u001b[38;5;130;01m\\n\u001b[39;00m\u001b[38;5;124mPanel (c) Evidence from the assessment of radiative forcing and climate sensitivity. The panel shows temperature changes from individual components of human influence: emissions of greenhouse gases, aerosols and their precursors; land-use changes (land-use reflectance and irrigation); and aviation contrails. Whiskers show very likely ranges. Estimates account for both direct emissions into the atmosphere and their effect, if any, on other climate drivers. For aerosols, both direct effects (through radiation) and indirect effects (through interactions with clouds) are considered. \u001b[39m\u001b[38;5;124m{\u001b[39m\u001b[38;5;124mCross-Chapter Box 2.3, 3.3.1, 6.4.2, 7.3}\u001b[39m\u001b[38;5;124m'\u001b[39m), Document(metadata\u001b[38;5;241m=\u001b[39m{\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mchunk_type\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mtext\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mdocument_id\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mdocument1\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mdocument_number\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;241m1.0\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124melement_id\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mN/A\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mfigure_code\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mN/A\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mfile_size\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mN/A\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mimage_path\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mN/A\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mn_pages\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;241m32.0\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mname\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mSummary for Policymakers. In: Climate Change 2021: The Physical Science Basis. Contribution of the WGI to the AR6 of the IPCC\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mnum_characters\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;241m638.0\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mnum_tokens\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;241m177.0\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mnum_tokens_approx\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;241m200.0\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mnum_words\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;241m150.0\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mpage_number\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;241m11\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mrelease_date\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;241m2021.0\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mreport_type\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mSPM\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124msection_header\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mFigure SPM.3 | Synthesis of assessed observed and attributable regional changes \u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mshort_name\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mIPCC AR6 WGI SPM\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124msource\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mIPCC\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mtoc_level0\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mA. The Current State of the Climate\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mtoc_level1\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mN/A\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mtoc_level2\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mN/A\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mtoc_level3\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mN/A\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124murl\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mhttps://www.ipcc.ch/report/ar6/wg1/downloads/report/IPCC_AR6_WGI_SPM.pdf\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124msimilarity_score\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;241m0.592556596\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mcontent\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mA.4.1 Human-caused radiative forcing of 2.72 [1.96 to 3.48] W m-2 in 2019 relative to 1750 has warmed the climate system. This warming is mainly due to increased GHG concentrations, partly reduced by cooling due to increased aerosol concentrations. The radiative forcing has increased by 0.43 W m-2 (19\u001b[39m\u001b[38;5;124m%\u001b[39m\u001b[38;5;124m) relative to AR5, of which 0.34 W m-2 is due to the increase in GHG concentrations since 2011. The remainder is due to improved scientific understanding and changes in the assessment of aerosol forcing, which include decreases in concentration and improvement in its calculation (high confidence). \u001b[39m\u001b[38;5;124m{\u001b[39m\u001b[38;5;124m2.2, 7.3, TS.2.2, TS.3.1}\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mreranking_score\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;241m0.907663881778717\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mquery_used_for_retrieval\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mWhat role do cloud formations play in modulating the Earth\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124ms radiative balance?\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124msources_used\u001b[39m\u001b[38;5;124m'\u001b[39m: [\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mIPCC\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mIPOS\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mIPBES\u001b[39m\u001b[38;5;124m'\u001b[39m], \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mquestion_used\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mWhat role do cloud formations play in modulating the Earth\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124ms radiative balance?\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mindex_used\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mVector\u001b[39m\u001b[38;5;124m'\u001b[39m}, page_content\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mA.4.1 Human-caused radiative forcing of 2.72 [1.96 to 3.48] W m-2 in 2019 relative to 1750 has warmed the climate system. This warming is mainly due to increased GHG concentrations, partly reduced by cooling due to increased aerosol concentrations. The radiative forcing has increased by 0.43 W m-2 (19\u001b[39m\u001b[38;5;124m%\u001b[39m\u001b[38;5;124m) relative to AR5, of which 0.34 W m-2 is due to the increase in GHG concentrations since 2011. The remainder is due to improved scientific understanding and changes in the assessment of aerosol forcing, which include decreases in concentration and improvement in its calculation (high confidence). \u001b[39m\u001b[38;5;124m{\u001b[39m\u001b[38;5;124m2.2, 7.3, TS.2.2, TS.3.1}\u001b[39m\u001b[38;5;124m'\u001b[39m), Document(metadata\u001b[38;5;241m=\u001b[39m{\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mchunk_type\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mtext\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mdocument_id\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mdocument1\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mdocument_number\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;241m1.0\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124melement_id\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mN/A\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mfigure_code\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mN/A\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mfile_size\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mN/A\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mimage_path\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mN/A\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mn_pages\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;241m32.0\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mname\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mSummary for Policymakers. In: Climate Change 2021: The Physical Science Basis. Contribution of the WGI to the AR6 of the IPCC\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mnum_characters\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;241m827.0\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mnum_tokens\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;241m238.0\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mnum_tokens_approx\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;241m278.0\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mnum_words\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;241m209.0\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mpage_number\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;241m19\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mrelease_date\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;241m2021.0\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mreport_type\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mSPM\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124msection_header\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mFigure SPM.6 | Projected changes in the intensity and frequency of hot temperature extremes over land, extreme precipitation over land, \u001b[39m\u001b[38;5;130;01m\\r\u001b[39;00m\u001b[38;5;130;01m\\n\u001b[39;00m\u001b[38;5;124mand agricultural and ecological droughts in drying regions\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mshort_name\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mIPCC AR6 WGI SPM\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124msource\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mIPCC\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mtoc_level0\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mB. Possible Climate Futures\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mtoc_level1\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mN/A\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mtoc_level2\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mN/A\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mtoc_level3\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mN/A\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124murl\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mhttps://www.ipcc.ch/report/ar6/wg1/downloads/report/IPCC_AR6_WGI_SPM.pdf\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124msimilarity_score\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;241m0.582914889\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mcontent\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mB.3.4 A projected southward shift and intensification of Southern Hemisphere summer mid-latitude storm tracks and associated precipitation is likely in the long term under high GHG emissions scenarios (SSP3-7.0, SSP5-8.5), but in the near term the effect of stratospheric ozone recovery counteracts these changes (high confidence). There is medium confidence in a continued poleward shift of storms and their precipitation in the North Pacific, while there is low confidence in projected changes in the North Atlantic storm tracks. \u001b[39m\u001b[38;5;124m{\u001b[39m\u001b[38;5;124m4.4, 4.5, 8.4, TS.2.3, TS.4.2}\u001b[39m\u001b[38;5;130;01m\\n\u001b[39;00m\u001b[38;5;124m{\u001b[39m\u001b[38;5;124m4.4, 4.5, 8.4, TS.2.3, TS.4.2}\u001b[39m\u001b[38;5;130;01m\\n\u001b[39;00m\u001b[38;5;124mB.4 Under scenarios with increasing CO2 emissions, the ocean and land carbon sinks are projected to be less effective at slowing the accumulation of CO2 in the atmosphere. \u001b[39m\u001b[38;5;124m{\u001b[39m\u001b[38;5;124m4.3, 5.2, 5.4, 5.5, 5.6} (Figure SPM.7)\u001b[39m\u001b[38;5;130;01m\\n\u001b[39;00m\u001b[38;5;124m1919\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mreranking_score\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;241m0.8376452922821045\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mquery_used_for_retrieval\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mWhat role do cloud formations play in modulating the Earth\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124ms radiative balance?\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124msources_used\u001b[39m\u001b[38;5;124m'\u001b[39m: [\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mIPCC\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mIPOS\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mIPBES\u001b[39m\u001b[38;5;124m'\u001b[39m], \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mquestion_used\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mWhat role do cloud formations play in modulating the Earth\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124ms radiative balance?\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mindex_used\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mVector\u001b[39m\u001b[38;5;124m'\u001b[39m}, page_content\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mB.3.4 A projected southward shift and intensification of Southern Hemisphere summer mid-latitude storm tracks and associated precipitation is likely in the long term under high GHG emissions scenarios (SSP3-7.0, SSP5-8.5), but in the near term the effect of stratospheric ozone recovery counteracts these changes (high confidence). There is medium confidence in a continued poleward shift of storms and their precipitation in the North Pacific, while there is low confidence in projected changes in the North Atlantic storm tracks. \u001b[39m\u001b[38;5;124m{\u001b[39m\u001b[38;5;124m4.4, 4.5, 8.4, TS.2.3, TS.4.2}\u001b[39m\u001b[38;5;130;01m\\n\u001b[39;00m\u001b[38;5;124m{\u001b[39m\u001b[38;5;124m4.4, 4.5, 8.4, TS.2.3, TS.4.2}\u001b[39m\u001b[38;5;130;01m\\n\u001b[39;00m\u001b[38;5;124mB.4 Under scenarios with increasing CO2 emissions, the ocean and land carbon sinks are projected to be less effective at slowing the accumulation of CO2 in the atmosphere. \u001b[39m\u001b[38;5;124m{\u001b[39m\u001b[38;5;124m4.3, 5.2, 5.4, 5.5, 5.6} (Figure SPM.7)\u001b[39m\u001b[38;5;130;01m\\n\u001b[39;00m\u001b[38;5;124m1919\u001b[39m\u001b[38;5;124m'\u001b[39m), Document(metadata\u001b[38;5;241m=\u001b[39m{\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mchunk_type\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mtext\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mdocument_id\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mdocument4\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mdocument_number\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;241m4.0\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124melement_id\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mN/A\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mfigure_code\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mN/A\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mfile_size\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mN/A\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mimage_path\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mN/A\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mn_pages\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;241m34.0\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mname\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mSummary for Policymakers. In: Climate Change 2022: Impacts, Adaptation and Vulnerability. Contribution of the WGII to the AR6 of the IPCC\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mnum_characters\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;241m806.0\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mnum_tokens\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;241m147.0\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mnum_tokens_approx\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;241m162.0\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mnum_words\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;241m122.0\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mpage_number\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;241m19\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mrelease_date\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;241m2022.0\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mreport_type\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mSPM\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124msection_header\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mComplex, Compound and Cascading Risks\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mshort_name\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mIPCC AR6 WGII SPM\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124msource\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mIPCC\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mtoc_level0\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mB: Observed and Projected Impacts and Risks\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mtoc_level1\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mImpacts of Temporary Overshoot\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mtoc_level2\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mN/A\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mtoc_level3\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mN/A\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124murl\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mhttps://www.ipcc.ch/report/ar6/wg2/downloads/report/IPCC_AR6_WGII_SummaryForPolicymakers.pdf\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124msimilarity_score\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;241m0.581911206\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mcontent\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mB.5.5 Solar radiation modification approaches, if they were to be implemented, introduce a widespread range of new risks to people and ecosystems, which are not well understood (high confidence). Solar radiation modification approaches have potential to offset warming and ameliorate some climate hazards, but substantial residual climate change or overcompensating change would occur at regional scales and seasonal timescales (high confidence). Large uncertainties and knowledge gaps are associated with the potential of solar radiation modification approaches to reduce climate change risks. Solar radiation modification would not stop atmospheric CO2 concentrations from increasing or reduce resulting ocean acidification under continued anthropogenic emissions (high confidence). \u001b[39m\u001b[38;5;124m{\u001b[39m\u001b[38;5;124mCWGB SRM}\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mreranking_score\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;241m0.7240780591964722\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mquery_used_for_retrieval\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mWhat role do cloud formations play in modulating the Earth\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124ms radiative balance?\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124msources_used\u001b[39m\u001b[38;5;124m'\u001b[39m: [\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mIPCC\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mIPOS\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mIPBES\u001b[39m\u001b[38;5;124m'\u001b[39m], \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mquestion_used\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mWhat role do cloud formations play in modulating the Earth\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124ms radiative balance?\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mindex_used\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mVector\u001b[39m\u001b[38;5;124m'\u001b[39m}, page_content\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mB.5.5 Solar radiation modification approaches, if they were to be implemented, introduce a widespread range of new risks to people and ecosystems, which are not well understood (high confidence). Solar radiation modification approaches have potential to offset warming and ameliorate some climate hazards, but substantial residual climate change or overcompensating change would occur at regional scales and seasonal timescales (high confidence). Large uncertainties and knowledge gaps are associated with the potential of solar radiation modification approaches to reduce climate change risks. Solar radiation modification would not stop atmospheric CO2 concentrations from increasing or reduce resulting ocean acidification under continued anthropogenic emissions (high confidence). \u001b[39m\u001b[38;5;124m{\u001b[39m\u001b[38;5;124mCWGB SRM}\u001b[39m\u001b[38;5;124m'\u001b[39m), Document(metadata\u001b[38;5;241m=\u001b[39m{\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mchunk_type\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mtext\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mdocument_id\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mdocument10\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mdocument_number\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;241m10.0\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124melement_id\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mN/A\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mfigure_code\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mN/A\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mfile_size\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mN/A\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mimage_path\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mN/A\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mn_pages\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;241m36.0\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mname\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mSynthesis report of the IPCC Sixth Assesment Report AR6\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mnum_characters\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;241m686.0\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mnum_tokens\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;241m163.0\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mnum_tokens_approx\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;241m182.0\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mnum_words\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;241m137.0\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mpage_number\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;241m19\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mrelease_date\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;241m2023.0\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mreport_type\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mSPM\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124msection_header\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mFuture Climate Change \u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mshort_name\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mIPCC AR6 SYR\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124msource\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mIPCC\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mtoc_level0\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mN/A\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mtoc_level1\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mN/A\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mtoc_level2\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mN/A\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mtoc_level3\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mN/A\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124murl\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mhttps://www.ipcc.ch/report/ar6/syr/downloads/report/IPCC_AR6_SYR_SPM.pdf\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124msimilarity_score\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;241m0.581764042\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mcontent\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mPermafrost, seasonal snow cover, glaciers, the Greenland and Antarctic Ice Sheets, an\u001b[39m\u001b[38;5;130;01m\\n\u001b[39;00m\u001b[38;5;124msonal snow cover, glaciers, the Greenland and Antarctic Ice Sheets, and Arctic se\u001b[39m\u001b[38;5;130;01m\\n\u001b[39;00m\u001b[38;5;124m35 Based on 2500-year reconstructions, eruptions with a radiative forcing more negative than -1 W m-2, related to the radiative effect of volcanic stratospheric aerosols in the literature assessed in this report, occur on average twice per century. \u001b[39m\u001b[38;5;132;01m{4.3}\u001b[39;00m\u001b[38;5;130;01m\\n\u001b[39;00m\u001b[38;5;124m35 Based on 2500-year reconstructions, eruptions with a radiative forcing more negative than -1 W m-2, related to the radiative effect of volcanic stratospheric aerosols in the literature assessed in this report, occur on average twice per century. \u001b[39m\u001b[38;5;132;01m{4.3}\u001b[39;00m\u001b[38;5;130;01m\\n\u001b[39;00m\u001b[38;5;124m1313\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mreranking_score\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;241m0.7240780591964722\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mquery_used_for_retrieval\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mWhat role do cloud formations play in modulating the Earth\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124ms radiative balance?\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124msources_used\u001b[39m\u001b[38;5;124m'\u001b[39m: [\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mIPCC\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mIPOS\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mIPBES\u001b[39m\u001b[38;5;124m'\u001b[39m], \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mquestion_used\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mWhat role do cloud formations play in modulating the Earth\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124ms radiative balance?\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mindex_used\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mVector\u001b[39m\u001b[38;5;124m'\u001b[39m}, page_content\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mPermafrost, seasonal snow cover, glaciers, the Greenland and Antarctic Ice Sheets, an\u001b[39m\u001b[38;5;130;01m\\n\u001b[39;00m\u001b[38;5;124msonal snow cover, glaciers, the Greenland and Antarctic Ice Sheets, and Arctic se\u001b[39m\u001b[38;5;130;01m\\n\u001b[39;00m\u001b[38;5;124m35 Based on 2500-year reconstructions, eruptions with a radiative forcing more negative than -1 W m-2, related to the radiative effect of volcanic stratospheric aerosols in the literature assessed in this report, occur on average twice per century. \u001b[39m\u001b[38;5;132;01m{4.3}\u001b[39;00m\u001b[38;5;130;01m\\n\u001b[39;00m\u001b[38;5;124m35 Based on 2500-year reconstructions, eruptions with a radiative forcing more negative than -1 W m-2, related to the radiative effect of volcanic stratospheric aerosols in the literature assessed in this report, occur on average twice per century. \u001b[39m\u001b[38;5;132;01m{4.3}\u001b[39;00m\u001b[38;5;130;01m\\n\u001b[39;00m\u001b[38;5;124m1313\u001b[39m\u001b[38;5;124m'\u001b[39m), Document(metadata\u001b[38;5;241m=\u001b[39m{\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mchunk_type\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mtext\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mdocument_id\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mdocument2\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mdocument_number\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;241m2.0\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124melement_id\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mN/A\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mfigure_code\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mN/A\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mfile_size\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mN/A\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mimage_path\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mN/A\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mn_pages\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;241m2409.0\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mname\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mFull Report. In: Climate Change 2021: The Physical Science Basis. Contribution of the WGI to the AR6 of the IPCC\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mnum_characters\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;241m644.0\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mnum_tokens\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;241m151.0\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mnum_tokens_approx\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;241m165.0\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mnum_words\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;241m124.0\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mpage_number\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;241m950\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mrelease_date\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;241m2021.0\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mreport_type\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mFull Report\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124msection_header\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m7.2.1 Present-day Energy Budget\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mshort_name\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mIPCC AR6 WGI FR\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124msource\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mIPCC\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mtoc_level0\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m7: The Earth’s Energy Budget, Climate Feedbacks and Climate Sensitivity\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mtoc_level1\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m7.2 Earth’s Energy Budget and its Changes\u001b[39m\u001b[38;5;130;01m\\xa0\u001b[39;00m\u001b[38;5;124mThrough Time\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mtoc_level2\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m7.2.1 Present-day Energy Budget\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mtoc_level3\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mN/A\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124murl\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mhttps://report.ipcc.ch/ar6/wg1/IPCC_AR6_WGI_FullReport.pdf\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124msimilarity_score\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;241m0.741419494\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mcontent\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mFigure 7.2 (upper panel) shows a schematic representation of Earth\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124ms energy budget for the early 21st century, including globally averaged estimates of the individual components (Wild et al., 2015). Clouds are important modulators of global energy fluxes. Thus, any perturbations in the cloud fields, such as forcing by aerosol-cloud interactions (Section 7.3) or through cloud feedbacks (Section 7.4) can have a strong influence on the energy distribution in the climate system. To illustrate the overall effects that clouds exert on energy fluxes, Figure 7.2 (lower panel) also shows the energy budget in the absence \u001b[39m\u001b[38;5;130;01m\\n\u001b[39;00m\u001b[38;5;124m933933\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mreranking_score\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;241m0.7089773416519165\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mquery_used_for_retrieval\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mWhat role do cloud formations play in modulating the Earth\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124ms radiative balance?\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124msources_used\u001b[39m\u001b[38;5;124m'\u001b[39m: [\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mIPCC\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mIPOS\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mIPBES\u001b[39m\u001b[38;5;124m'\u001b[39m], \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mquestion_used\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mWhat role do cloud formations play in modulating the Earth\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124ms radiative balance?\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mindex_used\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mVector\u001b[39m\u001b[38;5;124m'\u001b[39m}, page_content\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mFigure 7.2 (upper panel) shows a schematic representation of Earth\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124ms energy budget for the early 21st century, including globally averaged estimates of the individual components (Wild et al., 2015). Clouds are important modulators of global energy fluxes. Thus, any perturbations in the cloud fields, such as forcing by aerosol-cloud interactions (Section 7.3) or through cloud feedbacks (Section 7.4) can have a strong influence on the energy distribution in the climate system. To illustrate the overall effects that clouds exert on energy fluxes, Figure 7.2 (lower panel) also shows the energy budget in the absence \u001b[39m\u001b[38;5;130;01m\\n\u001b[39;00m\u001b[38;5;124m933933\u001b[39m\u001b[38;5;124m\"\u001b[39m), Document(metadata\u001b[38;5;241m=\u001b[39m{\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mchunk_type\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mtext\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mdocument_id\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mdocument2\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mdocument_number\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;241m2.0\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124melement_id\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mN/A\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mfigure_code\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mN/A\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mfile_size\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mN/A\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mimage_path\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mN/A\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mn_pages\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;241m2409.0\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mname\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mFull Report. In: Climate Change 2021: The Physical Science Basis. Contribution of the WGI to the AR6 of the IPCC\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mnum_characters\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;241m1121.0\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mnum_tokens\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;241m231.0\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mnum_tokens_approx\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;241m288.0\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mnum_words\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;241m216.0\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mpage_number\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;241m1039\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mrelease_date\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;241m2021.0\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mreport_type\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mFull Report\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124msection_header\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mFAQ 7.2 | What Is the Role of Clouds in a Warming Climate?\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mshort_name\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mIPCC AR6 WGI FR\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124msource\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mIPCC\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mtoc_level0\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m7: The Earth’s Energy Budget, Climate Feedbacks and Climate Sensitivity\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mtoc_level1\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m7.6 Metrics to Evaluate Emissions\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mtoc_level2\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mFrequently Asked Questions\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mtoc_level3\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mFAQ 7.1 | What Is the Earth’s Energy Budget, and What Does It Tell Us About Climate Change?\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124murl\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mhttps://report.ipcc.ch/ar6/wg1/IPCC_AR6_WGI_FullReport.pdf\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124msimilarity_score\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;241m0.727996647\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mcontent\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mClouds cover roughly two-thirds of the Earth\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124ms surface. They consist of small droplets and/or ice crystals, which form when water vapour condenses or deposits around tiny particles called aerosols (such as salt, dust, or smoke). Clouds play a critical role in the Earth\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124ms energy budget at the top of our atmosphere and therefore influence Earth\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124ms surface temperature (see FAQ 7.1). The interactions between clouds and the climate are complex and varied. Clouds at low altitudes tend to reflect incoming solar energy back to space, creating a cooling effect by preventing this energy from reaching and warming the Earth. On the other hand, higher clouds tend to trap (i.e., absorb and then emit at a lower temperature) some of the energy leaving the Earth, leading to a warming effect. On average, clouds reflect back more incoming energy than the amount of outgoing energy they trap, resulting in an overall net cooling effect on the present climate. Human activities since the pre-industrial era have altered this climate effect of clouds in two different ways: by changing the abundance of the aerosol\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mreranking_score\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;241m0.47518521547317505\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mquery_used_for_retrieval\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mWhat role do cloud formations play in modulating the Earth\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124ms radiative balance?\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124msources_used\u001b[39m\u001b[38;5;124m'\u001b[39m: [\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mIPCC\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mIPOS\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mIPBES\u001b[39m\u001b[38;5;124m'\u001b[39m], \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mquestion_used\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mWhat role do cloud formations play in modulating the Earth\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124ms radiative balance?\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mindex_used\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mVector\u001b[39m\u001b[38;5;124m'\u001b[39m}, page_content\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mClouds cover roughly two-thirds of the Earth\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124ms surface. They consist of small droplets and/or ice crystals, which form when water vapour condenses or deposits around tiny particles called aerosols (such as salt, dust, or smoke). Clouds play a critical role in the Earth\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124ms energy budget at the top of our atmosphere and therefore influence Earth\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124ms surface temperature (see FAQ 7.1). The interactions between clouds and the climate are complex and varied. Clouds at low altitudes tend to reflect incoming solar energy back to space, creating a cooling effect by preventing this energy from reaching and warming the Earth. On the other hand, higher clouds tend to trap (i.e., absorb and then emit at a lower temperature) some of the energy leaving the Earth, leading to a warming effect. On average, clouds reflect back more incoming energy than the amount of outgoing energy they trap, resulting in an overall net cooling effect on the present climate. Human activities since the pre-industrial era have altered this climate effect of clouds in two different ways: by changing the abundance of the aerosol\u001b[39m\u001b[38;5;124m\"\u001b[39m)], \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mremaining_questions\u001b[39m\u001b[38;5;124m'\u001b[39m: [{\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mquestion\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mHow are cloud formations represented in current climate models?\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124msources\u001b[39m\u001b[38;5;124m'\u001b[39m: [\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mIPCC\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mIPOS\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mIPBES\u001b[39m\u001b[38;5;124m'\u001b[39m], \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mindex\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mVector\u001b[39m\u001b[38;5;124m'\u001b[39m}]}}, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mparent_ids\u001b[39m\u001b[38;5;124m'\u001b[39m: []}\n", "\u001b[0;31mNameError\u001b[0m: name 'Document' is not defined" ] } ], "source": [] }, { "cell_type": "code", "execution_count": 2, "id": "98d3cafd", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'intent': 'search',\n", " 'language': 'English',\n", " 'query': \"I am not really sure what you mean. What role do cloud formations play in modulating the Earth's radiative balance, and how are they represented in current climate models?\"}" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "x[\"data\"][\"output\"]" ] }, { "cell_type": "code", "execution_count": null, "id": "3aace6fc", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": 17, "id": "ff0aac1b", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array(['__start__', 'answer_rag', 'answer_search', 'categorize_intent',\n", " 'retrieve_documents', 'search', 'transform_query'], dtype='