FolderStructure.dev

LangChain RAG Application Project Structure

RAG with vector store and retrieval chains. Build context-aware LLM apps with your own documents.

#langchain #python #llm #ai #rag #vector-store #embeddings
PNGPDF

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

  1. python -m venv venv && source venv/bin/activate
  2. pip install -r requirements.txt
  3. cp .env.example .env (add API keys)
  4. Add documents to data/documents/
  5. python scripts/ingest.py (build vector store)
  6. 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