[package]
name = "graphrag-core"
version.workspace = true
edition.workspace = true
authors.workspace = true
license.workspace = true
repository.workspace = true
description = "Core portable library for GraphRAG - works on native and WASM"
keywords = ["graphrag", "knowledge-graph", "rag", "llm", "ai"]
categories = ["algorithms", "science", "text-processing"]
[features]
default = ["memory-storage", "basic-retrieval", "parallel-processing", "async", "ureq"]
async = ["tokio", "futures", "tracing"]
ureq = ["dep:ureq"]
memory-storage = []
persistent-storage = ["arrow", "parquet"]
basic-retrieval = []
graph-retrieval = []
hybrid-retrieval = ["basic-retrieval", "graph-retrieval"]
pagerank = ["sprs", "nalgebra", "parking_lot", "lru"]
parallel-processing = ["rayon", "num_cpus"]
function-calling = []
vector-hnsw = ["instant-distance"]
monitoring = []
benchmarking = []
yaml-support = ["serde_yaml"]
toml-support = []
serde_json = []
json5-support = ["json5", "jsonschema"]
caching = ["moka", "tracing"]
incremental = ["parking_lot", "dashmap"]
rograg = ["derive_more", "strum", "itertools", "tap"]
api = ["axum", "tower", "tower-http", "async"]
tracing = ["dep:tracing", "tracing-subscriber"]
async-traits = []
lightrag = []
lazygraphrag = ["text-splitter", "lightrag"]
e2graphrag = ["lightrag"]
tobugraph = []
redis_storage = ["redis", "async", "bincode"]
leiden = []
cross-encoder = []
code-chunking = ["tree-sitter", "tree-sitter-rust"]
neural-embeddings = ["dirs", "candle-core", "candle-nn", "candle-transformers"]
huggingface-hub = ["hf-hub", "dirs"]
corpus-processing = ["tracing", "async"]
ollama = ["ollama-rs", "async"]
wasm = ["wasm-bindgen", "web-sys", "js-sys", "serde-wasm-bindgen", "getrandom"]
cuda = ["neural-embeddings", "candle-core/cuda"]
metal = ["neural-embeddings", "candle-core/metal"]
[dependencies]
petgraph = { workspace = true }
indexmap = { workspace = true }
text_analysis = "0.3"
regex = { workspace = true }
ureq = { workspace = true, optional = true }
json = { workspace = true }
serde = { workspace = true }
chrono = { workspace = true }
log = "0.4"
text-splitter = { version = "0.18", optional = true, default-features = false }
instant-distance = { workspace = true, optional = true }
rayon = { workspace = true, optional = true }
num_cpus = { workspace = true, optional = true }
sprs = { workspace = true, optional = true }
nalgebra = { workspace = true, optional = true }
parking_lot = { workspace = true, optional = true }
lru = { workspace = true, optional = true }
serde_json = { workspace = true }
serde_yaml = { workspace = true, optional = true }
toml = { workspace = true }
json5 = { version = "0.4", optional = true }
jsonschema = { version = "0.18", optional = true, default-features = false }
csv = { version = "1.3" }
arrow = { version = "52", optional = true, default-features = false, features = ["ipc"] }
parquet = { version = "52", optional = true, default-features = false, features = ["arrow", "snap"] }
rand = { version = "0.8", features = ["getrandom"] }
tokio = { version = "1.0", features = ["full"], optional = true }
futures = { workspace = true, optional = true }
async-trait = { workspace = true }
axum = { workspace = true, optional = true }
tower = { workspace = true, optional = true }
tower-http = { workspace = true, optional = true }
tracing = { workspace = true, optional = true }
tracing-subscriber = { workspace = true, optional = true }
ollama-rs = { workspace = true, optional = true }
jsonfixer = { workspace = true }
moka = { workspace = true, optional = true }
redis = { workspace = true, optional = true }
bincode = { workspace = true, optional = true }
sha2 = { workspace = true }
flate2 = { workspace = true }
indicatif = "0.17"
uuid = { workspace = true, features = ["js"] }
dashmap = { workspace = true, optional = true }
thiserror = { workspace = true }
getrandom = { version = "0.2", features = ["js"], optional = true }
derive_more = { workspace = true, optional = true }
strum = { workspace = true, optional = true }
itertools = { workspace = true, optional = true }
tap = { workspace = true, optional = true }
candle-core = { workspace = true, optional = true }
candle-nn = { workspace = true, optional = true }
candle-transformers = { workspace = true, optional = true }
dirs = { version = "5.0", optional = true }
hf-hub = { version = "0.3", optional = true, default-features = false, features = ["tokio", "online"] }
tree-sitter = { version = "0.22", optional = true }
tree-sitter-rust = { version = "0.21", optional = true }
serde-wasm-bindgen = { version = "0.6", optional = true }
wasm-bindgen = { workspace = true, optional = true }
web-sys = { workspace = true, optional = true }
js-sys = { workspace = true, optional = true }
[target.'cfg(target_arch = "wasm32")'.dependencies]
getrandom = { version = "0.2", features = ["js"] }
[target.'cfg(not(any(target_os = "macos", target_arch = "wasm32")))'.dependencies]
[target.'cfg(target_os = "macos")'.dependencies]
[dev-dependencies]
criterion = { version = "0.5", features = ["html_reports"] }
pretty_assertions = "1.4"
proptest = "1.4"
tempfile = "3.8"
[lib]
crate-type = ["rlib", "cdylib"]