Production-ready RAG infrastructure for multilingual applications
Project description
Maktaba
The library for building libraries - By NuhaTech
From the Arabic word for library, Maktaba is a modern RAG infrastructure for building intelligent knowledge systems in any language.
Features
- 🔌 Provider-agnostic: Works with OpenAI, Cohere, Azure, and more
- 🚀 Production-ready: Built for scale with async-first design
- 🧩 Modular: Use only what you need
- 🌍 Multilingual: Optimized for Arabic and international languages
- 📊 Type-safe: Full type hints and Pydantic validation
- 🧪 Well-tested: Comprehensive test coverage
- 🔍 Deep research: Built-in iterative planning for long-form reports
Installation
Using UV (Recommended)
# Install UV if you haven't already
curl -LsSf https://astral.sh/uv/install.sh | sh
# Add maktaba to your project
uv add maktaba
# With OpenAI + Qdrant
uv add "maktaba[openai,qdrant]"
# With all providers
uv add "maktaba[all]"
Using pip
# Basic installation
pip install maktaba
# With OpenAI + Qdrant
pip install "maktaba[openai,qdrant]"
# With all providers
pip install "maktaba[all]"
Quick Start
from maktaba.pipeline import QueryPipeline
from maktaba.embedding import OpenAIEmbedder
from maktaba.storage import QdrantStore
from maktaba.reranking import CohereReranker
# Create pipeline
pipeline = QueryPipeline(
embedder=OpenAIEmbedder(api_key="..."),
vector_store=QdrantStore(url="http://localhost:6333", collection_name="docs"),
reranker=CohereReranker(api_key="...")
)
# Search with automatic reranking and citation formatting
result = await pipeline.search(
query="What is Tawhid?",
top_k=10,
rerank=True
)
# Use in your LLM prompt
print(result["formatted_context"]) # [1]: content... [2]: content...
print(result["citations"]) # [{id: 1, source: "...", score: 0.95}, ...]
Deep Research Pipeline
Learn how to customise the default prompts via maktaba_templates.md.
from maktaba.pipeline import create_deep_research_pipeline
from maktaba.embedding import OpenAIEmbedder
from maktaba.storage import QdrantStore
from maktaba.llm import OpenAILLM
pipeline = create_deep_research_pipeline(
embedder=OpenAIEmbedder(api_key="..."),
store=QdrantStore(url="http://localhost:6333", collection_name="docs"),
llm=OpenAILLM(api_key="...", model="gpt-4o-mini"),
)
result = await pipeline.run_research("Impacts of lunar dust on spacecraft design")
chunks = [chunk async for chunk in result.stream]
print("".join(chunks)) # Final long-form report
print(result.queries_used) # Queries issued during research
print(result.source_indices) # 1-based indices of retained sources
For a full walkthrough (configuration knobs, streaming, stage overrides), see docs/DeepResearch.md and examples/deep_research_pipeline.py.
Development
Running Checks Before Push
Before pushing to the remote repository, run all quality checks:
Linux/Mac/Git Bash:
./scripts/check.sh
Windows CMD:
scripts\check.bat
This will run:
- Ruff linting
- MyPy type checking
- Pytest tests
All checks must pass before pushing.
Documentation
- Overview: docs/Overview.md
- Quickstart: docs/Quickstart.md
- Pipelines: docs/Pipelines.md
- Providers: docs/Providers.md
- Examples: docs/Examples.md
- Troubleshooting: docs/Troubleshooting.md
Website (coming soon): maktaba.nuhatech.com
License
MIT License - see LICENSE
About NuhaTech
Built by NuhaTech - creators of Kutub and Muqabia.
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 maktaba-0.1.16.tar.gz.
File metadata
- Download URL: maktaba-0.1.16.tar.gz
- Upload date:
- Size: 515.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7ea88bb94f93e474757505bec739496297ac86ae265eca43c358f19f55b0ed6d
|
|
| MD5 |
79a2b371e314b94c5e074222a3f610e2
|
|
| BLAKE2b-256 |
4aeafe1d0050dc0f812bfa58565ee0dd6e57f09220bde8a58555f997dc57fb52
|
Provenance
The following attestation bundles were made for maktaba-0.1.16.tar.gz:
Publisher:
publish.yml on nuhatech/maktaba
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
maktaba-0.1.16.tar.gz -
Subject digest:
7ea88bb94f93e474757505bec739496297ac86ae265eca43c358f19f55b0ed6d - Sigstore transparency entry: 701465850
- Sigstore integration time:
-
Permalink:
nuhatech/maktaba@f6a897e01df0844537238b993be2fa41b66fb55f -
Branch / Tag:
refs/tags/v0.1.16 - Owner: https://github.com/nuhatech
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@f6a897e01df0844537238b993be2fa41b66fb55f -
Trigger Event:
release
-
Statement type:
File details
Details for the file maktaba-0.1.16-py3-none-any.whl.
File metadata
- Download URL: maktaba-0.1.16-py3-none-any.whl
- Upload date:
- Size: 72.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dfdd5f020e3b4823ec20cbb4156c53351a707c3a8ea9ed6e0713e38db615012e
|
|
| MD5 |
35fa1fd3a53f81e2f8a168627a1294f7
|
|
| BLAKE2b-256 |
f3bcbcb0719f87089689fa1dca446c432e26fefe3a920d36ab894e20a5b806a2
|
Provenance
The following attestation bundles were made for maktaba-0.1.16-py3-none-any.whl:
Publisher:
publish.yml on nuhatech/maktaba
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
maktaba-0.1.16-py3-none-any.whl -
Subject digest:
dfdd5f020e3b4823ec20cbb4156c53351a707c3a8ea9ed6e0713e38db615012e - Sigstore transparency entry: 701465858
- Sigstore integration time:
-
Permalink:
nuhatech/maktaba@f6a897e01df0844537238b993be2fa41b66fb55f -
Branch / Tag:
refs/tags/v0.1.16 - Owner: https://github.com/nuhatech
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@f6a897e01df0844537238b993be2fa41b66fb55f -
Trigger Event:
release
-
Statement type: