```go title="Go"
package main

import (
	"fmt"
	"log"

	"github.com/kreuzberg-dev/kreuzberg/packages/go/v5"
)

func main() {
	maxChars := 512
	maxOverlap := 50
	config := &kreuzberg.ExtractionConfig{
		Chunking: &kreuzberg.ChunkingConfig{
			MaxChars:   &maxChars,
			MaxOverlap: &maxOverlap,
			Embedding: &kreuzberg.EmbeddingConfig{
				Model:     "balanced",
				Normalize: true,
			},
		},
	}

	result, err := kreuzberg.ExtractFileSync("document.pdf", config)
	if err != nil {
		log.Fatalf("extract failed: %v", err)
	}

	if result.Chunks != nil {
		for i, chunk := range result.Chunks {
			if chunk.Embedding != nil {
				fmt.Printf("Chunk %d: %d dimensions\n", i, len(chunk.Embedding))
				// Store in vector database
			}
		}
	}
}
```
