Quickstart¶
Get started with COSMIC in minutes.
Basic Usage¶
Python API¶
from cosmic import COSMICChunker, Document
# Initialize chunker with default configuration
chunker = COSMICChunker()
# Create document from text
doc = Document.from_text("""
Your document text here. COSMIC will analyze the structure,
detect semantic boundaries, and create coherent chunks.
This is a new paragraph about a different topic.
The chunker will identify this as a potential boundary.
""")
# Chunk with automatic strategy selection
chunks = chunker.chunk_document(doc, strategy="auto")
# Access chunk data
for chunk in chunks:
print(f"Domain: {chunk.domain}")
print(f"Coherence: {chunk.coherence_score:.2f}")
print(f"Text: {chunk.text[:100]}...")
print("---")
CLI¶
# Basic chunking
cosmic chunk document.txt
# Save to JSON
cosmic chunk document.txt --output chunks.json
# Use full pipeline with Ollama
cosmic chunk document.txt --strategy full --ollama auto
Strategies¶
COSMIC offers multiple chunking strategies:
| Strategy | Description | Best For |
|---|---|---|
auto |
Automatically selects based on document | General use (recommended) |
full |
Complete 6-stage pipeline | Well-structured documents |
semantic |
DCS-based boundaries only | Documents with clear topics |
sliding |
Similarity-based sliding window | Speed-critical applications |
fixed |
Token-based splitting | Baseline comparisons |
# Strategy selection
chunks = chunker.chunk_document(doc, strategy="full")
chunks = chunker.chunk_document(doc, strategy="semantic")
chunks = chunker.chunk_document(doc, strategy="sliding")
chunks = chunker.chunk_document(doc, strategy="fixed")
Document Creation¶
from cosmic import Document
# From plain text
doc = Document.from_text(
text="Your text content...",
doc_id="my-document",
metadata={"source": "user-upload"},
)
# Access properties
print(f"Document ID: {doc.id}")
print(f"Sentences: {doc.num_sentences}")
Configuration¶
Environment Variables¶
Create a .env file:
# LLM Provider
COSMIC_LLM_PROVIDER=ollama
# Embedding device
COSMIC_EMBEDDING_DEVICE=cuda # or cpu, mps
Custom Configuration¶
from cosmic import COSMICChunker, COSMICConfig
from cosmic.core.config import DCSConfig, ChunkConstraints
config = COSMICConfig(
dcs=DCSConfig(
alpha=0.5, # Topical coherence weight
beta=0.3, # Coreference weight
gamma=0.2, # Discourse marker weight
),
chunk_constraints=ChunkConstraints(
min_tokens=50,
max_tokens=1024,
target_tokens=512,
),
)
chunker = COSMICChunker(config=config)
Load from YAML¶
Output Format¶
Each chunk contains rich metadata:
chunk.chunk_id # Unique identifier
chunk.text # Chunk content
chunk.token_count # Token count
chunk.domain # Classified domain
chunk.coherence_score # Internal coherence (0-1)
chunk.cross_references # Related chunk IDs
chunk.intent # Primary intent (define, explain, etc.)
Next Steps¶
- CLI Reference - Full command-line documentation
- Configuration - Detailed configuration options
- API Reference - Complete API documentation
- Ollama Integration - Local LLM setup