QuivrHQ / quivr

Open-source RAG Framework for building GenAI Second Brains 🧠 Build productivity assistant (RAG) ⚡️🤖 Chat with your docs (PDF, CSV, ...) & apps using Langchain, GPT 3.5 / 4 turbo, Private, Anthropic, VertexAI, Ollama, LLMs, Groq that you can share with users ! Efficient retrieval augmented generation framework
https://quivr.com
Other
34.17k stars 3.35k forks source link

[Bug]: Knowledge articles are not being used #2486

Open marcato15 opened 2 months ago

marcato15 commented 2 months ago

What happened?

I finally setup Quivr using ollama/lama2, and added a bunch of pdf's about malaria. However, when I ask questions it seems to have no knowledge of the sources I added to the brain. When I ask questions about malaria it's answering using knowledge from what I presume is the base LLM but when I asked to show sources it just responds it has none. Is there a minimum number of documents to add? I wish it would only respond using the documents I give it. I don't want it responding using general knowledge.

Relevant log output

worker        | [2024-04-24 14:43:30,527: INFO/ForkPoolWorker-1] HTTP Request: POST http://host.docker.internal:54321/rest/v1/vectors?columns=%22content%22%2C%22embedding%22%2C%22metadata%22%2C%22id%22 "HTTP/1.1 400 Bad Request"
worker        | [ERROR] packages.embeddings.vectors [vectors.py:23]: Error creating vector for document {'code': '22000', 'details': None, 'hint': None, 'message': 'expected 1536 dimensions, not 4096'}
worker        | [2024-04-24 14:43:30,533: WARNING/ForkPoolWorker-1] Error processing file: 'NoneType' object is not iterable
worker        | [2024-04-24 14:43:30,542: INFO/ForkPoolWorker-1] HTTP Request: PATCH http://host.docker.internal:54321/rest/v1/notifications?id=eq.40538142-6bb4-4a28-9f36-e5e84029b6c4 "HTTP/1.1 200 OK"
worker        | [2024-04-24 14:43:30,551: INFO/ForkPoolWorker-1] HTTP Request: PATCH http://host.docker.internal:54321/rest/v1/brains?brain_id=eq.678c3ece-377f-46b3-9c82-e2dd67715796 "HTTP/1.1 200 OK"
worker        | [2024-04-24 14:43:30,552: INFO/ForkPoolWorker-1] Task process_file_and_notify[96451d30-c937-40bc-8fbc-fd3636f9b6b4] succeeded in 58.662878985000134s: True

Twitter / LinkedIn details

No response

dosubot[bot] commented 2 months ago

It sounds like the issue with Quivr not utilizing your added documents for answering questions might be related to the configuration of the ollama/lama2 integration. Ensure that the OLLAMA_API_BASE_URL is correctly set in your .env file, as it needs to be uncommented and provided with the correct URL to enable the integration properly. This step is crucial for Quivr to use the documents you've added for retrieval-augmented generation.

There's no specified minimum number of documents required for Quivr to function. The system should use the documents you've added as long as they are correctly formatted and accessible. Ensure your PDFs about malaria are structured in a way that their content can be directly used as input to the system. Each document's content should be self-contained and understandable on its own, following the DEFAULT_DOCUMENT_PROMPT template format.

Quivr generates a list of sources from the documents associated with a given brain ID without explicitly prioritizing certain sources over others. It processes URLs and file paths differently, ensuring each source is unique and accessible. If your documents are correctly formatted and the ollama/lama2 integration is properly configured, Quivr should be able to use them for answering questions.

If you've confirmed these settings and are still facing issues, it might be worth reviewing the specific configurations and formats again or exploring further documentation on how Quivr manages document sources and answers questions based on them.

#### Details **Sources** - [.env.example](https://github.com/QuivrHQ/quivr/blob/main/.env.example) - [backend/modules/brain/rags/new_quivr_rag.py](https://github.com/QuivrHQ/quivr/blob/main/backend/modules/brain/rags/new_quivr_rag.py) - [backend/modules/brain/rags/quivr_rag.py](https://github.com/QuivrHQ/quivr/blob/main/backend/modules/brain/rags/quivr_rag.py) - [backend/modules/brain/knowledge_brain_qa.py](https://github.com/QuivrHQ/quivr/blob/main/backend/modules/brain/knowledge_brain_qa.py)
**About Dosu** This response is meant to be useful and save you time. It is **not meant to be a precise solution**, but rather a starting point for your own research. Help me be more useful! Please leave a 👍 if this is helpful and 👎 if it is irrelevant.

To continue the conversation, mention @dosu.

StanGirard commented 2 months ago

The issue is the document weren't correctly embedded because you used Ollama :/

Please delete all data in the tables and start again.

marcato15 commented 2 months ago

So can I not use Ollama?

JerryKwan commented 1 month ago

It seems like the vector is not match, the schema defined is something like -- Create vectors table CREATE TABLE IF NOT EXISTS vectors ( id UUID DEFAULT uuid_generate_v4() PRIMARY KEY, content TEXT, file_sha1 TEXT, metadata JSONB, embedding VECTOR(1536) );

But the vector generated is 4096

JerryKwan commented 1 month ago

You can use the following statement to alter the table

alter table vectors alter column embedding type vector(4096);
mkhludnev commented 3 weeks ago

to adjust vector dimensions, rename https://github.com/QuivrHQ/quivr/blob/main/backend/supabase/migrations/local_20240107152745_ollama.sql before starting supabase or run migration after renaming also see #2690