From fcc37cd06b0c617a57c09d27efa3fe547f0a1f6f Mon Sep 17 00:00:00 2001 From: Jong Hyun Park <35061738+jonhpark7966@users.noreply.github.com> Date: Tue, 10 Jun 2025 01:54:29 +0900 Subject: [PATCH] docs: update tutorial/rag/langgraph_adaptive_rag.ipynb (#2006) - add some explanations of ipynb code in markdown cell. Co-authored-by: Sydney Runkle <54324534+sydney-runkle@users.noreply.github.com> --- .../rag/langgraph_adaptive_rag.ipynb | 70 ++++++++++++++++++- 1 file changed, 68 insertions(+), 2 deletions(-) diff --git a/docs/docs/tutorials/rag/langgraph_adaptive_rag.ipynb b/docs/docs/tutorials/rag/langgraph_adaptive_rag.ipynb index e8c8a95d3..00fe6e299 100644 --- a/docs/docs/tutorials/rag/langgraph_adaptive_rag.ipynb +++ b/docs/docs/tutorials/rag/langgraph_adaptive_rag.ipynb @@ -90,7 +90,11 @@ "id": "9ac1c2cd-81fb-40eb-8ba1-e9197800cba6", "metadata": {}, "source": [ - "## Create Index" + "## Create Index\n", + "\n", + "Set up a vector database using OpenAI Embeddings and the Chroma vector database. \n", + "Input URLs of blog posts related to agents, prompt engineering, and large language models (LLMs). \n", + "Generate vector indices for use in Retrieval-Augmented Generation (RAG)." ] }, { @@ -159,6 +163,21 @@ "" ] }, + { + "cell_type": "markdown", + "id": "6cdd5ac0-fa18-4ee9-8051-062a0c56268f", + "metadata": {}, + "source": [ + "### Router for Query Analysis\n", + "\n", + "Let’s start with Routing. First, assign the query analysis to the LLM.\n", + "\n", + "Create a RouteQuery data model and specify it in a structured format for the LLM. The decision for routing should be embedded in the prompt. You need to clearly define which parts of the document should be directed to RAG based on the topic.\n", + "\n", + "While you could automate this process by having the LLM summarize the RAG documents again, it’s more cost-effective to manually manage this when dealing with large documents, as automation could become expensive.\n", + "\n" + ] + }, { "cell_type": "code", "execution_count": 4, @@ -219,6 +238,18 @@ "print(question_router.invoke({\"question\": \"What are the types of agent memory?\"}))" ] }, + { + "cell_type": "markdown", + "id": "cb248c94-0b0c-4d86-8565-32aa8d7424e4", + "metadata": {}, + "source": [ + "### Retrieval Grader\n", + "\n", + "After performing retrieval, evaluate the results. Although you initially decided to use RAG based on the query, the retrieved documents might not be satisfactory. Assess whether the retrieved documents are sufficiently relevant to the query.\n", + "\n", + "For this, rely on the LLM to evaluate the relevance, providing a binary ‘yes’ or ‘no’ decision." + ] + }, { "cell_type": "code", "execution_count": 5, @@ -309,6 +340,17 @@ "print(generation)" ] }, + { + "cell_type": "markdown", + "id": "cb0ab54a-4a4f-45fa-b1c5-cea1bf4c59d5", + "metadata": {}, + "source": [ + "### Hallucination Grader\n", + "\n", + "Verify if the LLM produced any hallucinations by comparing its output to the retrieved facts. \n", + "Provide the LLM’s evaluation in a binary ‘yes’ or ‘no’ format.\n" + ] + }, { "cell_type": "code", "execution_count": 7, @@ -357,6 +399,16 @@ "hallucination_grader.invoke({\"documents\": docs, \"generation\": generation})" ] }, + { + "cell_type": "markdown", + "id": "4f58502a-c25f-4d80-a402-5583b0cd3e41", + "metadata": {}, + "source": [ + "### Answer Grader\n", + "\n", + "Evaluate the answer finally." + ] + }, { "cell_type": "code", "execution_count": 8, @@ -405,6 +457,18 @@ "answer_grader.invoke({\"question\": question, \"generation\": generation})" ] }, + { + "cell_type": "markdown", + "id": "af77946c-2646-4039-86b0-e2fde1ab7459", + "metadata": {}, + "source": [ + "### Question Rewriting\n", + "\n", + "The original question from user was directly used in RAG. \n", + "However, the user’s question might not be in a form suitable for RAG. \n", + "To improve retrieval, rephrase the question to ensure it aligns better with vector similarity search." + ] + }, { "cell_type": "code", "execution_count": 9, @@ -450,7 +514,9 @@ "id": "d07c0b31-b919-4498-869f-9673125c2473", "metadata": {}, "source": [ - "## Web Search Tool" + "## Web Search Tool\n", + "\n", + "Use Tavily Search tool to get information from the web." ] }, {