rag 0.1.0

A Rust library and CLI for Retrieval-Augmented Generation
Documentation
use rag::ingestion::{PdfSource, Source};
use std::env;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    println!("=== PDF Ingestion Example ===\n");

    let pdf_path = env::args()
        .nth(1)
        .unwrap_or_else(|| {
            eprintln!("Usage: cargo run --example ingest_pdf -- <path/to/file.pdf>");
            std::process::exit(1);
        });

    println!("Loading PDF: {}\n", pdf_path);

    let src = PdfSource::new(&pdf_path);
    let docs = src.extract().await?;

    for doc in &docs {
        println!("Source: {}", doc.source);
        println!("Format: {}", doc.metadata.get("format").unwrap_or(&"unknown".to_string()));
        println!("Path: {}", doc.metadata.get("path").unwrap_or(&"unknown".to_string()));
        println!(
            "Content length: {} characters",
            doc.content.len()
        );
        println!("\n--- Content Preview (first 500 chars) ---");
        let preview = if doc.content.len() > 500 {
            format!("{}...", &doc.content[..500])
        } else {
            doc.content.clone()
        };
        println!("{}\n", preview);
    }

    println!("Demo completed successfully!");
    Ok(())
}