Skip to main content

RAG implementation for gptme context management

Project description

gptme-rag

RAG (Retrieval-Augmented Generation) implementation for gptme context management.

Tests PyPI version License

Features

  • ๐Ÿ“š Document indexing with ChromaDB
    • Fast and efficient vector storage
    • Semantic search capabilities
    • Persistent storage
  • ๐Ÿ” Semantic search with embeddings
    • Relevance scoring
    • Token-aware context assembly
    • Clean output formatting
  • ๐Ÿ“„ Smart document processing
    • Streaming large file handling
    • Automatic document chunking
    • Configurable chunk size/overlap
    • Document reconstruction
  • ๐Ÿ‘€ File watching and auto-indexing
    • Real-time index updates
    • Pattern-based file filtering
    • Efficient batch processing
    • Automatic persistence
  • ๐Ÿ› ๏ธ CLI interface for testing and development
    • Index management
    • Search functionality
    • Context assembly
    • File watching

Installation

# Using pip
pip install gptme-rag

# Using pipx (recommended for CLI tools)
pipx install gptme-rag

# From source (for development)
git clone https://github.com/ErikBjare/gptme-rag.git
cd gptme-rag
poetry install

After installation, the gptme-rag command will be available in your terminal.

Usage

Indexing Documents

# Index markdown files in a directory
poetry run python -m gptme_rag index /path/to/documents --pattern "**/*.md"

# Index with custom persist directory
poetry run python -m gptme_rag index /path/to/documents --persist-dir ./index

Searching

# Basic search
poetry run python -m gptme_rag search "your query here"

# Advanced search with options
poetry run python -m gptme_rag search "your query" \
  --n-results 5 \
  --persist-dir ./index \
  --max-tokens 4000 \
  --show-context

File Watching

The watch command monitors directories for changes and automatically updates the index:

# Watch a directory with default settings
poetry run python -m gptme_rag watch /path/to/documents

# Watch with custom pattern and ignore rules
poetry run python -m gptme_rag watch /path/to/documents \
  --pattern "**/*.{md,py}" \
  --ignore-patterns "*.tmp" "*.log" \
  --persist-dir ./index

Features:

  • ๐Ÿ”„ Real-time index updates
  • ๐ŸŽฏ Pattern matching for file types
  • ๐Ÿšซ Configurable ignore patterns
  • ๐Ÿ”‹ Efficient batch processing
  • ๐Ÿ’พ Automatic persistence

The watcher will:

  • Perform initial indexing of existing files
  • Monitor for file changes (create/modify/delete/move)
  • Update the index automatically
  • Handle rapid changes efficiently with debouncing
  • Continue running until interrupted (Ctrl+C)

Performance Benchmarking

The benchmark commands help measure and optimize performance:

# Benchmark document indexing
poetry run python -m gptme_rag benchmark indexing /path/to/documents \
  --pattern "**/*.md" \
  --persist-dir ./benchmark_index

# Benchmark search performance
poetry run python -m gptme_rag benchmark search /path/to/documents \
  --queries "python" "documentation" "example" \
  --n-results 10

# Benchmark file watching
poetry run python -m gptme_rag benchmark watch-perf /path/to/documents \
  --duration 10 \
  --updates-per-second 5

Features:

  • ๐Ÿ“Š Comprehensive metrics
    • Operation duration
    • Memory usage
    • Throughput
    • Custom metrics per operation
  • ๐Ÿ”ฌ Multiple benchmark types
    • Document indexing
    • Search operations
    • File watching
  • ๐Ÿ“ˆ Performance tracking
    • Memory efficiency
    • Processing speed
    • System resource usage

Example benchmark output:

โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”“
โ”ƒ Operation      โ”ƒ Duration(s) โ”ƒ Memory(MB) โ”ƒ Throughput โ”ƒ Additional Metrics โ”ƒ
โ”กโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ฉ
โ”‚ indexing       โ”‚      0.523 โ”‚     15.42 โ”‚   19.12/s โ”‚ files: 10         โ”‚
โ”‚ search         โ”‚      0.128 โ”‚      5.67 โ”‚   23.44/s โ”‚ queries: 3        โ”‚
โ”‚ file_watching  โ”‚      5.012 โ”‚      8.91 โ”‚    4.99/s โ”‚ updates: 25       โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

Document Chunking

The indexer supports automatic document chunking for efficient processing of large files:

# Index with custom chunk settings
poetry run python -m gptme_rag index /path/to/documents \
  --chunk-size 1000 \
  --chunk-overlap 200

# Search with chunk grouping
poetry run python -m gptme_rag search "your query" \
  --group-chunks \
  --n-results 5

Features:

  • ๐Ÿ”„ Streaming processing
    • Handles large files efficiently
    • Minimal memory usage
    • Progress reporting
  • ๐Ÿ“‘ Smart chunking
    • Configurable chunk size
    • Overlapping chunks for context
    • Token-aware splitting
  • ๐Ÿ” Enhanced search
    • Chunk-aware relevance
    • Result grouping by document
    • Full document reconstruction

Example Output:

Most Relevant Documents:

1. documentation.md#chunk2 (relevance: 0.85)
  Detailed section about configuration options, including chunk size and overlap settings.
  [Part of: documentation.md]

2. guide.md#chunk5 (relevance: 0.78)
  Example usage showing how to process large documents efficiently.
  [Part of: guide.md]

3. README.md#chunk1 (relevance: 0.72)
  Overview of the chunking system and its benefits for large document processing.
  [Part of: README.md]

Full Context:
Total tokens: 850
Documents included: 3 (from 3 source documents)
Truncated: False

The chunking system automatically:

  • Splits large documents into manageable pieces
  • Maintains context across chunk boundaries
  • Groups related chunks in search results
  • Provides document reconstruction when needed

Development

Running Tests

# Run all tests
poetry run pytest

# Run with coverage
poetry run pytest --cov=gptme_rag

Project Structure

gptme_rag/
โ”œโ”€โ”€ __init__.py
โ”œโ”€โ”€ cli.py               # CLI interface
โ”œโ”€โ”€ indexing/           # Document indexing
โ”‚   โ”œโ”€โ”€ document.py    # Document model
โ”‚   โ””โ”€โ”€ indexer.py     # ChromaDB integration
โ”œโ”€โ”€ query/             # Search functionality
โ”‚   โ””โ”€โ”€ context_assembler.py  # Context assembly
โ””โ”€โ”€ utils/             # Utility functions

Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Add tests for new functionality
  5. Run tests and linting
  6. Submit a pull request

Releases

Releases are automated through GitHub Actions. The process is:

  1. Update version in pyproject.toml
  2. Commit the change: git commit -am "chore: bump version to x.y.z"
  3. Create and push a tag: git tag vx.y.z && git push origin master vx.y.z
  4. Create a GitHub release (can be done with gh release create vx.y.z)
  5. The publish workflow will automatically:
    • Run tests
    • Build the package
    • Publish to PyPI

Integration with gptme

This package is designed to integrate with gptme as a plugin, providing:

  • Automatic context enhancement
  • Semantic search across project files
  • Knowledge base integration
  • Smart context assembly

License

MIT License. See LICENSE for details.

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

gptme_rag-0.3.0.tar.gz (21.9 kB view details)

Uploaded Source

Built Distribution

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

gptme_rag-0.3.0-py3-none-any.whl (23.7 kB view details)

Uploaded Python 3

File details

Details for the file gptme_rag-0.3.0.tar.gz.

File metadata

  • Download URL: gptme_rag-0.3.0.tar.gz
  • Upload date:
  • Size: 21.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.4 CPython/3.10.12 Linux/6.5.0-1025-azure

File hashes

Hashes for gptme_rag-0.3.0.tar.gz
Algorithm Hash digest
SHA256 72318084c134236080f83e72d7eb62dff6274b1594c81c68587b4577b7a9cb40
MD5 895206ea1ec54a489a3552febf140339
BLAKE2b-256 5a500cd11b6380a553bda1465d086ab601dfe847b02e5d4a1039ab06e0e767ca

See more details on using hashes here.

File details

Details for the file gptme_rag-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: gptme_rag-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 23.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.4 CPython/3.10.12 Linux/6.5.0-1025-azure

File hashes

Hashes for gptme_rag-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 76e0b8ffb0367971b33024815644c2d0c6db2922424d2e81093ef4db855e87e5
MD5 cc7804c3f17fa88c58b346c6293901b2
BLAKE2b-256 ad2537355111cb3f1229f0bdbe2b0cfeb62e2e9e6863b464e818deb670355eb4

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