Prev Next

AI / LangGraph LangChain Interview questions II

How do you build RAG pipelines with LangChain?

A RAG (Retrieval-Augmented Generation) pipeline enriches LLM responses with external knowledge by retrieving relevant documents at query time and injecting them into the prompt. A complete LangChain RAG pipeline has five stages:

  1. Load — ingest source documents with a DocumentLoader
  2. Split — chunk documents with a TextSplitter for efficient retrieval
  3. Embed & Store — embed chunks and store in a vector store
  4. Retrieve — at query time, fetch the most relevant chunks
  5. Generate — inject retrieved context into the prompt and generate an answer
from langchain_community.document_loaders import WebBaseLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain_community.vectorstores import Chroma
from langchain_openai import OpenAIEmbeddings, ChatOpenAI
from langchain import hub
from langchain_core.output_parsers import StrOutputParser
from langchain_core.runnables import RunnablePassthrough

# 1. Load
loader = WebBaseLoader("https://python.langchain.com/docs/get_started/introduction")
docs = loader.load()

# 2. Split
splitter = RecursiveCharacterTextSplitter(chunk_size=1000, chunk_overlap=200)
chunks = splitter.split_documents(docs)

# 3. Embed & Store
vectorstore = Chroma.from_documents(chunks, OpenAIEmbeddings())

# 4 & 5. Retrieve + Generate
retriever = vectorstore.as_retriever()
rag_prompt = hub.pull("rlm/rag-prompt")

rag_chain = (
    {"context": retriever | (lambda docs: "\n\n".join(d.page_content for d in docs)),
     "question": RunnablePassthrough()}
    | rag_prompt
    | ChatOpenAI()
    | StrOutputParser()
)

answer = rag_chain.invoke("What is LangChain?")

What is the purpose of chunk_overlap in RecursiveCharacterTextSplitter?
In a RAG LCEL chain, why is RunnablePassthrough used for the 'question' key?

More Related questions...

Show more question and Answers...


Comments & Discussions