Last Updated: July 15, 2025
RAG Architecture Pipeline
1. IngestLoad documents — PDF, HTML, Markdown, APIs
2. ChunkSplit into retrievable units — fixed-size, semantic, recursive
3. EmbedConvert chunks to vectors — OpenAI, Cohere, sentence-transformers
4. StoreIndex in vector DB — Pinecone, Weaviate, Chroma, Qdrant
5. RetrieveQuery → embed → similarity search (cosine, dot product, Euclidean)
6. AugmentInject top-k chunks + user query into LLM prompt
Chunking Strategies
| Strategy | How It Works | Best For |
|---|---|---|
| Fixed-Size | Split by N tokens with overlap | General purpose, fast |
| Recursive | Split by separators: \n\n → \n → . → space | Markdown/docs |
| Semantic | Split at natural topic boundaries (embeddings) | Long-form content |
| Sentence Window | Retrieve sentence, expand context window | Precision retrieval |
Retrieval Techniques
| Technique | Description |
|---|---|
| Dense Retrieval | Embed query and chunks — semantic similarity |
| Sparse Retrieval | BM25/TF-IDF keyword matching — exact matches |
| Hybrid Search | Combine dense + sparse → weighted fusion (RRF) |
| Multi-Query | Generate variant queries → retrieve → deduplicate union |
| Parent Document | Retrieve small chunks, return full parent document |
Reranking
| Method | Description |
|---|---|
| Cross-Encoder | Score (query, chunk) pairs — Cohere Rerank, BGE-reranker |
| LLM-as-Reranker | GPT-4 evaluates relevance of each chunk |
| Reciprocal Rank Fusion | Merge multiple ranked lists without scores |
Vector Databases Compared
| DB | Self-Hosted | Filtering | Best For |
|---|---|---|---|
| Pinecone | No (cloud) | Metadata + namespaces | Production, scale |
| Weaviate | Yes | GraphQL + hybrid search | Multimodal, hybrid |
| Chroma | Yes | Metadata filtering | Prototyping, local dev |
| Qdrant | Yes | Payload filtering | Performance, Rust-based |
| Milvus | Yes | Scalar + vector | Billion-scale, GPU indexing |
Pro Tip: Chunk size is the most impactful RAG decision — too small loses context, too large dilutes relevance. Start at 512 tokens with 64-token overlap and tune from there.