Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/quivrhq/quivr
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.
https://github.com/quivrhq/quivr
ai api chatbot chatgpt database docker framework frontend groq html javascript llm openai postgresql privacy rag react security typescript vector
Last synced: 6 days ago
JSON representation
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.
- Host: GitHub
- URL: https://github.com/quivrhq/quivr
- Owner: QuivrHQ
- License: other
- Created: 2023-05-12T23:53:30.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-11-22T16:54:08.000Z (29 days ago)
- Last Synced: 2024-11-24T20:50:27.881Z (27 days ago)
- Topics: ai, api, chatbot, chatgpt, database, docker, framework, frontend, groq, html, javascript, llm, openai, postgresql, privacy, rag, react, security, typescript, vector
- Language: Python
- Homepage: https://core.quivr.com
- Size: 122 MB
- Stars: 36,730
- Watchers: 283
- Forks: 3,591
- Open Issues: 138
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
- awesome-ChatGPT-repositories - quivr - Your GenAI Second Brain 🧠 A personal productivity assistant (RAG) ⚡️🤖 Chat with your docs (PDF, CSV, ...) & apps using Langchain, GPT 3.5 / 4 turbo, Private, Anthropic, VertexAI, Ollama, LLMs, that you can share with users ! Local & Private alternative to OpenAI GPTs & ChatGPT powered by retrieval-augmented generation. (Chatbots)
README
# Quivr - Your Second Brain, Empowered by Generative AI
[![Discord Follow](https://dcbadge.vercel.app/api/server/HUpRgp2HG8?style=flat)](https://discord.gg/HUpRgp2HG8)
[![GitHub Repo stars](https://img.shields.io/github/stars/quivrhq/quivr?style=social)](https://github.com/quivrhq/quivr)
[![Twitter Follow](https://img.shields.io/twitter/follow/StanGirard?style=social)](https://twitter.com/_StanGirard)Quivr, helps you build your second brain, utilizes the power of GenerativeAI to be your personal assistant !
## Key Features 🎯
- **Opiniated RAG**: We created a RAG that is opinionated, fast and efficient so you can focus on your product
- **LLMs**: Quivr works with any LLM, you can use it with OpenAI, Anthropic, Mistral, Gemma, etc.
- **Any File**: Quivr works with any file, you can use it with PDF, TXT, Markdown, etc and even add your own parsers.
- **Customize your RAG**: Quivr allows you to customize your RAG, add internet search, add tools, etc.
- **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.>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](https://core.quivr.com/).
### Prerequisites 📋
Ensure you have the following installed:
- Python 3.10 or newer
### 30 seconds Installation 💽
- **Step 1**: Install the package
```bash
pip install quivr-core # Check that the installation worked
```- **Step 2**: Create a RAG with 5 lines of code
```python
import tempfilefrom quivr_core import Brain
if __name__ == "__main__":
with tempfile.NamedTemporaryFile(mode="w", suffix=".txt") as temp_file:
temp_file.write("Gold is a liquid of blue-like colour.")
temp_file.flush()brain = Brain.from_files(
name="test_brain",
file_paths=[temp_file.name],
)answer = brain.ask(
"what is gold? asnwer in french"
)
print("answer:", answer)
```
## Configuration### Workflows
#### Basic RAG
![](docs/docs/workflows/examples/basic_rag.excalidraw.png)
Creating a basic RAG workflow like the one above is simple, here are the steps:
1. Add your API Keys to your environment variables
```python
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
```yaml
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
```3. Create a Brain with the default configuration
```python
from quivr_core import Brainbrain = Brain.from_files(name = "my smart brain",
file_paths = ["./my_first_doc.pdf", "./my_second_doc.txt"],
)```
4. Launch a Chat
```python
brain.print_info()from rich.console import Console
from rich.panel import Panel
from rich.prompt import Prompt
from quivr_core.config import RetrievalConfigconfig_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"))
breakanswer = 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()
```5. 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](https://core.quivr.com/) 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](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!
- [Open Issues](https://github.com/quivrhq/quivr/issues)
- [Open Pull Requests](https://github.com/quivrhq/quivr/pulls)
- [Good First Issues](https://github.com/quivrhq/quivr/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22)## Partners ❤️
This project would not be possible without the support of our partners. Thank you for your support!
## License 📄
This project is licensed under the Apache 2.0 License - see the [LICENSE](LICENSE) file for details