Sign inSign up

overheatsystem/kallia

By overheatsystem

โ€ขUpdated 12 months ago

Semantic Document Processing Library

Image
Machine learning & AI
Developer tools
0

281

overheatsystem/kallia repository overview

โ Kallia

Version License Python Docker

Kallia is a semantic document processing library that converts documents into intelligent semantic chunks. The library specializes in extracting meaningful content segments from documents while preserving context and semantic relationships.

โ ๐Ÿš€ Features

  • Document-to-Markdown Conversion: Standardized processing pipeline for various document formats
  • Semantic Chunking: Intelligent content segmentation that respects document structure and meaning
  • PDF Support: Robust PDF processing with extensible architecture for additional formats
  • RESTful API: FastAPI-based service with comprehensive error handling
  • Interactive Playground: Chainlit-powered chat interface for document Q&A
  • Memory Management: Long-term and short-term memory systems for conversational context
  • Configurable Processing: Adjustable parameters (temperature, token limits, page selection)
  • Docker Support: Containerized deployment for both core API and playground

โ ๐Ÿ“‹ Requirements

  • Python 3.11 or higher
  • FastAPI 0.115.14
  • Docling 2.41.0

โ ๐Ÿ› ๏ธ Installation

โ Using pip
pip install kallia
โ From Source
git clone https://github.com/kallia-project/kallia.git
cd kallia
pip install -e .

โ ๐Ÿ—๏ธ Project Structure

kallia/
โ”œโ”€โ”€ kallia/
โ”‚   โ”œโ”€โ”€ core/                    # Core API service
โ”‚   โ”‚   โ”œโ”€โ”€ kallia_core/         # Main library modules
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ main.py          # FastAPI application
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ documents.py     # Document processing
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ chunker.py       # Semantic chunking
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ memories.py      # Memory management
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ models.py        # Data models
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ ...
โ”‚   โ”‚   โ”œโ”€โ”€ requirements.txt     # Core dependencies
โ”‚   โ”‚   โ”œโ”€โ”€ Dockerfile          # Core service container
โ”‚   โ”‚   โ””โ”€โ”€ docker-compose.yml  # Core service orchestration
โ”‚   โ””โ”€โ”€ playground/             # Interactive chat interface
โ”‚       โ”œโ”€โ”€ kallia_playground/  # Playground modules
โ”‚       โ”‚   โ”œโ”€โ”€ main.py         # Chainlit application
โ”‚       โ”‚   โ”œโ”€โ”€ qa.py           # Q&A functionality
โ”‚       โ”‚   โ””โ”€โ”€ ...
โ”‚       โ”œโ”€โ”€ requirements.txt    # Playground dependencies
โ”‚       โ”œโ”€โ”€ Dockerfile         # Playground container
โ”‚       โ””โ”€โ”€ docker-compose.yml # Playground orchestration
โ”œโ”€โ”€ tests/                     # Test suite
โ”œโ”€โ”€ assets/                    # Sample documents
โ””โ”€โ”€ pyproject.toml            # Project configuration

โ ๐Ÿš€ Quick Start

โ 1. Core API Service

Start the FastAPI service:

cd kallia/core
pip install -r requirements.txt
uvicorn kallia_core.main:app --reload

The API will be available at http://localhost:8000

โ API Endpoints

Process Documents

POST /documents

Request body:

{
  "url": "path/to/document.pdf",
  "page_number": 1,
  "temperature": 0.7,
  "max_tokens": 4000
}

Create Memories

POST /memories

Request body:

{
  "messages": [
    { "role": "user", "content": "Hello" },
    { "role": "assistant", "content": "Hi there!" }
  ],
  "temperature": 0.7,
  "max_tokens": 4000
}
โ 2. Interactive Playground

Start the Chainlit chat interface:

cd kallia/playground
pip install -r requirements.txt
chainlit run kallia_playground/main.py

The playground will be available at http://localhost:8000

โ 3. Docker Deployment

Core Service

cd kallia/core
docker-compose up -d

Playground

cd kallia/playground
docker-compose up -d

โ ๐Ÿ’ก Usage Examples

โ Python API
from kallia_core.documents import Documents
from kallia_core.chunker import Chunker
from kallia_core.memories import Memories

# Convert document to markdown
markdown_content = Documents.to_markdown(
    source="document.pdf",
    page_number=1,
    temperature=0.7,
    max_tokens=4000
)

# Create semantic chunks
chunks = Chunker.create(
    text=markdown_content,
    temperature=0.7,
    max_tokens=4000
)

# Generate memories from conversation
messages = [
    {"role": "user", "content": "What is this document about?"},
    {"role": "assistant", "content": "This document discusses..."}
]
memories = Memories.create(messages)
โ REST API
# Process a document
curl -X POST "http://localhost:8000/documents" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://raw.githubusercontent.com/kallia-project/kallia/refs/tags/v0.1.5/assets/pdf/01.pdf",
    "page_number": 1,
    "temperature": 0.7,
    "max_tokens": 4000
  }'

# Create memories
curl -X POST "http://localhost:8000/memories" \
  -H "Content-Type: application/json" \
  -d '{
    "messages": [
      {"role": "user", "content": "Hello"},
      {"role": "assistant", "content": "Hi there!"}
    ],
    "temperature": 0.7,
    "max_tokens": 4000
  }'

โ ๐Ÿ“Š Benchmark Results

Kallia has been extensively benchmarked against other popular document processing libraries using a comprehensive RAG (Retrieval-Augmented Generation) evaluation framework. The benchmark evaluates the quality of document chunking and retrieval performance across 100 test questions.

โ Performance Comparison

Benchmark Results

SystemMean ScorePerfect Score RateRanking
Kallia4.60081.0%๐Ÿฅ‡ 1st
LlamaIndex4.30071.0%๐Ÿฅˆ 2nd
PyMuPDF4.06065.0%๐Ÿฅ‰ 3rd
Unstructured3.95063.0%4th
โ Key Advantages
  • Highest Accuracy: Kallia achieves the highest mean score of 4.6/5.0
  • Superior Perfect Score Rate: 81% of questions received perfect scores vs. 71% for the next best
  • Semantic Chunking: Uses intelligent semantic chunking vs. fixed 500-character chunks with 0 overlap used by competitors
โ Benchmark Details
  • Evaluation Model: Qwen3 30B A3B Instruct 2507
  • Test Questions: 100 comprehensive questions across various document types
  • Scoring: 1-5 scale (1=Poor, 2=Below Average, 3=Average, 4=Good, 5=Excellent)
  • Chunking Method: Kallia uses semantic chunking with Qwen2.5 VL 32B Instruct
  • Competitor Methods: Fixed 500-character chunks with 0 overlap

The benchmark results demonstrate Kallia's superior performance in document processing and retrieval tasks, making it the optimal choice for applications requiring high-quality document understanding and semantic chunking.

For detailed benchmark results and visualizations, see the benchmark/ directory.

โ ๐Ÿงช Testing

Run the test suite:

python -m pytest tests/

Available tests:

  • test_pdf_to_markdown.py - Document conversion tests
  • test_markdown_to_chunks.py - Chunking functionality tests
  • test_histories_to_memories.py - Memory creation tests

โ ๐Ÿ”ง Configuration

โ Environment Variables

Create a .env file based on the provided .env.example template in each directory:

Core Service:

cd kallia/core
cp .env.example .env
# Edit .env with your configuration

Playground:

cd kallia/playground
cp .env.example .env
# Edit .env with your configuration
โ Supported File Formats

Currently supported:

  • PDF documents

The architecture is designed to be extensible for additional formats.

โ ๐Ÿ“ License

This project is licensed under the Apache License 2.0 - see the LICENSEโ  file for details.

โ ๐Ÿ‘จโ€๐Ÿ’ป Author

CK - [email protected]โ 

โ ๐Ÿท๏ธ Keywords

  • document-processing
  • semantic-chunking
  • document-analysis
  • text-processing
  • machine-learning
  • fastapi
  • chainlit
  • pdf-processing
  • nlp
  • ai

Built with โค๏ธ for intelligent document processing

Tag summary

Content type

Image

Digest

sha256:cedca7b3fโ€ฆ

Size

4 GB

Last updated

12 months ago

docker pull overheatsystem/kallia:0.1.6