Quivr
Opinionated RAG framework for your second brain
Quivr is an open-source RAG framework that helps developers build personal knowledge assistants over documents. It focuses on making retrieval-augmented generation simple and embeddable into products.
Key features
- RAG framework
- Document ingestion
- Embeddable into apps
- Many file types
Pros & cons
Strengths
- Developer-friendly RAG core
- Embeds into products
- Many file formats
Trade-offs
- Requires LLM API keys
- Project scope shifted often
Quivr replaces
Last reviewed Aug 26, 2026 · 788 words
The name Quivr has meant three different things since 2023, and the tutorial you found is probably about the wrong one. It launched as a full "second brain" web app with a Supabase backend and a Next.js front end. Through 2024 it split: the hosted product went one way, the document parser was spun out as MegaParse, and the open-source repo shrank to quivr-core, a Python library for building retrieval-augmented generation into your own software. That library is what the 39,423 stars point at today. If you want a chat window over a folder of PDFs, you want AnythingLLM or Open WebUI, not this. If you are a Python developer who wants RAG inside a product without hand-assembling LangChain, Quivr is the shortest path I know of.
Twenty lines to a working brain
The core abstraction is a Brain: a set of documents, an embedding index, and an LLM to answer from it.
from quivr_core import Brain
brain = Brain.from_files(
name="handbook",
file_paths=["handbook.pdf", "policies.md", "oncall.docx"],
)
answer = brain.ask("Who is on call for the payments service this week?")
print(answer.answer)
That is the whole loop: parse, chunk, embed, store, retrieve, generate. Under the hood it uses LangChain components and a local FAISS index by default, and the catalogue's "many file types" highlight is real: PDF, DOCX, Markdown, HTML, CSV, plain text, and more go through the same entry point. The "embeddable" claim is also literal, since a Brain is an object in your process, not a service you call over HTTP, which is the difference between Quivr and every chat-UI product in the AI category.
It needs a model, and that means keys or Ollama
Quivr does no inference of its own. The default configuration expects OPENAI_API_KEY in the environment and uses OpenAI for both embeddings and chat, which is the "requires LLM API keys" con in the catalogue and a surprise to people who read "self-hosted" as "offline". You can point it at a local Ollama instance through the LangChain integrations, and for a 7B to 14B model on a single GPU that works well enough for question answering over a few hundred pages. The "offline-first" tag holds only once you have done that swap and chosen a local embedding model as well; leave either at the default and every query still leaves your network. Plan for a GPU box or a hosted key before you plan for Quivr.
Parsing quality decides the answer quality
Most RAG disappointment is a parsing failure wearing a retrieval costume: the table became a paragraph, the two-column PDF interleaved, the header repeated on every chunk. Quivr's original answer to this was MegaParse, now a separate project, and quivr-core lets you plug in alternative parsers per file type. For clean Markdown and simple PDFs the defaults are fine. For scanned documents, dense tables, or slide decks, run a test set of 20 real questions before committing, and read RAG vs fine-tuning if the answers are wrong in ways better retrieval will not fix. The library makes it trivial to swap the vector store as well; choosing a vector database covers when FAISS in memory stops being enough and something like Qdrant earns its container.
Scope drift is the operational risk
The catalogue's second con, "project scope shifted often", is the one I would weigh most heavily. Three pivots in three years means tutorials, Docker Compose files, and Stack Overflow answers are split across incompatible generations, and the old full-stack app in the repository history is not maintained. Pin quivr-core to an exact version in your requirements.txt, read the changelog before upgrading, and keep your own thin wrapper around Brain so that a future API change is one file to fix rather than twenty. A library that a small company steers toward its commercial product will keep moving; that is not a reason to avoid it, just a reason to isolate it.
What I'd do
Building RAG into a Python product: pip install quivr-core, pinned, Ollama for embeddings and generation on a box with 16 GB of VRAM or an API key if the documents are not sensitive, a 20-question eval set from day one, and a wrapper module so the rest of the code never imports Quivr directly. Wanting a personal document assistant with a chat UI and no code: skip Quivr entirely, install AnythingLLM, and get the same result by lunch. The self-hosted AI stack post on this site shows how the pieces fit if you end up needing both.
Compare Quivr
6 head-to-head comparisons.
Similar self-hosted ai apps
OpenClaw
Self-Hosted AIThe AI that actually does things
Hermes Agent
Self-Hosted AIThe AI agent that grows with you
OpenCode
Self-Hosted AIThe open source AI coding agent
Replaces Claude Code, Cursor
Hugging Face Transformers
Self-Hosted AIState-of-the-art machine learning model library
Replaces OpenAI API
Dify
Self-Hosted AIOpen-source platform for building production LLM apps
Replaces OpenAI Assistants, Vertex AI Agent Builder
Langflow
Self-Hosted AIVisual framework for building AI agents and RAG pipelines
Replaces Vertex AI Agent Builder