text: Skip to main contentğŸ¦œï¸�ğŸ”— LangChainDocsUse casesIntegrationsAPILangSmithJS/TS DocsCTRLKUse casesQA and Chat over DocumentsContext aware text splitting and QA / ChatRunning LLMs locallyQuestion answering over a group chat messages using Activeloop's DeepLakeAnalyzing structured dataExtractionInteracting with APIsChatbotsSummarizationCode UnderstandingAgent simulationsAgentsAutonomous (long-running) agentsMulti-modalUse casesQA and Chat over DocumentsOn this pageQA and Chat over DocumentsChat and Question-Answering (QA) over data are popular LLM use-cases.data can include many things, including:Unstructured data (e.g., PDFs)Structured data (e.g., SQL)Code (e.g., Python)LangChain supports Chat and QA on various data types:See here and here for Code See here for Structured dataBelow we will review Chat and QA on Unstructured data. Unstructured data can be loaded from many sources.Use the LangChain integration hub to browse the full set of loaders.Each loader returns data as a LangChain Document.Documents are turned into a Chat or QA app following the general steps below:Splitting: Text splitters break Documents into splits of specified size Storage: Storage (e.g., often a vectorstore) will house and often embed the splitsRetrieval: The app retrieves splits from storage (e.g., often with similar embeddings to the input question) Output: An LLM produces an answer using a prompt that includes the question and the retrieved splits Quickstartâ€‹The above pipeline can be wrapped with a VectorstoreIndexCreator.In particular: Specify a Document loaderThe splitting, storage, retrieval, and output generation stages are wrappedLet's load this blog post on agents as an example Document.We have a QA app in a few lines of code.Set environment variables and get packages:pip install openaipip install chromadbexport