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.
111 lines
3.2 KiB
TOML
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"]
|