Lightweight RAG pipeline for document question answering
Project description
Basicrag - Lightweight RAG Pipeline
basicrag is a simple yet powerful Python package for building Retrieval-Augmented Generation (RAG) pipelines. With just a few lines of code, you can load documents, generate embeddings, and query information using state-of-the-art LLMs.
🚀 Features
- ✅ Multi-format support: PDF, DOCX, TXT, and URLs
- ✅ Customizable chunking: Control chunk size and overlap
- ✅ Multiple LLM providers: Groq, Gemini, OpenAI
- ✅ Custom prompts: Bring your own prompt templates
- ✅ Progress logging: Visual console feedback at each step
📦 Installation
pip install basicrag
⚡ Quick Start
from basicrag import RAGPipeline
# Initialize pipeline
rag = RAGPipeline(
llm_provider="groq",
llm_model="llama3-70b-8192",
api_key="YOUR_API_KEY"
)
# Load and process data
rag.load_data("https://en.wikipedia.org/wiki/Large_language_model")
rag.fit()
# Query the document
response = rag.query("What are large language models?")
print(response)
⚙️ Configuration Options
| Parameter | Default | Description |
|---|---|---|
llm_provider |
"groq" |
LLM provider: "groq", "gemini", "openai" |
llm_model |
"llama3-70b-8192" |
Model name |
api_key |
None |
Provider API key |
chunk_size |
1000 |
Text chunk size in characters |
chunk_overlap |
100 |
Chunk overlap in characters |
top_k |
3 |
Number of chunks to retrieve for context |
embedding_model |
"sentence-transformers/all-MiniLM-L6-v2" |
Sentence embedding model |
custom_prompt |
None |
Custom prompt template |
✏️ Custom Prompt Templates
Customize the prompt using {context} and {query} placeholders:
custom_prompt = """[INSTRUCTIONS]
Answer the question using ONLY the provided context.
If unsure, respond "I don't know".
[CONTEXT]
{context}
[QUESTION]
{query}
[ANSWER]
"""
rag = RAGPipeline(
chunk_size=500,
chunk_overlap=50,
top_k=5,
llm_provider="gemini",
llm_model="gemini-pro",
api_key="YOUR_GEMINI_KEY",
custom_prompt=custom_prompt
)
🤖 Supported Models
basicrag is compatible with any model available through supported providers like Groq, Gemini, and OpenAI, as long as the provider's API supports it.
Below are popular examples, but you're free to use any valid model name:
Groq
llama3-70b-8192llama3-8b-8192mixtral-8x7b-32768gemma2-9b-it
Gemini
gemini-progemini-1.5-pro-latestgemini-1.0-pro
OpenAI
gpt-4-turbogpt-3.5-turbogpt-4o
Tip: You can specify any model string supported by your selected provider using the llm_model parameter in the RAGPipeline.
🔧 Advanced Usage
📁 Local File Processing
rag.load_data("research_paper.pdf")
rag.load_data("contract.docx")
rag.load_data("notes.txt")
📚 Multiple Documents
rag = RAGPipeline(...)
# Load multiple sources
rag.load_data("https://example.com/article")
rag.load_data("data/document1.pdf")
rag.load_data("data/notes.txt")
rag.fit()
🔄 Changing Embedding Model
rag = RAGPipeline(
embedding_model="sentence-transformers/all-mpnet-base-v2",
# other params...
)
🖥️ Command Line Interface (CLI)
basicrag includes a simple CLI for quick RAG queries:
basicrag query "What is the main topic?" \
--file document.pdf \
--provider groq \
--model llama3-70b-8192 \
--api-key YOUR_KEY
🛠 Troubleshooting
Common Issues
-
Missing dependencies
pip install -r requirements.txt
-
API key not set Set it in code or in a
.envfile:GROQ_API_KEY=your_api_key GEMINI_API_KEY=your_api_key OPENAI_API_KEY=your_api_key
-
Unsupported file format Currently supported formats:
.pdf,.docx,.txt, and URLs
🤝 Contributing
We welcome contributions! To set up your development environment:
-
Clone the repo
-
Create a virtual environment
-
Install dependencies:
pip install -r requirements.txt
-
Start coding!
📄 License
MIT License. See LICENSE for details.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file basicrag-0.1.1.tar.gz.
File metadata
- Download URL: basicrag-0.1.1.tar.gz
- Upload date:
- Size: 7.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.9.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
88ffc68eccb81311c90b9fac089daecb03289b371a4670494c3f4125a0bbe3d0
|
|
| MD5 |
1ed41d1ab4389dbf300a1a92ed0b7df2
|
|
| BLAKE2b-256 |
69329f061a59ee26ff4bfd59c0933562bc7583699d7061a1aee194c14e328bd4
|
File details
Details for the file basicrag-0.1.1-py3-none-any.whl.
File metadata
- Download URL: basicrag-0.1.1-py3-none-any.whl
- Upload date:
- Size: 8.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.9.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b235062b3699668ee633831d476b073c7806b3ebd0162271b47bb8bd4916ee56
|
|
| MD5 |
204819190358c046e864aa9cd65c49db
|
|
| BLAKE2b-256 |
4828a88ead90a3bee789a2bd84f4bd14351038838052a70da29f8943bc70dbaf
|