```dart title="Dart" import 'dart:typed_data'; import 'package:kreuzberg/kreuzberg.dart'; class VectorRecord { VectorRecord({ required this.id, required this.content, required this.embedding, required this.metadata, }); final String id; final String content; final Float64List embedding; final Map metadata; } Future> extractAndVectorize( String documentPath, String documentId, ) async { final config = ExtractionConfig( useCache: true, enableQualityProcessing: true, forceOcr: false, disableOcr: false, chunking: const ChunkingConfig( maxCharacters: 512, overlap: 50, trim: true, chunkerType: ChunkerType.text, sizing: ChunkSizing.characters(), prependHeadingContext: false, embedding: EmbeddingConfig( model: EmbeddingModelType.preset(name: 'balanced'), normalize: true, batchSize: 32, showDownloadProgress: false, ), ), resultFormat: ResultFormat.unified, outputFormat: OutputFormat.plain(), includeDocumentStructure: false, maxArchiveDepth: 3, useLayoutForMarkdown: false, ); final result = await KreuzbergBridge.extractFile(documentPath, null, config); final records = []; final chunks = result.chunks ?? const []; for (var index = 0; index < chunks.length; index++) { final chunk = chunks[index]; final embedding = chunk.embedding; if (embedding == null) { continue; } records.add(VectorRecord( id: '${documentId}_chunk_$index', content: chunk.content, embedding: embedding, metadata: { 'document_id': documentId, 'chunk_index': index.toString(), 'content_length': chunk.content.length.toString(), }, )); } return records; } Future main() async { final records = await extractAndVectorize('document.pdf', 'doc-001'); print('Vector records: ${records.length}'); } ```