mirror of
https://github.com/QuivrHQ/quivr.git
synced 2024-12-14 07:59:00 +03:00
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
aiapichatbotchatgptdatabasedockerfrontendhtmljavascriptllmopenaipostgresqlprivacyragreactrest-apisecuritystarred-quivrhq-repostarred-repotypescriptvectorycombinator
e08995835a
This update enhances the "Second Brain" application by adding support for Anthropics AI models. Users can now use not only OpenAI's GPT-3/4, but also Anthropics' Claude models to store and query their knowledge. Key changes include: Added an anthropic_api_key field in the secrets configuration file. Introduced a selection for different AI models including GPT-3, GPT-4, and various versions of Claude. Updated question handling to be model-agnostic, and added support for Anthropics' Claude models in the question processing workflow. Modified the streamlit interface to allow users to input their choice of model, control the "temperature" of the model's responses, and set the max tokens limit. Upgraded requirements.txt file with the latest version of the Anthropics library. This update empowers users to leverage different AI models based on their needs, providing a more flexible and robust tool for knowledge management. |
||
---|---|---|
.streamlit | ||
.vscode | ||
loaders | ||
.gitignore | ||
2023-05-13-02-16-02.png | ||
brain.py | ||
Dockerfile | ||
files.py | ||
LICENSE | ||
logo.png | ||
main.py | ||
question.py | ||
README.md | ||
requirements.txt | ||
sidebar.py | ||
utils.py |
Quiver
Quiver is your second brain in the cloud, designed to easily store and retrieve unstructured information. It's like Obsidian but powered by generative AI.
Features
- Store Anything: Quiver can handle almost any type of data you throw at it. Text, images, code snippets, you name it.
- Generative AI: Quiver uses advanced AI to help you generate and retrieve information.
- Fast and Efficient: Designed with speed and efficiency in mind. Quiver makes sure you can access your data as quickly as possible.
- Secure: Your data is stored securely in the cloud and is always under your control.
- Compatible Files:
- Text
- Markdown
- Audio
- Video
- Open Source: Quiver is open source and free to use.
Demo
https://github.com/StanGirard/quiver/assets/19614572/a3cddc6a-ca28-44ad-9ede-3122fa918b51
Getting Started
These instructions will get you a copy of the project up and running on your local machine for development and testing purposes.
Prerequisites
What things you need to install the software and how to install them.
- Python 3.10 or higher
- Pip
- Virtualenv
- Supabase account
- Supabase API key
- Supabase URL
Installing
- Clone the repository
git clone git@github.com:StanGirard/quiver.git & cd quiver
- Create a virtual environment
virtualenv venv
- Activate the virtual environment
source venv/bin/activate
- Install the dependencies
pip install -r requirements.txt
- Copy the streamlit secrets.toml example file
cp .streamlit/secrets.toml.example .streamlit/secrets.toml
- Add your credentials to .streamlit/secrets.toml file
supabase_url = "SUPABASE_URL"
supabase_service_key = "SUPABASE_SERVICE_KEY"
openai_api_key = "OPENAI_API_KEY"
- Run the migration script on the Supabase database via the web interface
-- Enable the pgvector extension to work with embedding vectors
create extension vector;
-- Create a table to store your documents
create table documents (
id bigserial primary key,
content text, -- corresponds to Document.pageContent
metadata jsonb, -- corresponds to Document.metadata
embedding vector(1536) -- 1536 works for OpenAI embeddings, change if needed
);
CREATE FUNCTION match_documents(query_embedding vector(1536), match_count int)
RETURNS TABLE(
id bigint,
content text,
metadata jsonb,
-- we return matched vectors to enable maximal marginal relevance searches
embedding vector(1536),
similarity float)
LANGUAGE plpgsql
AS $$
# variable_conflict use_column
BEGIN
RETURN query
SELECT
id,
content,
metadata,
embedding,
1 -(documents.embedding <=> query_embedding) AS similarity
FROM
documents
ORDER BY
documents.embedding <=> query_embedding
LIMIT match_count;
END;
$$;
- Run the app
streamlit run main.py
Built With
- Python - The programming language used.
- Streamlit - The web framework used.
- Supabase - The open source Firebase alternative.
Contributing
Open a pull request and we'll review it as soon as possible.