LangChain RAG Application Project Structure
RAG with vector store and retrieval chains. Build context-aware LLM apps with your own documents.
Project Directory
myproject/
main.py
Application entry point
app/
Application code
__init__.py
config.py
Settings, model configs
chains/
LangChain chains
__init__.py
qa_chain.py
Question-answering chain
conversational.py
With chat history
retrieval/
RAG components
__init__.py
embeddings.py
Embedding model setup
vectorstore.py
Vector DB client
retriever.py
Retriever configuration
loaders/
Document ingestion
__init__.py
pdf_loader.py
web_loader.py
text_splitter.py
Chunking strategy
prompts/
Prompt templates
__init__.py
qa_prompts.py
system_prompts.py
data/
Documents to ingest
documents/
Source PDFs, docs
vectorstore/
Local vector DB
scripts/
Utility scripts
ingest.py
Document ingestion pipeline
query.py
CLI for testing queries
requirements.txt
.env.example
.gitignore
README.md
Why This Structure?
RAG (Retrieval-Augmented Generation) grounds LLM responses in your documents. This structure separates document loading, embedding, retrieval, and chain logic for maintainability. The data/ folder keeps source documents separate from code.
Key Directories
- app/retrieval/-Embeddings, vector store, and retriever setup
- app/loaders/-Document loaders and text splitting logic
- app/chains/-QA and conversational retrieval chains
- data/documents/-Source files (PDFs, text, web exports)
- scripts/ingest.py-One-time document ingestion pipeline
Getting Started
python -m venv venv && source venv/bin/activatepip install -r requirements.txtcp .env.example .env(add API keys)- Add documents to
data/documents/ python scripts/ingest.py(build vector store)python main.py(run queries)
RAG Pipeline Flow
- 1. Load-PDF/web → raw text via loaders
- 2. Split-Text → chunks via text_splitter
- 3. Embed-Chunks → vectors via embeddings
- 4. Store-Vectors → vector store (Chroma, FAISS)
- 5. Retrieve-Query → relevant chunks
- 6. Generate-Chunks + query → LLM response
When To Use This
- Building document Q&A systems
- Knowledge base chatbots
- Semantic search over private docs
- Customer support with internal docs
- Research assistants
Trade-offs
- Ingestion time-Large doc sets take time to embed initially
- Vector store choice-Local (Chroma) vs hosted (Pinecone) tradeoffs
- Chunk tuning-Chunk size/overlap affects retrieval quality