Kreuzberg v4.0.0‑RC.8 사용 가능
Source: Dev.to
Announcement
Kreuzberg v4.0.0‑rc.8이 모든 채널에 출시되었습니다. 최종 v4.0.0 릴리스는 내년 초(몇 주 내)로 예정되어 있습니다.
What is Kreuzberg?
Kreuzberg는 56개 이상의 파일 형식에서 텍스트, 메타데이터, 표, 이미지 및 구조화된 데이터를 추출하는 문서‑인텔리전스 툴킷입니다.
- v1‑v3: 순수 Python 구현.
- v4: Rust(2024 edition)로 완전 재작성되었으며, 여러 언어에 대한 네이티브 바인딩을 제공해 제로‑코스트 추상화, 메모리 안전성 및 네이티브 성능을 제공합니다.
Language Bindings
| Language / Runtime | Binding Type |
|---|---|
| Rust | Native library |
| Python | PyO3 native bindings |
| TypeScript (Node.js) | NAPI‑RS native bindings |
| TypeScript (Deno / Browser / Edge) | WebAssembly |
| Ruby | Magnus FFI |
| Java 25+ | Panama Foreign Function & Memory API |
| C# | P/Invoke |
| Go | cgo bindings |
Upcoming bindings
- PHP
- Elixir (via Rustler, with Erlang & Gleam interop)
Installation Options
- CLI –
cargo또는 Homebrew 로 설치. - HTTP REST API server (Axum).
- Model Context Protocol (MCP) server for Claude Desktop / Continue.dev.
- Docker images (공개 제공).
Architectural Improvements
- Rust의 소유권 모델을 활용한 제로‑복사 연산.
- Tokio 런타임을 이용한 진정한 비동기 동시성 (GIL 없음).
- 다중 GB 파일에 대한 상수 메모리 처리를 위한 스트리밍 파서.
- 토큰 감소 및 문자열 연산을 위한 SIMD 가속 텍스트 처리.
- 모든 언어 바인딩에 대한 메모리‑안전 FFI 경계.
- 확장성을 위한 트레이트 기반 플러그인 시스템.
v3 → v4 Comparison
| Feature | v3 (Python) | v4 (Rust) |
|---|---|---|
| Core Language | Pure Python | Rust (2024 edition) |
| Supported Formats | 30‑40 (via Pandoc) | 56+ (native parsers) |
| Language Bindings | Python only | 7 languages (Rust, Python, TS, Ruby, Java, Go, C#) |
| Dependencies | Requires Pandoc (system binary) | Zero system dependencies |
| Embeddings | Not supported | FastEmbed with ONNX (3 presets + custom) |
| Semantic Chunking | External library | Built‑in (text + markdown‑aware) |
| Token Reduction | TF‑IDF based | Enhanced with 3 configurable modes |
| Language Detection | Optional (fast‑langdetect) | Built‑in (68 languages) |
| Keyword Extraction | Optional (KeyBERT) | Built‑in (YAKE + RAKE) |
| OCR Backends | Tesseract/EasyOCR/PaddleOCR | Same + tighter integration |
| Plugin System | Limited extractor registry | Full trait‑based system (4 plugin types) |
| Page Tracking | Character‑based indices | Byte‑based indices with O(1) lookup |
| Servers | REST API (Litestar) | HTTP (Axum) + MCP + MCP‑SSE |
| Installation Size | ~100 MB base | 16‑31 MB complete |
| Memory Model | Python heap | RAII with streaming |
| Concurrency | asyncio (GIL‑limited) | Tokio work‑stealing |
From Pandoc to Native Parsers
v3 limitations (Pandoc):
- 시스템 수준 의존성 및 설치 오버헤드.
- 문서마다 서브프로세스 생성.
- 스트리밍 지원 없음.
- 제한된 메타데이터 추출.
- 약 500 MB 설치 용량.
v4 advantages (native Rust parsers):
- 외부 의존성 전무.
- 추출에 대한 완전한 제어를 제공하는 직접 파싱.
- 훨씬 풍부한 메타데이터 (예: DOCX 속성, 섹션 구조, 스타일).
- 대용량 파일에 대한 스트리밍 지원 (다중 GB XML 테스트 완료).
- 예시: PPTX 추출기가 이제 기가바이트 규모 프레젠테이션을 상수 메모리 사용으로 스트리밍 처리합니다.
Expanded Format Support
Newly supported legacy formats:
.doc(Word 97‑2003).ppt(PowerPoint 97‑2003).xls(Excel 97‑2003).eml(Email).msg(Outlook)
Academic/technical formats:
- LaTeX (
.tex) - BibTeX (
.bib) - Typst (
.typ) - JATS XML (scientific articles)
- DocBook XML
- FictionBook (
.fb2) - OPML (
.opml)
Improved Office support:
- Excel binary/macros (
.xlsb,.xlsm) - DOCX/PPTX/XLSX에서 풍부한 메타데이터 추출
- 프레젠테이션에서 전체 표 추출
- 이미지 추출 및 중복 제거
New Features for RAG & LLM Workflows
Embeddings (FastEmbed)
- ONNX Runtime 가속.
- 프리셋: fast (384 d), balanced (512 d), quality (768 d/1024 d).
- 커스텀 ONNX 모델 지원.
- 로컬 생성 (외부 API 호출 없음, 속도 제한 없음).
- 자동 모델 다운로드 및 캐싱.
Example (Python)
from kreuzberg import ExtractionConfig, EmbeddingConfig, EmbeddingModelType
config = ExtractionConfig(
embeddings=EmbeddingConfig(
model=EmbeddingModelType.preset("balanced"),
normalize=True
)
)
result = kreuzberg.extract_bytes(pdf_bytes, config=config)
# result.embeddings contains a vector for each chunk
Semantic Text Chunking (Built‑in)
- 문서 의미를 고려한 구조 기반 청킹.
- 두 가지 전략:
- Generic – 공백/구두점 인식.
- Markdown – 헤딩, 리스트, 코드 블록, 표 유지.
- 청크 크기 및 오버랩 설정 가능.
- Unicode‑안전 (CJK, 이모지 처리).
- 청크를 페이지와 매핑하고 바이트 정확도 오프셋 제공.
Byte‑Accurate Page Tracking (Breaking Change)
- v3: 문자 기반 인덱스(UTF‑8 다중 바이트 문자에 부정확).
- v4: 바이트 기반 인덱스(
byte_start/byte_end) – 모든 문자열 연산에 정확. - O(1) 조회: “바이트 오프셋 X를 포함하는 페이지는?”
- 페이지별 콘텐츠 추출 및 페이지 마커(
--- Page 5 ---등) 지원.
Enhanced Token Reduction
LLM 컨텍스트 크기를 줄이는 세 가지 설정 가능한 모드:
| Mode | Approx. Reduction |
|---|---|
| Light | ~15 % |
| Moderate | ~30 % |
| Aggressive | ~50 % |
TF‑IDF 문장 점수, 위치 가중치, 언어별 불용어 필터링 및 SIMD 가속을 사용해 구현.
Language Detection (Built‑in)
- 68개 언어 지원 및 신뢰도 점수 제공.
- 혼합 언어 문서 처리 가능.
- ISO 639‑1 & ISO 639‑3 코드 제공.
- 신뢰도 임계값 설정 가능.
Keyword Extraction (Built‑in)
- YAKE – 비지도, 언어 독립적.
- RAKE – 빠른 통계적 방법.
- n‑gram(1‑3단어) 설정 가능.
- 언어별 불용어를 고려한 관련도 점수 제공.
Plugin System
네 가지 확장 가능한 플러그인 유형:
- DocumentExtractor – 사용자 정의 파일 형식 핸들러.
- OcrBackend – 사용자 정의 OCR 엔진 통합(파이썬 모델 포함).
- PostProcessor – 데이터 변환 및 풍부화.
- Validator – 추출 전 검증.
플러그인은 Rust에서 정의되며 모든 언어 바인딩에서 동작합니다; Python/TypeScript에서도 스레드‑안전 콜백을 Rust 코어에 전달할 수 있습니다.
Production‑Ready Servers
- HTTP REST API – OpenAPI 문서가 포함된 Axum 서버.
- MCP Server – Claude Desktop, Continue.dev 등과 직접 통합.
- MCP‑SSE Transport (RC.8) – WebSocket 지원이 없는 환경을 위한 Server‑Sent Events.
모든 서버 모드는 동일한 기능 세트를 공유합니다: 추출, 배치 처리 및 캐싱.
자세한 내용은 공식 Kreuzberg 문서 및 릴리스 노트를 참고하십시오.