QU

Quivr

Opinionated RAG framework for your second brain

Self-Hosted AI ★ 39.6k stars Medium setup Apache-2.0

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