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.