1"""Context compression strategies for RAG systems.
2
3This module provides various compression techniques to reduce token usage
4while maintaining semantic content and relevance:
5
6- Extractive compression: Select most relevant sentences
7- Abstractive compression: LLM-based summarization
8- Reranking-based compression: Rerank and filter by relevance
9- Token-based compression: Truncate to token limits
10- Semantic deduplication: Remove redundant information
11
12Examples:
13 >>> from lexigram.ai.rag.context_compression import (
14 ... ExtractiveSummaryCompressor,
15 ... AbstractiveCompressor,
16 ... TokenLimitCompressor,
17 ... )
18 >>>
19 >>> # Extractive compression
20 >>> compressor = ExtractiveSummaryCompressor(max_sentences=3)
21 >>> compressed = await compressor.compress(context, query="What is AI?")
22 >>>
23 >>> # Abstractive compression with LLM
24 >>> compressor = AbstractiveCompressor(llm_client=llm, max_tokens=100)
25 >>> compressed = await compressor.compress(context, query="Explain ML")
26 >>>
27 >>> # Token limit compression
28 >>> compressor = TokenLimitCompressor(max_tokens=500)
29 >>> compressed = await compressor.compress(context)
30
31"""
32
33from __future__ import annotations
34
35from lexigram.ai.rag.context_compression.abstractive import AbstractiveCompressor
36from lexigram.ai.rag.context_compression.base import AbstractCompressor
37from lexigram.ai.rag.context_compression.compress import compress_context
38from lexigram.ai.rag.context_compression.extractive import ExtractiveSummaryCompressor
39from lexigram.ai.rag.context_compression.hybrid import HybridCompressor
40from lexigram.ai.rag.context_compression.semantic_dedup import (
41 SemanticDeduplicationCompressor,
42)
43from lexigram.ai.rag.context_compression.token_limit import TokenLimitCompressor
44from lexigram.ai.rag.context_compression.types import (
45 CompressionResult,
46 CompressionStrategy,
47)
48
49__all__ = [
50 "AbstractCompressor",
51 "AbstractiveCompressor",
52 "CompressionResult",
53 "CompressionStrategy",
54 "ExtractiveSummaryCompressor",
55 "HybridCompressor",
56 "SemanticDeduplicationCompressor",
57 "TokenLimitCompressor",
58 "compress_context",
59]