rag.indexing
Classes
- class BM25Index(k1=1.5, b=0.75, epsilon=0.25)[source]
Bases:
objectBM25 sparse index for keyword-based retrieval.
Implements the Okapi BM25 algorithm for text relevance scoring. Used alongside vector search for hybrid retrieval.
- Parameters:
- add_documents(documents, id_key='id', content_key='content')[source]
Add multiple documents to the index.
- class ChunkDeduplicator(mode='exact', similarity_threshold=0.95)[source]
Bases:
objectDetect and filter duplicate/near-duplicate chunks.
Supports multiple deduplication modes: - exact: Hash-based exact content matching - similarity: Embedding cosine similarity threshold
- Parameters:
Example
>>> dedup = ChunkDeduplicator(mode="exact") >>> chunks, embeddings = dedup.filter_duplicates(chunks, embeddings)
- is_duplicate(content, embedding=None)[source]
Check if chunk is a duplicate of previously seen content.
- class ContextualEmbeddings(context_template=None, max_context_length=200)[source]
Bases:
objectGenerate embeddings with document context prepended.
Prepends document context (title, summary, or preceding content) to each chunk before embedding, improving semantic understanding.
- Parameters:
- DEFAULT_CONTEXT_TEMPLATE = 'Document: {title}\n\nSection: {section}\n\n{chunk}'
- prepare_chunk_for_embedding(chunk_content, document_title=None, section_header=None, document_summary=None, preceding_context=None)[source]
Prepare a chunk with context for embedding.
- Parameters:
- Returns:
Context-enhanced text for embedding.
- Return type:
- class HierarchicalIndex(include_parent_context=True)[source]
Bases:
objectIndex for hierarchical chunk storage and retrieval.
Stores both parent and child chunks, enabling: - Fine-grained search on child chunks - Parent context retrieval for matched children
- Parameters:
include_parent_context (bool) – Whether to include parent content in results.
- add_chunk(chunk_id, content, embedding=None, parent_id=None, hierarchy_level=0, metadata=None)[source]
Add a chunk to the hierarchical index.
- Parameters:
chunk_id (str) – Unique chunk identifier.
content (str) – Chunk text content.
embedding (list[float] | None) – Chunk embedding vector (optional).
parent_id (str | None) – Parent chunk ID (None for root/parent chunks).
hierarchy_level (int) – Level in hierarchy (0=parent, 1+=children).
metadata (dict[str, Any] | None) – Optional metadata dictionary.
- Return type:
None
- enhance_results_with_context(results, include_parent=None)[source]
Enhance search results with parent context.
- class LateChunkingEmbeddings(embedding_model=None)[source]
Bases:
objectLate chunking strategy for token-level embeddings.
Instead of embedding chunks separately, embeds the full document and extracts chunk-level representations from the token embeddings.
This is a placeholder for ColBERT-style late interaction embeddings. Full implementation would require a model that outputs token-level embeddings and late interaction scoring.
- Parameters:
embedding_model (Any | None) – The underlying embedding model.