haiku.rag/haiku_rag_slim/pyproject.toml
Yiorgis Gozadinos 581ddf4f41
Bound vacuum compaction memory on the tables holding docling blobs
Vacuum compacts documents and document_items through lance directly
with a fragment target derived from storage.compaction_target_bytes
(default 2 GiB), instead of AsyncTable.optimize, whose default
1,048,576-row fragment target re-merges the whole table on every pass
and peaks at 5-6x the table's bytes. The target is sized from the
widest fragment's bytes per row, so peak memory is bounded by the
target instead of the corpus. lancedb's async API exposes no
compaction options (lancedb/lancedb#2325), hence the pylance
dependency.
2026-09-04 10:35:26 +03:00

111 lines
3.2 KiB
TOML

[project]
name = "haiku.rag-slim"
description = "Local-first agentic RAG with citations - hybrid search, reranking and multimodal retrieval over your own documents, no database server required - Minimal dependencies"
version = "0.82.1"
authors = [{ name = "Yiorgis Gozadinos", email = "ggozadinos@gmail.com" }]
license = { text = "MIT" }
readme = { file = "README.md", content-type = "text/markdown" }
requires-python = ">=3.12"
keywords = [
"RAG",
"agentic-rag",
"lancedb",
"vector-database",
"hybrid-search",
"reranking",
"multimodal-rag",
"embeddings",
"citations",
"document-ingestion",
"mcp",
"mcp-server",
"pydantic-ai",
"docling",
]
classifiers = [
"Development Status :: 4 - Beta",
"Environment :: Console",
"Intended Audience :: Developers",
"Operating System :: Microsoft :: Windows :: Windows 10",
"Operating System :: Microsoft :: Windows :: Windows 11",
"Operating System :: MacOS",
"Operating System :: POSIX :: Linux",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Typing :: Typed",
]
dependencies = [
"docling-core>=2.82.0,<3.0.0",
"httpx>=0.28.1",
"jinja2>=3.1.0",
"fastmcp>=3.3.0",
"lancedb==0.37.1",
"pylance==10.0.0",
"pathspec>=1.0.4",
"pydantic>=2.12.5",
"pydantic-ai-slim[openai,logfire,ag-ui]>=2.18.0,<3.0.0",
"pydantic-monty>=0.0.19",
"pypdfium2>=5.0",
"python-dotenv>=1.2.2",
"pyyaml>=6.0.3",
"rich>=14.3.3",
"textual-image>=0.8.5",
"typer>=0.21.0,<0.22.0",
"watchfiles>=1.1.1",
"zstandard>=0.23.0; python_version<'3.14'",
]
[project.urls]
Homepage = "https://ggozad.github.io/haiku.rag/"
Documentation = "https://ggozad.github.io/haiku.rag/"
Repository = "https://github.com/ggozad/haiku.rag"
Issues = "https://github.com/ggozad/haiku.rag/issues"
Changelog = "https://ggozad.github.io/haiku.rag/changelog/"
[project.optional-dependencies]
# Document processing
docling = ["docling>=2.102.2,<3.0.0", "opencv-python-headless>=4.6.0.66,<5.0.0.0"]
# S3 / object-storage monitoring
s3 = ["obstore>=0.9,<0.10"]
# Embedding providers
voyageai = ["pydantic-ai-slim[voyageai]"]
# Rerankers
cohere = ["cohere>=5.21.1"]
zeroentropy = ["zeroentropy>=0.1.0a11"]
jina = ["transformers>=4.40.0", "torch>=2.0.0"]
cross-encoder = ["sentence-transformers>=3.0.0"]
# Production ingester (queue, workers, API)
ingester = [
"fastapi>=0.125",
"uvicorn[standard]>=0.32",
"sqlalchemy[asyncio]>=2.0",
"aiosqlite>=0.20",
"asyncpg>=0.29",
"haiku.rag-slim[s3]",
]
# TUI (chat and inspect commands)
tui = [
"textual>=8.2.4",
"tree-sitter>=0.25.2",
"tree-sitter-json>=0.24.8",
]
# Model providers (delegated to pydantic-ai-slim)
anthropic = ["pydantic-ai-slim[anthropic]"]
groq = ["pydantic-ai-slim[groq]"]
google = ["pydantic-ai-slim[google]"]
mistral = ["pydantic-ai-slim[mistral]"]
bedrock = ["pydantic-ai-slim[bedrock]"]
vertexai = ["pydantic-ai-slim[google]"]
[project.scripts]
haiku-rag = "haiku.rag.cli:cli"
haiku-ingester = "haiku.rag.ingester.cli:cli"
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
[tool.hatch.build.targets.wheel]
packages = ["haiku"]