[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", ]