Kreuzberg v4.0.0‑RC.8 사용 가능

발행: (2025년 12월 15일 오후 10:06 GMT+9)
7 min read
원문: Dev.to

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 / RuntimeBinding Type
RustNative library
PythonPyO3 native bindings
TypeScript (Node.js)NAPI‑RS native bindings
TypeScript (Deno / Browser / Edge)WebAssembly
RubyMagnus FFI
Java 25+Panama Foreign Function & Memory API
C#P/Invoke
Gocgo bindings

Upcoming bindings

  • PHP
  • Elixir (via Rustler, with Erlang & Gleam interop)

Installation Options

  • CLIcargo 또는 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

Featurev3 (Python)v4 (Rust)
Core LanguagePure PythonRust (2024 edition)
Supported Formats30‑40 (via Pandoc)56+ (native parsers)
Language BindingsPython only7 languages (Rust, Python, TS, Ruby, Java, Go, C#)
DependenciesRequires Pandoc (system binary)Zero system dependencies
EmbeddingsNot supportedFastEmbed with ONNX (3 presets + custom)
Semantic ChunkingExternal libraryBuilt‑in (text + markdown‑aware)
Token ReductionTF‑IDF basedEnhanced with 3 configurable modes
Language DetectionOptional (fast‑langdetect)Built‑in (68 languages)
Keyword ExtractionOptional (KeyBERT)Built‑in (YAKE + RAKE)
OCR BackendsTesseract/EasyOCR/PaddleOCRSame + tighter integration
Plugin SystemLimited extractor registryFull trait‑based system (4 plugin types)
Page TrackingCharacter‑based indicesByte‑based indices with O(1) lookup
ServersREST API (Litestar)HTTP (Axum) + MCP + MCP‑SSE
Installation Size~100 MB base16‑31 MB complete
Memory ModelPython heapRAII with streaming
Concurrencyasyncio (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)

  • 문서 의미를 고려한 구조 기반 청킹.
  • 두 가지 전략:
    1. Generic – 공백/구두점 인식.
    2. 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 컨텍스트 크기를 줄이는 세 가지 설정 가능한 모드:

ModeApprox. 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

네 가지 확장 가능한 플러그인 유형:

  1. DocumentExtractor – 사용자 정의 파일 형식 핸들러.
  2. OcrBackend – 사용자 정의 OCR 엔진 통합(파이썬 모델 포함).
  3. PostProcessor – 데이터 변환 및 풍부화.
  4. 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 문서 및 릴리스 노트를 참고하십시오.

Back to Blog

관련 글

더 보기 »