From 211a74941a5ba8afbc2a4c099c1a95d981813a76 Mon Sep 17 00:00:00 2001 From: Lance Martin <122662504+rlancemartin@users.noreply.github.com> Date: Thu, 5 Oct 2023 08:07:38 -0700 Subject: [PATCH] Update QA doc w/ Runnables (#11401) --- .../docs_skeleton/static/img/multi_vector.png | Bin 0 -> 105174 bytes .../question_answering.ipynb | 421 +++++++----------- 2 files changed, 163 insertions(+), 258 deletions(-) create mode 100644 docs/docs_skeleton/static/img/multi_vector.png diff --git a/docs/docs_skeleton/static/img/multi_vector.png b/docs/docs_skeleton/static/img/multi_vector.png new file mode 100644 index 0000000000000000000000000000000000000000..d7563c68f0a36d29f4c8cbbe6d53294329882b0e GIT binary patch literal 105174 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%0ATO_^aC969G6s(d8DD`WU8|V1&_a_K(V4T6 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

-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

jyt}e2gI8lGAmukU{v6$nl2a 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 literal 0 HcmV?d00001 diff --git a/docs/extras/use_cases/question_answering/question_answering.ipynb b/docs/extras/use_cases/question_answering/question_answering.ipynb index 73513ca60a4..d7c9d1b1a5f 100644 --- a/docs/extras/use_cases/question_answering/question_answering.ipynb +++ b/docs/extras/use_cases/question_answering/question_answering.ipynb @@ -10,9 +10,13 @@ "[![Open In Collab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/langchain-ai/langchain/blob/master/docs/extras/use_cases/question_answering/qa.ipynb)\n", "\n", "## Use case\n", - "Suppose you have some text documents (PDF, blog, Notion pages, etc.) and want to ask questions related to the contents of those documents. LLMs, given their proficiency in understanding text, are a great tool for this.\n", + "Suppose you have some text documents (PDF, blog, Notion pages, etc.) and want to ask questions related to the contents of those documents. \n", "\n", - "In this walkthrough we'll go over how to build a question-answering over documents application using LLMs. Two very related use cases which we cover elsewhere are:\n", + "LLMs, given their proficiency in understanding text, are a great tool for this.\n", + "\n", + "In this walkthrough we'll go over how to build a question-answering over documents application using LLMs. \n", + "\n", + "Two very related use cases which we cover elsewhere are:\n", "- [QA over structured data](/docs/use_cases/qa_structured/sql) (e.g., SQL)\n", "- [QA over code](/docs/use_cases/code_understanding) (e.g., Python)\n", "\n", @@ -20,19 +24,21 @@ "\n", "## Overview\n", "The pipeline for converting raw unstructured data into a QA chain looks like this:\n", - "1. `Loading`: First we need to load our data. Unstructured data can be loaded from many sources. Use the [LangChain integration hub](https://integrations.langchain.com/) to browse the full set of loaders.\n", - "Each loader returns data as a LangChain [`Document`](/docs/components/schema/document).\n", + "1. `Loading`: First we need to load our data. Use the [LangChain integration hub](https://integrations.langchain.com/) to browse the full set of loaders. \n", "2. `Splitting`: [Text splitters](/docs/modules/data_connection/document_transformers/) break `Documents` into splits of specified size\n", "3. `Storage`: Storage (e.g., often a [vectorstore](/docs/modules/data_connection/vectorstores/)) will house [and often embed](https://www.pinecone.io/learn/vector-embeddings/) the splits\n", "4. `Retrieval`: The app retrieves splits from storage (e.g., often [with similar embeddings](https://www.pinecone.io/learn/k-nearest-neighbor/) to the input question)\n", "5. `Generation`: An [LLM](/docs/modules/model_io/models/llms/) produces an answer using a prompt that includes the question and the retrieved data\n", - "6. `Conversation` (Extension): Hold a multi-turn conversation by adding [Memory](/docs/modules/memory/) to your QA chain.\n", "\n", "![flow.jpeg](/img/qa_flow.jpeg)\n", "\n", "## Quickstart\n", "\n", - "To give you a sneak preview, the above pipeline can be all be wrapped in a single object: `VectorstoreIndexCreator`. Suppose we want a QA app over this [blog post](https://lilianweng.github.io/posts/2023-06-23-agent/). We can create this in a few lines of code. First set environment variables and install packages:" + "Suppose we want a QA app over this [blog post](https://lilianweng.github.io/posts/2023-06-23-agent/). \n", + "\n", + "We can create this in a few lines of code. \n", + "\n", + "First set environment variables and install packages:" ] }, { @@ -42,7 +48,7 @@ "metadata": {}, "outputs": [], "source": [ - "pip install openai chromadb\n", + "pip install langchain openai chromadb langchainhub\n", "\n", "# Set env var OPENAI_API_KEY or load from a .env file\n", "# import dotenv\n", @@ -53,44 +59,118 @@ { "cell_type": "code", "execution_count": 1, - "id": "046cefc0", + "id": "820244ae-74b4-4593-b392-822979dd91b8", "metadata": {}, "outputs": [], "source": [ - "from langchain.document_loaders import WebBaseLoader\n", - "from langchain.indexes import VectorstoreIndexCreator\n", + "# Load documents\n", "\n", - "loader = WebBaseLoader(\"https://lilianweng.github.io/posts/2023-06-23-agent/\")\n", - "index = VectorstoreIndexCreator().from_loaders([loader])" + "from langchain.document_loaders import WebBaseLoader\n", + "loader = WebBaseLoader(\"https://lilianweng.github.io/posts/2023-06-23-agent/\")" ] }, { "cell_type": "code", "execution_count": 3, - "id": "f4bf8740", + "id": "c89a0aa7-1e7e-4557-90e5-a7ea87db00e7", + "metadata": {}, + "outputs": [], + "source": [ + "# Split documents\n", + "\n", + "from langchain.text_splitter import RecursiveCharacterTextSplitter\n", + "text_splitter = RecursiveCharacterTextSplitter(chunk_size = 500, chunk_overlap = 0)\n", + "splits = text_splitter.split_documents(loader.load())" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "000e46f6-dafc-4a43-8417-463d0614fd30", + "metadata": {}, + "outputs": [], + "source": [ + "# Embed and store splits\n", + "\n", + "from langchain.vectorstores import Chroma\n", + "from langchain.embeddings import OpenAIEmbeddings\n", + "vectorstore = Chroma.from_documents(documents=splits,embedding=OpenAIEmbeddings())\n", + "retriever = vectorstore.as_retriever()" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "dacbde0b-7d45-4a2c-931d-81bb094aec94", + "metadata": {}, + "outputs": [], + "source": [ + "# Prompt \n", + "# https://smith.langchain.com/hub/rlm/rag-prompt\n", + "\n", + "from langchain import hub\n", + "rag_prompt = hub.pull(\"rlm/rag-prompt\")" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "79b9fdae-c2bf-4cf6-884f-c19aa07dd975", + "metadata": {}, + "outputs": [], + "source": [ + "# LLM\n", + "\n", + "from langchain.chat_models import ChatOpenAI\n", + "llm = ChatOpenAI(model_name=\"gpt-3.5-turbo\", temperature=0)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "92c0f3ae-6ab2-4d04-9b22-1963b96b9db5", + "metadata": {}, + "outputs": [], + "source": [ + "# RAG chain \n", + "\n", + "from langchain.schema.runnable import RunnablePassthrough\n", + "rag_chain = (\n", + " {\"context\": retriever, \"question\": RunnablePassthrough()} \n", + " | rag_prompt \n", + " | llm \n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "0d3b0f36-7b56-49c0-8e40-a1aa9ebcbf24", "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "' Task decomposition is a technique used to break down complex tasks into smaller and simpler steps. It can be done using LLM with simple prompting, task-specific instructions, or with human inputs. Tree of Thoughts (Yao et al. 2023) is an extension of Chain of Thought (Wei et al. 2022) which explores multiple reasoning possibilities at each step.'" + "AIMessage(content='Task decomposition is the process of breaking down a task into smaller subgoals or steps. It can be done using simple prompting, task-specific instructions, or human inputs.')" ] }, - "execution_count": 3, + "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "index.query(\"What is Task Decomposition?\")" + "rag_chain.invoke(\"What is Task Decomposition?\")" ] }, { "cell_type": "markdown", - "id": "8224aad6", + "id": "639dc31a-7f16-40f6-ba2a-20e7c2ecfe60", "metadata": {}, "source": [ - "Ok, but what's going on under the hood, and how could we customize this for our specific use case? For that, let's take a look at how we can construct this pipeline piece by piece." + "[Here](https://smith.langchain.com/public/2270a675-74de-47ac-b111-b232d8340a64/r) is the LangSmith trace for this chain.\n", + "\n", + "Below we will explain each step in more detail." ] }, { @@ -100,7 +180,9 @@ "source": [ "## Step 1. Load\n", "\n", - "Specify a `DocumentLoader` to load in your unstructured data as `Documents`. A `Document` is a piece of text (the `page_content`) and associated metadata." + "Specify a `DocumentLoader` to load in your unstructured data as `Documents`. \n", + "\n", + "A `Document` is a dict with text (`page_content`) and `metadata`." ] }, { @@ -122,7 +204,7 @@ "metadata": {}, "source": [ "### Go deeper\n", - "- Browse the > 120 data loader integrations [here](https://integrations.langchain.com/).\n", + "- Browse the > 160 data loader integrations [here](https://integrations.langchain.com/).\n", "- See further documentation on loaders [here](/docs/modules/data_connection/document_loaders/).\n", "\n", "## Step 2. Split\n", @@ -150,7 +232,7 @@ "source": [ "### Go deeper\n", "\n", - "- `DocumentSplitters` are just one type of the more generic `DocumentTransformers`, which can all be useful in this preprocessing step.\n", + "- `DocumentSplitters` are just one type of the more generic `DocumentTransformers`.\n", "- See further documentation on transformers [here](/docs/modules/data_connection/document_transformers/).\n", "- `Context-aware splitters` keep the location (\"context\") of each split in the original `Document`:\n", " - [Markdown files](/docs/use_cases/question_answering/how_to/document-context-aware-QA)\n", @@ -160,7 +242,10 @@ "## Step 3. Store\n", "\n", "To be able to look up our document splits, we first need to store them where we can later look them up.\n", - "The most common way to do this is to embed the contents of each document then store the embedding and document in a vector store, with the embedding being used to index the document." + "\n", + "The most common way to do this is to embed the contents of each document split.\n", + "\n", + "We store the embedding and splits in a vectorstore." ] }, { @@ -193,7 +278,9 @@ "\n", "## Step 4. Retrieve\n", "\n", - "Retrieve relevant splits for any question using [similarity search](https://www.pinecone.io/learn/what-is-similarity-search/)." + "Retrieve relevant splits for any question using [similarity search](https://www.pinecone.io/learn/what-is-similarity-search/).\n", + "\n", + "This is simply \"top K\" retrieval where we select documents based on embedding similarity to the query." ] }, { @@ -228,7 +315,9 @@ "\n", "Vectorstores are commonly used for retrieval, but they are not the only option. For example, SVMs (see thread [here](https://twitter.com/karpathy/status/1647025230546886658?s=20)) can also be used.\n", "\n", - "LangChain [has many retrievers](/docs/modules/data_connection/retrievers/) including, but not limited to, vectorstores. All retrievers implement a common method `get_relevant_documents()` (and its asynchronous variant `aget_relevant_documents()`)." + "LangChain [has many retrievers](/docs/modules/data_connection/retrievers/) including, but not limited to, vectorstores. \n", + "\n", + "All retrievers implement a common method `get_relevant_documents()` (and its asynchronous variant `aget_relevant_documents()`)." ] }, { @@ -275,7 +364,6 @@ "outputs": [], "source": [ "import logging\n", - "\n", "from langchain.chat_models import ChatOpenAI\n", "from langchain.retrievers.multi_query import MultiQueryRetriever\n", "\n", @@ -288,6 +376,20 @@ "len(unique_docs)" ] }, + { + "cell_type": "markdown", + "id": "ee8420e6-73a6-411b-a84d-74b096bddad7", + "metadata": {}, + "source": [ + "In addition, a useful concept for improving retrieval is decoupling the documents from the embedded search key.\n", + "\n", + "For example, we can embed a document summary or question that are likely to lead to the document being retrieved.\n", + "\n", + "See details in [here](docs/modules/data_connection/retrievers/multi_vector) on the multi-vector retriever for this purpose.\n", + "\n", + "![mv.png](/img/multi_vector.png)" + ] + }, { "cell_type": "markdown", "id": "415d6824", @@ -295,34 +397,44 @@ "source": [ "## Step 5. Generate\n", "\n", - "Distill the retrieved documents into an answer using an LLM/Chat model (e.g., `gpt-3.5-turbo`) with `RetrievalQA` chain.\n" + "Distill the retrieved documents into an answer using an LLM/Chat model (e.g., `gpt-3.5-turbo`).\n", + "\n", + "We use the [Runnable](https://python.langchain.com/docs/expression_language/interface) protocol to define the chain.\n", + "\n", + "Runnable protocol pipes together components in a transparent way.\n", + "\n", + "We used a prompt for RAG that is checked into the LangChain prompt hub ([here](https://smith.langchain.com/hub/rlm/rag-prompt))." ] }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 11, "id": "99fa1aec", "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "{'query': 'What are the approaches to Task Decomposition?',\n", - " 'result': 'The approaches to task decomposition include:\\n\\n1. Simple prompting: This approach involves using simple prompts or questions to guide the agent in breaking down a task into smaller subgoals. For example, the agent can be prompted with \"Steps for XYZ\" or \"What are the subgoals for achieving XYZ?\" to facilitate task decomposition.\\n\\n2. Task-specific instructions: In this approach, task-specific instructions are provided to the agent to guide the decomposition process. For example, if the task is to write a novel, the agent can be instructed to \"Write a story outline\" as a step in the task decomposition.\\n\\n3. Human inputs: This approach involves incorporating human inputs in the task decomposition process. Humans can provide guidance, feedback, and assistance to the agent in breaking down complex tasks into manageable subgoals.\\n\\nThese approaches aim to enable efficient handling of complex tasks by breaking them down into smaller, more manageable subgoals.'}" + "AIMessage(content='Task decomposition is the process of breaking down a task into smaller subgoals or steps. It can be done using simple prompting, task-specific instructions, or human inputs.')" ] }, - "execution_count": 9, + "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "from langchain.chains import RetrievalQA\n", "from langchain.chat_models import ChatOpenAI\n", - "\n", "llm = ChatOpenAI(model_name=\"gpt-3.5-turbo\", temperature=0)\n", - "qa_chain = RetrievalQA.from_chain_type(llm,retriever=vectorstore.as_retriever())\n", - "qa_chain({\"query\": question})" + "\n", + "from langchain.schema.runnable import RunnablePassthrough\n", + "rag_chain = (\n", + " {\"context\": retriever, \"question\": RunnablePassthrough()} \n", + " | rag_prompt \n", + " | llm \n", + ")\n", + "\n", + "rag_chain.invoke(\"What is Task Decomposition?\")" ] }, { @@ -330,12 +442,10 @@ "id": "f7d52c84", "metadata": {}, "source": [ - "Note, you can pass in an `LLM` or a `ChatModel` (like we did here) to the `RetrievalQA` chain.\n", - "\n", "### Go deeper\n", "\n", "#### Choosing LLMs\n", - "- Browse the > 55 LLM and chat model integrations [here](https://integrations.langchain.com/).\n", + "- Browse the > 90 LLM and chat model integrations [here](https://integrations.langchain.com/).\n", "- See further documentation on LLMs and chat models [here](/docs/modules/model_io/models/).\n", "- See a guide on local LLMS [here](/docs/modules/use_cases/question_answering/how_to/local_retrieval_qa)." ] @@ -347,28 +457,29 @@ "source": [ "#### Customizing the prompt\n", "\n", - "The prompt in `RetrievalQA` chain can be easily customized." + "As shown above, we can load prompts (e.g., [this RAG prompt](https://smith.langchain.com/hub/rlm/rag-prompt)) from the prompt hub.\n", + "\n", + "The prompt can also be easily customized, as shown below." ] }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 12, "id": "e4fee704", "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "'The approaches to Task Decomposition are (1) using simple prompting by LLM, (2) using task-specific instructions, and (3) incorporating human inputs. Thanks for asking!'" + "AIMessage(content='Task decomposition is the process of breaking down a complicated task into smaller, more manageable subtasks or steps. It can be done using prompts, task-specific instructions, or human inputs. Thanks for asking!')" ] }, - "execution_count": 10, + "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "from langchain.chains import RetrievalQA\n", "from langchain.prompts import PromptTemplate\n", "\n", "template = \"\"\"Use the following pieces of context to answer the question at the end. \n", @@ -378,229 +489,23 @@ "{context}\n", "Question: {question}\n", "Helpful Answer:\"\"\"\n", - "QA_CHAIN_PROMPT = PromptTemplate.from_template(template)\n", + "rag_prompt_custom = PromptTemplate.from_template(template)\n", "\n", - "llm = ChatOpenAI(model_name=\"gpt-3.5-turbo\", temperature=0)\n", - "qa_chain = RetrievalQA.from_chain_type(\n", - " llm,\n", - " retriever=vectorstore.as_retriever(),\n", - " chain_type_kwargs={\"prompt\": QA_CHAIN_PROMPT}\n", + "rag_chain = (\n", + " {\"context\": retriever, \"question\": RunnablePassthrough()} \n", + " | rag_prompt_custom \n", + " | llm \n", ")\n", - "result = qa_chain({\"query\": question})\n", - "result[\"result\"]" + "\n", + "rag_chain.invoke(\"What is Task Decomposition?\")" ] }, { "cell_type": "markdown", - "id": "c825e9bf-6a56-46e4-8bbb-05441f76cb96", + "id": "5f5b6297-715a-444e-b3ef-a6d27382b435", "metadata": {}, "source": [ - "We can also store and fetch prompts from the LangChain prompt hub.\n", - "\n", - "This will work with your [LangSmith API key](https://docs.smith.langchain.com/).\n", - "\n", - "For example, see [here](https://smith.langchain.com/hub/rlm/rag-prompt) is a common prompt for RAG.\n", - "\n", - "We can load this." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "a896060f-ebc4-4236-a4ad-32960601c6e8", - "metadata": {}, - "outputs": [], - "source": [ - "pip install langchainhub" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "aef8e734-ba54-48ae-b959-1898618f2d90", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'The approaches to task decomposition include using LLM with simple prompting, task-specific instructions, and human inputs.'" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# RAG prompt\n", - "from langchain import hub\n", - "QA_CHAIN_PROMPT_HUB = hub.pull(\"rlm/rag-prompt\")\n", - "\n", - "qa_chain = RetrievalQA.from_chain_type(\n", - " llm,\n", - " retriever=vectorstore.as_retriever(),\n", - " chain_type_kwargs={\"prompt\": QA_CHAIN_PROMPT_HUB}\n", - ")\n", - "result = qa_chain({\"query\": question})\n", - "result[\"result\"]" - ] - }, - { - "cell_type": "markdown", - "id": "ff40e8db", - "metadata": { - "jp-MarkdownHeadingCollapsed": true - }, - "source": [ - "#### Return source documents\n", - "\n", - "The full set of retrieved documents used for answer distillation can be returned using `return_source_documents=True`." - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "id": "60004293", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "4\n" - ] - }, - { - "data": { - "text/plain": [ - "Document(page_content='Task decomposition can be done (1) by LLM with simple prompting like \"Steps for XYZ.\\\\n1.\", \"What are the subgoals for achieving XYZ?\", (2) by using task-specific instructions; e.g. \"Write a story outline.\" for writing a novel, or (3) with human inputs.', metadata={'description': 'Building agents with LLM (large language model) as its core controller is a cool concept. Several proof-of-concepts demos, such as AutoGPT, GPT-Engineer and BabyAGI, serve as inspiring examples. The potentiality of LLM extends beyond generating well-written copies, stories, essays and programs; it can be framed as a powerful general problem solver.\\nAgent System Overview In a LLM-powered autonomous agent system, LLM functions as the agent’s brain, complemented by several key components:', 'language': 'en', 'source': 'https://lilianweng.github.io/posts/2023-06-23-agent/', 'title': \"LLM Powered Autonomous Agents | Lil'Log\"})" - ] - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "from langchain.chains import RetrievalQA\n", - "\n", - "qa_chain = RetrievalQA.from_chain_type(llm,retriever=vectorstore.as_retriever(),\n", - " return_source_documents=True)\n", - "result = qa_chain({\"query\": question})\n", - "print(len(result['source_documents']))\n", - "result['source_documents'][0]" - ] - }, - { - "cell_type": "markdown", - "id": "1b600236", - "metadata": {}, - "source": [ - "#### Return citations\n", - "\n", - "Answer citations can be returned using `RetrievalQAWithSourcesChain`." - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "id": "948f6d19", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'question': 'What are the approaches to Task Decomposition?',\n", - " 'answer': 'The approaches to Task Decomposition include:\\n1. Using LLM with simple prompting, such as providing steps or subgoals for achieving a task.\\n2. Using task-specific instructions, such as providing a specific instruction like \"Write a story outline\" for writing a novel.\\n3. Using human inputs to decompose the task.\\nAnother approach is the Tree of Thoughts, which extends the Chain of Thought (CoT) technique by exploring multiple reasoning possibilities at each step and generating multiple thoughts per step, creating a tree structure. The search process can be BFS or DFS, and each state can be evaluated by a classifier or majority vote.\\nSources: https://lilianweng.github.io/posts/2023-06-23-agent/',\n", - " 'sources': ''}" - ] - }, - "execution_count": 16, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "from langchain.chains import RetrievalQAWithSourcesChain\n", - "\n", - "qa_chain = RetrievalQAWithSourcesChain.from_chain_type(llm,retriever=vectorstore.as_retriever())\n", - "\n", - "result = qa_chain({\"question\": question})\n", - "result" - ] - }, - { - "cell_type": "markdown", - "id": "73d0b138", - "metadata": {}, - "source": [ - "#### Customizing retrieved document processing\n", - "\n", - "Retrieved documents can be fed to an LLM for answer distillation in a few different ways.\n", - "\n", - "`stuff`, `refine`, `map-reduce`, and `map-rerank` chains for passing documents to an LLM prompt are well summarized [here](/docs/modules/chains/document/).\n", - " \n", - "`stuff` is commonly used because it simply \"stuffs\" all retrieved documents into the prompt.\n", - "\n", - "The [load_qa_chain](/docs/use_cases/question_answering/how_to/question_answering.html) is an easy way to pass documents to an LLM using these various approaches (e.g., see `chain_type`)." - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "id": "29aa139f", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'output_text': 'The approaches to task decomposition mentioned in the provided context are:\\n\\n1. Chain of thought (CoT): This approach involves instructing the language model to \"think step by step\" and decompose complex tasks into smaller and simpler steps. It enhances model performance on complex tasks by utilizing more test-time computation.\\n\\n2. Tree of Thoughts: This approach extends CoT by exploring multiple reasoning possibilities at each step. It decomposes the problem into multiple thought steps and generates multiple thoughts per step, creating a tree structure. The search process can be BFS or DFS, and each state is evaluated by a classifier or majority vote.\\n\\n3. LLM with simple prompting: This approach involves using a language model with simple prompts like \"Steps for XYZ\" or \"What are the subgoals for achieving XYZ?\" to perform task decomposition.\\n\\n4. Task-specific instructions: This approach involves providing task-specific instructions to guide the language model in decomposing the task. For example, providing the instruction \"Write a story outline\" for the task of writing a novel.\\n\\n5. Human inputs: Task decomposition can also be done with human inputs, where humans provide guidance and input to break down the task into smaller subtasks.'}" - ] - }, - "execution_count": 17, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "from langchain.chains.question_answering import load_qa_chain\n", - "\n", - "chain = load_qa_chain(llm, chain_type=\"stuff\")\n", - "chain({\"input_documents\": unique_docs, \"question\": question},return_only_outputs=True)" - ] - }, - { - "cell_type": "markdown", - "id": "a8cb8cd1", - "metadata": {}, - "source": [ - "We can also pass the `chain_type` to `RetrievalQA`." - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "id": "f68574bd", - "metadata": {}, - "outputs": [], - "source": [ - "qa_chain = RetrievalQA.from_chain_type(llm,retriever=vectorstore.as_retriever(),\n", - " chain_type=\"stuff\")\n", - "result = qa_chain({\"query\": question})" - ] - }, - { - "cell_type": "markdown", - "id": "b33aeb5f", - "metadata": {}, - "source": [ - "In summary, the user can choose the desired level of abstraction for QA:\n", - "\n", - "![summary_chains.png](/img/summary_chains.png)\n", - "\n", - "## Step 6. Chat\n", - "\n", - "See our [use-case on chat](/docs/use_cases/chatbots) for detail on this!" + "We can use [LangSmith](https://smith.langchain.com/public/129cac54-44d5-453a-9807-3bd4835e5f96/r) to see the trace." ] } ], @@ -620,7 +525,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.1" + "version": "3.9.16" } }, "nbformat": 4,