Skip to main content

A RAG system for creating knowledge bases from different document formats

Project description

Ragora

PyPI version Python versions License GitHub stars

Build smarter, grounded, and transparent AI with Ragora.

Ragora is an open-source framework for building Retrieval-Augmented Generation (RAG) systems that connect your language models to real, reliable knowledge. It provides a clean, composable interface for managing knowledge bases, document retrieval, and grounding pipelines, so your AI can reason with context instead of guesswork.

The name Ragora blends RAG with the ancient Greek Agora, the public square where ideas were exchanged, debated, and refined. In the same spirit, Ragora is the meeting place of data and dialogue, where your information and your AI come together to think.

✨ Key Features

  • 📄 Specialized Document Processing: Native support for LaTeX parsing and email handling with more formats coming
  • 🏗️ Clean Architecture: Three-layer design (DatabaseManager → VectorStore → Retriever) for maintainability
  • 🔍 Flexible Search: Vector, keyword, and hybrid search modes for optimal retrieval
  • 🧩 Composable Components: Use high-level APIs or build custom pipelines with low-level components
  • ⚡ Performance Optimized: Batch processing, GPU acceleration, and efficient vector search with Weaviate
  • 🔒 Privacy-First: Run completely local with sentence-transformers and Weaviate

🚀 Installation

pip install ragora

Prerequisites

You need a Weaviate instance running. Download the pre-configured Ragora database server:

# Download from GitHub releases
wget https://github.com/Vahidlari/aiApps/releases/download/v<x.y.z>/database_server-<x.y.z>.tar.gz

# Extract and start
tar -xzf database_server-<x.y.z>.tar.gz
cd database-server
./database-manager.sh start

Update <x.y.z> with the actual package version- For example use 1.0.0 for version v1.0.0. The database server is a zero-dependency solution (only requires Docker) that works on Windows, macOS, and Linux.

Document Processing

Process LaTeX documents with specialized handling:

from ragora.core import DocumentPreprocessor, DataChunker

# Parse LaTeX with citations
preprocessor = DocumentPreprocessor()
document = preprocessor.parse_latex(
    "paper.tex",
    bibliography_path="references.bib"
)

# Chunk with configurable size and overlap using new API
from ragora import DataChunker, ChunkingContextBuilder

chunker = DataChunker()
context = ChunkingContextBuilder().for_document().build()
chunks = chunker.chunk(document.content, context)

🔍 Search Modes

Ragora supports three search strategies:

from ragora import SearchStrategy

# Semantic search (best for conceptual queries)
results = kbm.search("explain machine learning", strategy=SearchStrategy.SIMILAR)

# Keyword search (best for exact terms)
results = kbm.search("Schrödinger equation", strategy=SearchStrategy.KEYWORD)

# Hybrid search (recommended - combines both)
results = kbm.search("neural networks", strategy=SearchStrategy.HYBRID, alpha=0.7)

🎯 Use Cases

  • 📖 Academic Research: Build knowledge bases from scientific papers and LaTeX documents
  • 📝 Documentation Search: Create searchable knowledge bases from technical documentation
  • 🤖 AI Assistants: Ground LLM responses in your specific domain knowledge
  • 💬 Question Answering: Build Q&A systems over your document collections
  • 🔬 Literature Review: Efficiently search and synthesize information from research papers

📖 Documentation & Examples

  • Getting Started Guide: Detailed installation and setup guide
  • API Reference: Complete API documentation
  • Examples Directory: Working code examples
    • basic_usage.py: Basic usage examples and getting started
    • advanced_usage.py: Advanced features and custom pipelines
    • email_usage_examples.py: Email integration examples

📊 Requirements

  • Python: 3.11 or higher
  • Weaviate: 1.22.0 or higher (for vector storage)
  • Dependencies: See requirements.txt

🤝 Contributing

We welcome contributions! Please see our Contributing Guidelines for:

  • Setting up your development environment
  • Code style and standards
  • Writing tests
  • Submitting pull requests

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.

🔗 Links

📮 Contact

For questions, feedback, or collaboration opportunities:

  • Open an issue on GitHub
  • Start a discussion in GitHub Discussions
  • Contact the maintainers directly

Build smarter, grounded, and transparent AI with Ragora.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ragora-1.2.1.tar.gz (166.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ragora-1.2.1-py3-none-any.whl (90.3 kB view details)

Uploaded Python 3

File details

Details for the file ragora-1.2.1.tar.gz.

File metadata

  • Download URL: ragora-1.2.1.tar.gz
  • Upload date:
  • Size: 166.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for ragora-1.2.1.tar.gz
Algorithm Hash digest
SHA256 945d0e992c17ec82372baa00161dcfcf47221f3b928fb8e461c2c8ee8fe4f775
MD5 8758a43b57547cd3763ce6fda2dc3587
BLAKE2b-256 23ebbca2e3bd8f218f9d24cc07852d5ad24cee38e34b5baed3ad551f6d1e1fb9

See more details on using hashes here.

File details

Details for the file ragora-1.2.1-py3-none-any.whl.

File metadata

  • Download URL: ragora-1.2.1-py3-none-any.whl
  • Upload date:
  • Size: 90.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for ragora-1.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 108187a4996e304b8e5b0df433999123fdf854db56c2d40c8c9f51c04ebe4318
MD5 35992b582e6825e5bf7a1b103ec8da6f
BLAKE2b-256 0cce238ea31d8dae5b5bda79114333625260190431b818592f77de42d2efc2ca

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page