quivr README

The project's README from github.com/The-Vibe-Company/quivr. As one markdown file: README.md.

Quivr - Your Second Brain, Empowered by Generative AI

Quivr-logo

Discord Follow GitHub Repo stars Twitter Follow

Quivr, helps you build your second brain, utilizes the power of GenerativeAI to be your personal assistant !

Key Features 🎯

We take care of the RAG so you can focus on your product. Simply install quivr-core and add it to your project. You can now ingest your files and ask questions.*

We will be improving the RAG and adding more features, stay tuned!

This is the core of Quivr, the brain of Quivr.com.

Getting Started 🚀

You can find everything on the documentation.

Prerequisites 📋

Ensure you have the following installed:

30 seconds Installation 💽

Configuration

Workflows

Basic RAG

Creating a basic RAG workflow like the one above is simple, here are the steps:

  1. Add your API Keys to your environment variables
import os
os.environ["OPENAI_API_KEY"] = "myopenai_apikey"

Quivr supports APIs from Anthropic, OpenAI, and Mistral. It also supports local models using Ollama.

  1. Create the YAML file basic_rag_workflow.yaml and copy the following content in it
workflow_config:
  name: "standard RAG"
  nodes:
    - name: "START"
      edges: ["filter_history"]

    - name: "filter_history"
      edges: ["rewrite"]

    - name: "rewrite"
      edges: ["retrieve"]

    - name: "retrieve"
      edges: ["generate_rag"]

    - name: "generate_rag" # the name of the last node, from which we want to stream the answer to the user
      edges: ["END"]

# Maximum number of previous conversation iterations
# to include in the context of the answer
max_history: 10

# Reranker configuration
reranker_config:
  # The reranker supplier to use
  supplier: "cohere"

  # The model to use for the reranker for the given supplier
  model: "rerank-multilingual-v3.0"

  # Number of chunks returned by the reranker
  top_n: 5

# Configuration for the LLM
llm_config:

  # maximum number of tokens passed to the LLM to generate the answer
  max_input_tokens: 4000

  # temperature for the LLM
  temperature: 0.7
  1. Create a Brain with the default configuration
from quivr_core import Brain

brain = Brain.from_files(name = "my smart brain",
                        file_paths = ["./my_first_doc.pdf", "./my_second_doc.txt"],
                        )
  1. Launch a Chat
brain.print_info()

from rich.console import Console
from rich.panel import Panel
from rich.prompt import Prompt
from quivr_core.config import RetrievalConfig

config_file_name = "./basic_rag_workflow.yaml"

retrieval_config = RetrievalConfig.from_yaml(config_file_name)

console = Console()
console.print(Panel.fit("Ask your brain !", style="bold magenta"))

while True:
    # Get user input
    question = Prompt.ask("[bold cyan]Question[/bold cyan]")

    # Check if user wants to exit
    if question.lower() == "exit":
        console.print(Panel("Goodbye!", style="bold yellow"))
        break

    answer = brain.ask(question, retrieval_config=retrieval_config)
    # Print the answer with typing effect
    console.print(f"[bold green]Quivr Assistant[/bold green]: {answer.answer}")

    console.print("-" * console.width)

brain.print_info()
  1. You are now all set up to talk with your brain and test different retrieval strategies by simply changing the configuration file!

Go further

You can go further with Quivr by adding internet search, adding tools, etc. Check the documentation for more information.

Contributors ✨

Thanks go to these wonderful people:

Contribute 🤝

Did you get a pull request? Open it, and we'll review it as soon as possible. Check out our project board here to see what we're currently focused on, and feel free to bring your fresh ideas to the table!

Partners ❤️

This project would not be possible without the support of our partners. Thank you for your support!

YCombinator Theodo

License 📄

This project is licensed under the Apache 2.0 License - see the LICENSE file for details

quivr (The-Vibe-Company/quivr)

Searching Database…

39.6K ·GitHub
What is this?Quivr is an open-source engine that turns your files and content streams into search and monitoring — a 'second brain' you can query, built around an opinionated RAG powered by generative AI.
Am I adding a library to my code, or using a finished app?A developer tool at its core: you install quivr-core as a Python package and add it to your project. Quivr.com, the hosted 'second brain', is built on this same core.
How do I get a first version running?Install quivr-core with pip (requires Python 3.10 or newer) and create a RAG with 5 lines of code. For more control you define a workflow in a YAML file, create a Brain and launch a chat.
Do I need an OpenAI API key, or can it run models locally?No single provider is locked in: it works with APIs from Anthropic, OpenAI and Mistral, or with local models through Ollama. API keys go into your environment variables.
What gets complicated beyond the quickstart?The 5-line path only covers a basic RAG: anything richer means writing YAML workflow configuration files, and you must place API keys in environment variables unless you go local with Ollama.
Is this built for end users or for developers?For developers: the pitch is 'We take care of the RAG so you can focus on your product' — you embed quivr-core in your own app instead of building retrieval yourself.
Which file formats can it ingest?Pretty much anything: PDF, TXT, Markdown and more, with support for adding your own parsers, plus a Megaparse integration for file ingestion.
What makes the RAG 'opinionated'?The team maintains one RAG that is fast and efficient out of the box, so you skip the retrieval plumbing — and they keep improving it and adding more features over time.
Can I tune how retrieval behaves?Yes: once your Brain is running you test different retrieval strategies just by changing the YAML configuration file, and go further by adding internet search and tools.
What is Megaparse?A parsing integration: you can ingest your files with Megaparse and then use the resulting content with Quivr's RAG.
Size
171.7 MB
Stars
39.6K
Age
3y
Commits · 90 Days