ssearch/pyproject.toml

52 lines
1.9 KiB
TOML

[project]
name = "ssearch"
version = "0.1.0"
description = "Semantic search over a personal journal archive and a clippings library (RAG: LlamaIndex + HuggingFace embeddings + Ollama/OpenAI)."
readme = "README.md"
requires-python = ">=3.12"
license = { text = "MIT" }
authors = [{ name = "E. M. Furst" }]
dependencies = [
# --- RAG framework (version-sensitive: pinned exactly) ---
"llama-index-core==0.14.24",
"llama-index-embeddings-huggingface==0.8.0",
"llama-index-readers-file==0.7.0",
"llama-index-llms-ollama==0.11.0",
"llama-index-llms-openai==0.8.1",
"llama-index-retrievers-bm25==0.8.0",
"llama-index-vector-stores-chroma==0.6.0",
# --- Vector store (clippings) ---
"chromadb==1.5.9",
# --- Embeddings / cross-encoder re-ranking (pulls torch) ---
# sentence-transformers 6.x requires transformers>=5 and huggingface-hub>=1.3.
# These were previously pinned at transformers==4.55.0 / hub==0.34.4 after an
# update broke offline model loading (AutoTokenizer phoning home; devlog
# 2026-02-20). That pin had started holding sentence-transformers at 5.5.1,
# so it was lifted 2026-09-20 and the offline path re-verified.
# Upper bounds only -- majors are the ones that bite.
"sentence-transformers>=6.1.0,<7.0.0",
"transformers>=5.17.0,<6.0.0",
"huggingface-hub>=1.32.0,<2.0.0",
# --- Keyword search / document loaders ---
"nltk>=3.9.1",
# --- eval harness (eval/, see EVAL_PLAN.md) ---
"pyyaml>=6.0",
"beautifulsoup4>=4.13.4",
"striprtf>=0.0.26",
"pypdf>=6.7.1",
]
[dependency-groups]
# Analysis + exploration notebooks (not needed to run the search pipeline).
# Install with: uv sync --group notebook
notebook = [
"jupyter>=1.1.1",
"ipykernel>=6.30.0",
"ipywidgets>=8.1.0",
"matplotlib>=3.10.0",
"seaborn>=0.13.0",
"pandas>=2.2.0",
"scikit-learn>=1.7.0",
"scipy>=1.16.0",
]