{"id":13642767,"url":"https://github.com/quivrhq/quivr","last_synced_at":"2026-06-12T20:27:17.087Z","repository":{"id":164629396,"uuid":"640079149","full_name":"QuivrHQ/quivr","owner":"QuivrHQ","description":"Opiniated RAG for integrating GenAI in your apps 🧠   Focus on your product rather than the RAG. Easy integration in existing products with customisation!  Any LLM: GPT4, Groq, Llama. Any Vectorstore: PGVector, Faiss. Any Files. Anyway you want. ","archived":false,"fork":false,"pushed_at":"2025-05-01T21:32:58.000Z","size":129611,"stargazers_count":37776,"open_issues_count":26,"forks_count":3631,"subscribers_count":281,"default_branch":"main","last_synced_at":"2025-05-03T10:52:00.937Z","etag":null,"topics":["ai","api","chatbot","chatgpt","database","docker","framework","frontend","groq","html","javascript","llm","openai","postgresql","privacy","rag","react","security","typescript","vector"],"latest_commit_sha":null,"homepage":"https://core.quivr.com","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/QuivrHQ.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"github":"StanGirard","patreon":null,"open_collective":null,"ko_fi":"StanGirard","tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"lfx_crowdfunding":null,"custom":null}},"created_at":"2023-05-12T23:53:30.000Z","updated_at":"2025-05-03T09:03:42.000Z","dependencies_parsed_at":"2023-10-16T23:54:44.030Z","dependency_job_id":"4ca89495-4280-4e06-a869-0a6b1ce84290","html_url":"https://github.com/QuivrHQ/quivr","commit_stats":{"total_commits":2113,"total_committers":121,"mean_commits":"17.462809917355372","dds":0.4500709891150023,"last_synced_commit":"0c902543997e27a0c7da628ed31c5d21cdf19aa7"},"previous_names":["quivrhq/quivr","stangirard/quivr","stangirard/quiver"],"tags_count":354,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/QuivrHQ%2Fquivr","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/QuivrHQ%2Fquivr/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/QuivrHQ%2Fquivr/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/QuivrHQ%2Fquivr/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/QuivrHQ","download_url":"https://codeload.github.com/QuivrHQ/quivr/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252332783,"owners_count":21731068,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai","api","chatbot","chatgpt","database","docker","framework","frontend","groq","html","javascript","llm","openai","postgresql","privacy","rag","react","security","typescript","vector"],"created_at":"2024-08-02T01:01:36.021Z","updated_at":"2026-06-12T20:27:15.958Z","avatar_url":"https://github.com/QuivrHQ.png","language":"Python","funding_links":["https://github.com/sponsors/StanGirard","https://ko-fi.com/StanGirard"],"categories":["Chatbots"],"sub_categories":[],"readme":"# Quivr - Your Second Brain, Empowered by Generative AI\n\n\u003cdiv align=\"center\"\u003e\n    \u003cimg src=\"./logo.png\" alt=\"Quivr-logo\" width=\"31%\"  style=\"border-radius: 50%; padding-bottom: 20px\"/\u003e\n\u003c/div\u003e\n\n[![Discord Follow](https://dcbadge.vercel.app/api/server/HUpRgp2HG8?style=flat)](https://discord.gg/HUpRgp2HG8)\n[![GitHub Repo stars](https://img.shields.io/github/stars/quivrhq/quivr?style=social)](https://github.com/quivrhq/quivr)\n[![Twitter Follow](https://img.shields.io/twitter/follow/StanGirard?style=social)](https://twitter.com/_StanGirard)\n\nQuivr, helps you build your second brain, utilizes the power of GenerativeAI to be your personal assistant !\n\n## Key Features 🎯\n\n- **Opiniated RAG**: We created a RAG that is opinionated, fast and efficient so you can focus on your product\n- **LLMs**: Quivr works with any LLM, you can use it with OpenAI, Anthropic, Mistral, Gemma, etc.\n- **Any File**: Quivr works with any file, you can use it with PDF, TXT, Markdown, etc and even add your own parsers.\n- **Customize your RAG**: Quivr allows you to customize your RAG, add internet search, add tools, etc.\n- **Integrations with Megaparse**: Quivr works with [Megaparse](https://github.com/quivrhq/megaparse), so you can ingest your files with Megaparse and use the RAG with Quivr.\n\n\u003eWe 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.*\n\n**We will be improving the RAG and adding more features, stay tuned!**\n\n\nThis is the core of Quivr, the brain of Quivr.com.\n\n\u003c!-- ## Demo Highlight 🎥\n\nhttps://github.com/quivrhq/quivr/assets/19614572/a6463b73-76c7-4bc0-978d-70562dca71f5 --\u003e\n\n## Getting Started 🚀\n\nYou can find everything on the [documentation](https://core.quivr.com/).\n\n### Prerequisites 📋\n\nEnsure you have the following installed:\n\n- Python 3.10 or newer\n\n### 30 seconds Installation 💽\n\n\n- **Step 1**: Install the package\n\n  \n\n  ```bash\n  pip install quivr-core # Check that the installation worked\n  ```\n\n\n- **Step 2**: Create a RAG with 5 lines of code\n\n  ```python\n  import tempfile\n\n  from quivr_core import Brain\n\n  if __name__ == \"__main__\":\n      with tempfile.NamedTemporaryFile(mode=\"w\", suffix=\".txt\") as temp_file:\n          temp_file.write(\"Gold is a liquid of blue-like colour.\")\n          temp_file.flush()\n\n          brain = Brain.from_files(\n              name=\"test_brain\",\n              file_paths=[temp_file.name],\n          )\n\n          answer = brain.ask(\n              \"what is gold? asnwer in french\"\n          )\n          print(\"answer:\", answer)\n  ```\n## Configuration\n\n### Workflows\n\n#### Basic RAG\n\n![](docs/docs/workflows/examples/basic_rag.excalidraw.png)\n\n\nCreating a basic RAG workflow like the one above is simple, here are the steps:\n\n\n1. Add your API Keys to your environment variables\n```python\nimport os\nos.environ[\"OPENAI_API_KEY\"] = \"myopenai_apikey\"\n\n```\nQuivr supports APIs from Anthropic, OpenAI, and Mistral. It also supports local models using Ollama.\n\n1. Create the YAML file ``basic_rag_workflow.yaml`` and copy the following content in it\n```yaml\nworkflow_config:\n  name: \"standard RAG\"\n  nodes:\n    - name: \"START\"\n      edges: [\"filter_history\"]\n\n    - name: \"filter_history\"\n      edges: [\"rewrite\"]\n\n    - name: \"rewrite\"\n      edges: [\"retrieve\"]\n\n    - name: \"retrieve\"\n      edges: [\"generate_rag\"]\n\n    - name: \"generate_rag\" # the name of the last node, from which we want to stream the answer to the user\n      edges: [\"END\"]\n\n# Maximum number of previous conversation iterations\n# to include in the context of the answer\nmax_history: 10\n\n# Reranker configuration\nreranker_config:\n  # The reranker supplier to use\n  supplier: \"cohere\"\n\n  # The model to use for the reranker for the given supplier\n  model: \"rerank-multilingual-v3.0\"\n\n  # Number of chunks returned by the reranker\n  top_n: 5\n\n# Configuration for the LLM\nllm_config:\n\n  # maximum number of tokens passed to the LLM to generate the answer\n  max_input_tokens: 4000\n\n  # temperature for the LLM\n  temperature: 0.7\n```\n\n3. Create a Brain with the default configuration\n```python\nfrom quivr_core import Brain\n\nbrain = Brain.from_files(name = \"my smart brain\",\n                        file_paths = [\"./my_first_doc.pdf\", \"./my_second_doc.txt\"],\n                        )\n\n```\n\n4. Launch a Chat\n```python\nbrain.print_info()\n\nfrom rich.console import Console\nfrom rich.panel import Panel\nfrom rich.prompt import Prompt\nfrom quivr_core.config import RetrievalConfig\n\nconfig_file_name = \"./basic_rag_workflow.yaml\"\n\nretrieval_config = RetrievalConfig.from_yaml(config_file_name)\n\nconsole = Console()\nconsole.print(Panel.fit(\"Ask your brain !\", style=\"bold magenta\"))\n\nwhile True:\n    # Get user input\n    question = Prompt.ask(\"[bold cyan]Question[/bold cyan]\")\n\n    # Check if user wants to exit\n    if question.lower() == \"exit\":\n        console.print(Panel(\"Goodbye!\", style=\"bold yellow\"))\n        break\n\n    answer = brain.ask(question, retrieval_config=retrieval_config)\n    # Print the answer with typing effect\n    console.print(f\"[bold green]Quivr Assistant[/bold green]: {answer.answer}\")\n\n    console.print(\"-\" * console.width)\n\nbrain.print_info()\n```\n\n5. You are now all set up to talk with your brain and test different retrieval strategies by simply changing the configuration file!\n\n## Go further\n\nYou can go further with Quivr by adding internet search, adding tools, etc. Check the [documentation](https://core.quivr.com/) for more information.\n\n\n## Contributors ✨\n\nThanks go to these wonderful people:\n\u003ca href=\"https://github.com/quivrhq/quivr/graphs/contributors\"\u003e\n\u003cimg src=\"https://contrib.rocks/image?repo=quivrhq/quivr\" /\u003e\n\u003c/a\u003e\n\n## Contribute 🤝\n\nDid you get a pull request? Open it, and we'll review it as soon as possible. Check out our project board [here](https://github.com/users/StanGirard/projects/5) to see what we're currently focused on, and feel free to bring your fresh ideas to the table!\n\n- [Open Issues](https://github.com/quivrhq/quivr/issues)\n- [Open Pull Requests](https://github.com/quivrhq/quivr/pulls)\n- [Good First Issues](https://github.com/quivrhq/quivr/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22)\n\n## Partners ❤️\n\nThis project would not be possible without the support of our partners. Thank you for your support!\n\n\n\u003ca href=\"https://ycombinator.com/\"\u003e\n    \u003cimg src=\"https://upload.wikimedia.org/wikipedia/commons/thumb/b/b2/Y_Combinator_logo.svg/1200px-Y_Combinator_logo.svg.png\" alt=\"YCombinator\" style=\"padding: 10px\" width=\"70px\"\u003e\n\u003c/a\u003e\n\u003ca href=\"https://www.theodo.fr/\"\u003e\n  \u003cimg src=\"https://avatars.githubusercontent.com/u/332041?s=200\u0026v=4\" alt=\"Theodo\" style=\"padding: 10px\" width=\"70px\"\u003e\n\u003c/a\u003e\n\n## License 📄\n\nThis project is licensed under the Apache 2.0 License - see the [LICENSE](LICENSE) file for details\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fquivrhq%2Fquivr","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fquivrhq%2Fquivr","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fquivrhq%2Fquivr/lists"}