Skip to main content

AI-powered document analysis and query generation tool with RAG capabilities

Project description

LawFirm RAG Package

A comprehensive Python package for document analysis and query generation using Retrieval-Augmented Generation (RAG) with local AI models. Currently optimized for legal documents with support for Westlaw, LexisNexis, and Casetext query generation.

Features

  • 📄 Document Processing: Extract and analyze text from various legal document formats
  • 🤖 AI-Powered Analysis: Local GGUF model support for document summarization and legal issue identification
  • 🔍 Query Generation: Generate optimized search queries for legal databases (Westlaw, LexisNexis, Casetext)
  • 🌐 Web Interface: Modern web UI for document upload and analysis
  • 🔧 CLI Tools: Command-line interface for batch processing
  • 💾 Model Management: Download, load, and manage AI models with progress tracking
  • 🏗️ Pip Installable: Clean package structure for easy installation and distribution

Quick Start

Installation

From PyPI (Recommended)

# Install directly from PyPI
pip install lawfirm-rag-package

From GitHub Repository

# Clone the repository
git clone https://github.com/DannyMExe/rag-package.git
cd rag-package

# Install the package in development mode
pip install -e .

Basic Usage

Web Interface

# Start the web server
rag serve

# Open http://localhost:8000/app in your browser

CLI Usage

# Analyze documents
rag analyze document.pdf --type summary

# Generate queries for legal databases
rag query document.pdf --database westlaw

# Process multiple files
rag analyze *.pdf --output results.json

# Additional options
rag serve --port 8080
rag analyze document.pdf --type summary

AI Model Setup

The package supports local GGUF models for privacy and offline operation:

  1. Via Web Interface: Use the Model Management section to download models
  2. Manual Download: Place GGUF files in the models/ directory
  3. Recommended Model: Law Chat GGUF (Q4_0 variant recommended)

Architecture

lawfirm_rag/
├── core/           # Core processing modules
│   ├── ai_engine.py       # GGUF model handling
│   ├── document_processor.py  # Document text extraction
│   ├── query_generator.py     # Legal database query generation
│   └── storage.py            # Document storage layer
├── api/            # FastAPI web server
├── cli/            # Command-line interface
├── web/            # Frontend assets
└── utils/          # Utilities and configuration

Legal Database Support

Westlaw

  • Syntax: Terms and Connectors
  • Operators: &, |, /s, /p, /n, !, %
  • Example: negligen! /p \"motor vehicle\" /s injur! & damag!

LexisNexis

  • Syntax: Boolean operators
  • Operators: AND, OR, NOT, W/n, PRE/n
  • Example: negligence AND \"motor vehicle\" AND damages

Casetext

  • Syntax: Natural language + Boolean
  • Features: Supports both natural language and boolean queries

Development

Project Structure

This project uses Task Master for development workflow management:

# View current tasks
task-master list

# Get next task to work on
task-master next

# Mark task complete
task-master set-status --id=X --status=done

Running Tests

# Install development dependencies
pip install -e \".[dev]\"

# Run tests
pytest

# Run with coverage
pytest --cov=lawfirm_rag

Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Make your changes
  4. Add tests for new functionality
  5. Commit your changes (git commit -m 'Add amazing feature')
  6. Push to the branch (git push origin feature/amazing-feature)
  7. Open a Pull Request

Configuration

Configuration is managed through:

  • .taskmasterconfig: AI model settings and parameters
  • .env: API keys and sensitive configuration (see .env.example)

Environment Variables

# AI Provider API Keys (optional - for cloud models)
ANTHROPIC_API_KEY=your_key_here
OPENAI_API_KEY=your_key_here
PERPLEXITY_API_KEY=your_key_here

# Local model settings
OLLAMA_BASE_URL=http://localhost:11434/api

API Reference

FastAPI Endpoints

  • POST /upload - Upload documents for analysis
  • POST /analyze - Analyze uploaded documents
  • POST /query - Generate database queries
  • GET /health - Service health check
  • POST /models/load - Load AI models
  • GET /models/loaded - Get loaded model status

Python API

from lawfirm_rag.core import DocumentProcessor, AIEngine, QueryGenerator

# Initialize components
processor = DocumentProcessor()
ai_engine = AIEngine(\"path/to/model.gguf\")
query_gen = QueryGenerator(ai_engine)

# Process document
text = processor.extract_text(\"document.pdf\")
summary = ai_engine.analyze_document(text, \"summary\")
query = query_gen.generate_query(text, \"westlaw\")

License

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

Acknowledgments

Support

For questions, issues, or contributions:

[project.urls] Homepage = "https://github.com/DannyMExe/rag-package" Documentation = "https://lawfirm-rag.readthedocs.io" Repository = "https://github.com/DannyMExe/rag-package" "Bug Tracker" = "https://github.com/DannyMExe/rag-package/issues" Changelog = "https://github.com/DannyMExe/rag-package/blob/main/CHANGELOG.md"

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

rag_package-0.1.1.tar.gz (48.0 kB view details)

Uploaded Source

Built Distribution

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

rag_package-0.1.1-py3-none-any.whl (53.9 kB view details)

Uploaded Python 3

File details

Details for the file rag_package-0.1.1.tar.gz.

File metadata

  • Download URL: rag_package-0.1.1.tar.gz
  • Upload date:
  • Size: 48.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for rag_package-0.1.1.tar.gz
Algorithm Hash digest
SHA256 40ad30b144b408b93feeb06321edc960410ae2b4c61f3987bcc6f60f632b23d1
MD5 0f87c32155692b0b61b4dda05beafe7e
BLAKE2b-256 64589e913eaabbf3f31145a6cb2cb836a9f692eb278f13438209ed6e597171d4

See more details on using hashes here.

Provenance

The following attestation bundles were made for rag_package-0.1.1.tar.gz:

Publisher: publish-to-pypi.yml on DannyMExe/rag-package

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rag_package-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: rag_package-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 53.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for rag_package-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 952bd2fbf672a706fba3164028050ef5fb004dbbf4bba01a46b1f91bb5850dc0
MD5 f3cdc4a78f0a28d45511ecb12e85cc71
BLAKE2b-256 ac657a87f029e275f8ef7749cb174cf888dc65c5d552fa7297209fb25de3fcf7

See more details on using hashes here.

Provenance

The following attestation bundles were made for rag_package-0.1.1-py3-none-any.whl:

Publisher: publish-to-pypi.yml on DannyMExe/rag-package

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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