Reference · How-to · ~12 min

How to start RAG with LangChain

Last updated

Wire documents → embeddings → retriever → LLM with LangChain's composable chain pattern.

Wire documents → embeddings → retriever → LLM with LangChain's composable chain pattern.

#Steps

1. **Install** — `pip install langchain langchain-openai langchain-community`

2. **Load docs** — `DirectoryLoader` or `TextLoader` for markdown/PDF text

3. **Split** — `RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=50)`

4. **Embed + store** — `OpenAIEmbeddings` + `Chroma.from_documents(docs, embeddings)`

5. **Build retriever** — `vectorstore.as_retriever(search_kwargs={"k": 4})`

6. **Chain** — retrieval QA chain: retrieve chunks → stuff into prompt → LLM answer

7. **Test refusal** — ask something not in corpus; prompt should say "I don't know"

#Sketch

from langchain_openai import ChatOpenAI, OpenAIEmbeddings
from langchain_community.vectorstores import Chroma
from langchain.chains import RetrievalQA
qa = RetrievalQA.from_chain_type(
    llm=ChatOpenAI(model="gpt-4o-mini"),
    retriever=vectorstore.as_retriever(),
)
print(qa.invoke({"query": "What is our refund window?"}))

#Watch out

LangChain versions change quickly — pin packages and log which chunks were retrieved for debugging.

**Try the lessons:** `build-mini-rag` (Lane D) · `rag-pipeline-steps` (Lane C)