Thesis: The RAG framework landscape is crowded with over-engineered configuration surfaces. Quivr-core takes the opposite approach: opinionated defaults, minimal API, drop-in integration. It’s the ‘batteries included’ RAG for Python developers who want answers, not knobs.
Quivr-core: Drop-In RAG for Python — 5 Lines, Any LLM, Any File
Every Python project eventually needs a “chat with your docs” feature. The typical path: pick a vector store, choose an embedding model, design a chunking strategy, wire up a retrieval pipeline, handle re-ranking, manage LLM provider APIs, build a query interface… Three weeks later you have a fragile RAG pipeline that breaks when you upgrade a dependency.
Quivr-core says: stop.
“Stop Building RAG Pipelines From Scratch—Just Drop This In Instead” [Q1]
Quivr-core is the core RAG brain from Quivr.com [S2] — a standalone Python package built from the 39.4k-star Quivr project, designed for drop-in Q&A over your files [S1][S2]. The pitch: opinionated, fast, 5 lines of code.
“python pip install quivr-core “
“`python from quivr_core import Brain
brain = Brain.from_files([“docs/”, “specs/”, “notes.md”]) answer = brain.ask(“What’s our API rate limit?”) print(answer) “`
That’s it. One Brain class. Two methods. Instant Q&A. [C6]
The Opinionated Difference
Most RAG frameworks (LangChain, LlamaIndex, Haystack) are configuration engines — they expose every knob so you can build anything. The result: a configuration surface “the size of a small novel” [Q2].
Quivr-core makes the decisions for you:
| Decision | Quivr-core Choice | |———-|——————-| | Chunking | Opinionated defaults | | Embeddings | Pre-configured per provider | | Vector store | Abstracted (PGVector, Faiss, etc.) | | Retrieval | Hybrid search built-in | | Re-ranking | Included | | LLM routing | Multi-provider out of the box |
“The biggest selling point here is the opinionated approach. The README is explicit about it: they’ve made decisions so you don’t have to. That’s refreshing in a space where every RAG framework tries to be everything to everyone and ends up with a configuration surface the size of a small novel.” [Q2]
What It Actually Does
The API Surface (Intentionally Tiny)
“`python from quivr_core import Brain
Create a brain from file paths (directory or files)
brain = Brain.from_files([ “path/to/pdfs”, “path/to/markdown”, “specs.txt”, “README.md” ])
Ask questions — get cited answers
answer = brain.ask(“What are the authentication requirements?”) print(answer.content) # The answer print(answer.citations) # Source references “`
Supported LLM Providers [C3][Q4]
| Provider | Models | |———-|——–| | OpenAI | GPT-4, GPT-4o, GPT-3.5 | | Anthropic | Claude 3.5 Sonnet, Opus, Haiku | | Mistral | Mistral Large, Medium, Small | | Ollama (local) | Llama 3, Gemma, Phi, any GGUF | | Groq | Llama 3, Mixtral (fast inference) | | Custom | Pluggable provider interface |
“Quivr works with any LLM, you can use it with OpenAI, Anthropic, Mistral, Gemma, etc.” [Q4]
Supported File Types [C4][Q5]
- PDF — Full text extraction
- Markdown — Structure-aware parsing
- TXT — Plain text
- Custom parsers — Plug in your own
“Quivr works with any file, you can use it with PDF, TXT, Markdown, etc and even add your own parsers.” [Q5]
Under the Hood
Quivr-core isn’t magic — it’s curated composition:
- Embeddings: Provider-optimized defaults
- Vector store: PGVector (PostgreSQL) or Faiss (local)
- Retrieval: Hybrid (semantic + keyword) with re-ranking
- Parsing: Modular, extensible per file type
- Caching: Built-in for repeated queries
The core/ directory in the repo confirms modular architecture — the RAG engine is cleanly separated from the Quivr.com web app [C9].
The RAG Complexity Problem
The modern RAG stack has become a dependency nightmare. A typical production setup requires:
- Vector database: Pinecone, Weaviate, Qdrant, PGVector, Faiss, Milvus…
- Embedding model: text-embedding-3-large, nomic-embed-text, bge-large, instructor-xl…
- Chunking strategy: Recursive, semantic, markdown-aware, code-aware, fixed-size…
- Retrieval: Dense, sparse (BM25), hybrid, multi-vector, ColBERT, SPLADE…
- Re-ranking: Cross-encoder, Cohere Rerank, Jina Reranker, bge-reranker…
- LLM provider: OpenAI, Anthropic, Mistral, Cohere, local (Ollama, vLLM, TGI)…
- Prompt engineering: System prompts, few-shot, chain-of-thought, RAG-Fusion…
- Evaluation: RAGAS, TruLens, LangSmith, custom metrics…
- Observability: Tracing, logging, cost tracking, latency monitoring…
Each choice compounds. Change your embedding model? Re-index everything. Switch vector stores? Rewrite the retrieval layer. Add a new file type? Build a custom parser. The configuration surface explodes.
Quivr-core collapses this entire stack into a single Brain class with sensible defaults. You get a working RAG system in 5 lines. You can customize later — but you don’t have to customize first.
Why This Matters
For Individual Developers
“`python
Before: 500+ lines of LangChain boilerplate
After: 5 lines
brain = Brain.from_files([“my_docs/”]) brain.ask(“summarize the key decisions”) “`
For Teams
- Zero configuration debates — Opinionated defaults = no bike-shedding
- Provider flexibility — Swap OpenAI to Anthropic to Ollama in one line
- Local-first option — Run entirely on-premise with Ollama + Faiss
- Apache 2.0 — Commercial-friendly license [C8][S3]
For Products
Embed Q&A into your SaaS without building a RAG team. Quivr-core is the engine Quivr.com runs on — battle-tested at scale [C1].
Real-World Usage Patterns
Pattern 1: Internal Knowledge Base
“`python
Your company’s Notion/Confluence export to local Q&A
brain = Brain.from_files([“company_docs/”]) brain.ask(“What’s the expense policy for international travel?”) brain.ask(“Who owns the payments service?”) “`
Pattern 2: Customer-Facing Documentation Chat
“`python
Embed in your docs site — users ask, get cited answers
brain = Brain.from_files([“public_docs/”, “api_specs/”]) answer = brain.ask(user_question) return {“answer”: answer.content, “sources”: answer.citations} “`
Pattern 3: Codebase Assistant
“`python
Point at your source code — ask architectural questions
brain = Brain.from_files([“src/”, “tests/”, “README.md”]) brain.ask(“How does the authentication middleware work?”) brain.ask(“Where are database migrations stored?”) “`
Pattern 4: Local-First / Air-Gapped
“`python
Zero external calls — everything runs locally
brain = Brain.from_files( [“classified_docs/”], llm_model=”ollama/llama3″, embedding_model=”nomic-embed-text”, vector_store=”faiss” ) brain.ask(“Summarize the threat model”) “`
Migration from LangChain/LlamaIndex
If you’ve already invested in a RAG pipeline, Quivr-core can replace the retrieval and generation layer while keeping your existing document processing:
“`python
Keep your chunking/embedding pipeline
Replace just the query-time logic:
from quivr_core import Brain
brain = Brain.from_files( [“your_processed_chunks/”], llm_model=”gpt-4o”, vector_store=”pgvector”, # Connect to your existing PGVector # Quivr-core handles retrieval, re-ranking, generation ) “`
This incremental adoption path lowers switching risk.
Performance Notes
- Cold start: ~2-3 seconds (model loading, index building)
- Warm queries: ~200-500ms (cached embeddings, hot index)
- Local Ollama: ~1-3s depending on model size (7B vs 70B)
- Index persistence: Faiss/PGVector — survives restarts
- Concurrent queries: Thread-safe Brain instances
The Trade-offs
| You Gain | You Lose | |———-|———-| | Speed to first answer | Granular control over chunking, retrieval, prompting | | Maintained best practices | Custom architectures (multi-hop, agentic, graph RAG) | | Multi-LLM without code changes | Cutting-edge experimental features | | Production-hardened core | Visibility into every pipeline stage | | Local-first privacy | Cloud-only enterprise features | | Apache 2.0 commercial license | Managed service / hosting |
This is not a framework for RAG researchers. It’s a tool for product builders who need reliable document Q&A yesterday.
Quick Comparison
| Aspect | LangChain/LlamaIndex | Quivr-core | |——–|———————|————| | Lines to first answer | 50-200 | 5 | | Configuration surface | Massive | Minimal | | LLM providers | All (manual config) | Pre-wired | | Local models | Complex setup | Ollama native | | File parsers | Build your own | PDF/MD/TXT built-in | | License | MIT/Apache | Apache 2.0 | | Stars | 80k+/30k+ | 39.4k | | Maturity | High | Early (0.0.26) |
Conclusion: Focus on Your Product
Quivr-core fills a real gap: the space between “I need RAG” and “I have time to engineer a RAG pipeline.”
If you’re building a product feature — chat with docs, knowledge base Q&A, spec search — and you want it working this afternoon, Quivr-core is the strongest candidate in the Python ecosystem right now.
If you’re researching novel retrieval architectures or need fine-grained control over every retrieval stage, stick with LangChain or LlamaIndex.
“We created a RAG that is opinionated, fast and efficient so you can focus on your product” [Q3]
That’s the whole thesis. Focus on your product. Let Quivr-core handle the RAG.
—
Links
- GitHub: https://github.com/The-Vibe-Company/Quivr (core/ directory)
- PyPI: https://pypi.org/project/quivr-core/ (v0.0.26) [S3]
- Docs: https://core.quivr.com
- Threads announcement: https://www.threads.com/@githubprojects/post/DcvIPizm6E1/ [S4]
Sources
- [S1] Quivr-core: an opinionated RAG you can drop into any Python project in 5 lines — Open-source Projects (opensourceprojects.dev) (2026-08-24)
- [S2] GitHub – The-Vibe-Company/Quivr: Opiniated RAG for integrating GenAI in your apps — GitHub (2026-08-24)
- [S3] quivr-core · PyPI — PyPI (2026-08-24)
- [S4] Threads post by @githubprojects — Threads (2026-08-24)
