quivr/backend/core/pyproject.toml
Jacopo Chevallard ef90e8e672
feat: introducing configurable retrieval workflows (#3227)
# Description

Major PR which, among other things, introduces the possibility of easily
customizing the retrieval workflows. Workflows are based on LangGraph,
and can be customized using a [yaml configuration
file](core/tests/test_llm_endpoint.py), and adding the implementation of
the nodes logic into
[quivr_rag_langgraph.py](1a0c98437a/backend/core/quivr_core/quivr_rag_langgraph.py)

This is a first, simple implementation that will significantly evolve in
the coming weeks to enable more complex workflows (for instance, with
conditional nodes). We also plan to adopt a similar approach for the
ingestion part, i.e. to enable user to easily customize the ingestion
pipeline.

Closes CORE-195, CORE-203, CORE-204

## Checklist before requesting a review

Please delete options that are not relevant.

- [X] My code follows the style guidelines of this project
- [X] I have performed a self-review of my code
- [X] I have commented hard-to-understand areas
- [X] I have ideally added tests that prove my fix is effective or that
my feature works
- [X] New and existing unit tests pass locally with my changes
- [X] Any dependent changes have been merged

## Screenshots (if appropriate):
2024-09-23 09:11:06 -07:00

75 lines
1.7 KiB
TOML

[project]
name = "quivr-core"
version = "0.0.16"
description = "Quivr core RAG package"
authors = [
{ name = "Stan Girard", email = "stan@quivr.app" }
]
dependencies = [
"pydantic>=2.8.2",
"langchain-core>=0.2.38",
"langchain>=0.2.14,<0.3.0",
"langgraph>=0.2.14",
"httpx>=0.27.0",
"rich>=13.7.1",
"tiktoken>=0.7.0",
"aiofiles>=23.1.0",
"langchain-community>=0.2.12",
"langchain-anthropic>=0.1.23",
"types-pyyaml>=6.0.12.20240808",
"transformers[sentencepiece]>=4.44.2",
]
readme = "README.md"
requires-python = ">= 3.11"
[project.optional-dependencies]
all = [
"unstructured[epub,docx,odt,doc,pptx,ppt,xlsx,md]>=0.15.5",
"faiss-cpu>=1.8.0.post1",
"docx2txt>=0.8",
"megaparse"
]
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
[tool.rye]
managed = true
dev-dependencies = [
"mypy>=1.11.1",
"pre-commit>=3.8.0",
"ipykernel>=6.29.5",
"ruff>=0.6.1",
"flake8>=7.1.1",
"flake8-black>=0.3.6",
"pytest-asyncio>=0.23.8",
"pytest>=8.3.2",
"pytest-xdist>=3.6.1",
"pytest-benchmark>=4.0.0",
]
[tool.hatch.metadata]
allow-direct-references = true
[tool.hatch.build.targets.wheel]
packages = ["quivr_core"]
[tool.pytest.ini_options]
addopts = "--tb=short -ra -v"
filterwarnings = ["ignore::DeprecationWarning"]
markers = [
"slow: marks tests as slow (deselect with '-m \"not slow\"')",
"base: these tests require quivr-core with extra `base` to be installed",
"tika: these tests require a tika server to be running",
"unstructured: these tests require `unstructured` dependency",
]
[[tool.mypy.overrides]]
module = "yaml"
ignore_missing_imports = true
[[tool.rye.sources]]
name = "megaparse"
path = "./MegaParse"