[package]
name = "lvv"
version = "0.4.3"
edition = "2024"
license = "Apache-2.0"
description = "A pipeline for embedding datasets with LLMs (Ollama/OpenAI) and loading them into a Qdrant vector database, with caching and job queuing."
repository = "https://github.com/egonik-unlp/lvv"

[features]
default = []
# Enables the PostgreSQL connectors: `intake::PostgresSource` and the
# `db::PostgresSink` ("internal lensing project database" sink).
postgres = ["dep:tokio-postgres"]
# Enables `intake::SqlSource` for SQLite (rusqlite) and MySQL (mysql_async).
sql = ["dep:rusqlite", "dep:mysql_async"]
# Enables `intake::HttpSource` (paginated REST over reqwest).
http = ["dep:reqwest"]

[dependencies]
anyhow = "1.0.100"
async-openai = "0.30.1"
async-trait = "0.1.89"
csv = "1.3.1"
tokio-postgres = { version = "0.7", features = [
  "with-serde_json-1",
], optional = true }
chrono = { version = "0.4.42", features = ["serde"] }
derive_builder = "0.20.2"
dotenvy = "0.15.7"
llm = "1.3.4"
qdrant-client = { version = "1.15.0", features = ["serde"] }
rand = "0.9.2"
schemars = { version = "1.0.4", features = ["chrono04"] }
serde = { version = "1.0.228", features = ["derive"] }
serde_json = "1.0.145"
thiserror = "2.0.17"
tokio = { version = "1.47.1", features = ["full"] }
toml = "0.9.8"
indicatif = "0.18.2"
uuid = "1.18.1"
clap = { version = "4.5.51", features = ["derive"] }
# Pinned to 0.37 (libsqlite3-sys 0.35): matches burn-dataset in downstream
# uses the unstable `cfg_select!` macro (needs a newer rustc than 1.93).
rusqlite = { version = "0.37", features = ["bundled"], optional = true }
mysql_async = { version = "0.37.0", optional = true }
reqwest = { version = "0.12", default-features = false, features = ["json", "rustls-tls"], optional = true }
