diff --git a/.github/workflows/release-please-core.yml b/.github/workflows/release-please-core.yml
index 3e8668351..c9dc15f10 100644
--- a/.github/workflows/release-please-core.yml
+++ b/.github/workflows/release-please-core.yml
@@ -43,23 +43,13 @@ jobs:
working-directory: backend/core
steps:
- uses: actions/checkout@v4
- - name: Set up Python
- uses: actions/setup-python@v3
+ - name: Install Rye
+ uses: eifinger/setup-rye@v2
with:
- python-version: '3.11'
- - name: Check working directory
- run: pwd
- - name: Install dependencies
- run: |
- python -m pip install --upgrade pip
- pip install poetry
- - name: Install project dependencies
- run: poetry install
- - name: Build package
- run: poetry build
- - name: Publish package
- uses: pypa/gh-action-pypi-publish@27b31702a0e7fc50959f5ad993c78deac1bdfc29
- with:
- user: __token__
- password: ${{ secrets.PYPI_API_TOKEN }}
- packages_dir: backend/core/dist
\ No newline at end of file
+ enable-cache: true
+ - name: Rye Sync
+ run: UV_INDEX_STRATEGY=unsafe-first-match rye sync --no-lock
+ - name: Rye Build
+ run: rye build
+ - name: Rye Publish
+ run: rye publish --token ${{ secrets.PYPI_API_TOKEN }} --yes
\ No newline at end of file
diff --git a/backend/core/quivr_core/chat.py b/backend/core/quivr_core/chat.py
index 7247dc812..01ab56fe0 100644
--- a/backend/core/quivr_core/chat.py
+++ b/backend/core/quivr_core/chat.py
@@ -7,6 +7,11 @@ from quivr_core.models import ChatMessage
class ChatHistory:
+ """
+ Chat history is a list of ChatMessage.
+ It is used to store the chat history of a chat.
+ """
+
def __init__(self, chat_id: UUID, brain_id: UUID | None) -> None:
self.id = chat_id
self.brain_id = brain_id
@@ -30,6 +35,9 @@ class ChatHistory:
def append(
self, langchain_msg: AIMessage | HumanMessage, metadata: dict[str, Any] = {}
):
+ """
+ Append a message to the chat history.
+ """
chat_msg = ChatMessage(
chat_id=self.id,
message_id=uuid4(),
@@ -41,6 +49,9 @@ class ChatHistory:
self._msgs.append(chat_msg)
def iter_pairs(self) -> Generator[Tuple[HumanMessage, AIMessage], None, None]:
+ """
+ Iterate over the chat history as pairs of HumanMessage and AIMessage.
+ """
# Reverse the chat_history, newest first
it = iter(self.get_chat_history(newest_first=True))
for ai_message, human_message in zip(it, it):
diff --git a/backend/core/quivr_core/processor/implementations/megaparse_processor.py b/backend/core/quivr_core/processor/implementations/megaparse_processor.py
index 5e486fe48..5d7a3dc62 100644
--- a/backend/core/quivr_core/processor/implementations/megaparse_processor.py
+++ b/backend/core/quivr_core/processor/implementations/megaparse_processor.py
@@ -14,6 +14,19 @@ logger = logging.getLogger("quivr_core")
class MegaparseProcessor(ProcessorBase):
+ '''
+ Megaparse processor for PDF files.
+
+ It can be used to parse PDF files and split them into chunks.
+
+ It comes from the megaparse library.
+
+ ## Installation
+ ```bash
+ pip install megaparse
+ ```
+
+ '''
supported_extensions = [FileExtension.pdf]
def __init__(
diff --git a/backend/core/quivr_core/processor/implementations/simple_txt_processor.py b/backend/core/quivr_core/processor/implementations/simple_txt_processor.py
index d7dd05ad9..7caffb1d3 100644
--- a/backend/core/quivr_core/processor/implementations/simple_txt_processor.py
+++ b/backend/core/quivr_core/processor/implementations/simple_txt_processor.py
@@ -27,6 +27,11 @@ def recursive_character_splitter(
class SimpleTxtProcessor(ProcessorBase):
+ """
+ SimpleTxtProcessor is a class that implements the ProcessorBase interface.
+ It is used to process the files with the Simple Txt parser.
+ """
+
supported_extensions = [FileExtension.txt]
def __init__(
diff --git a/backend/core/quivr_core/processor/implementations/tika_processor.py b/backend/core/quivr_core/processor/implementations/tika_processor.py
index 907527d1b..11c6f7981 100644
--- a/backend/core/quivr_core/processor/implementations/tika_processor.py
+++ b/backend/core/quivr_core/processor/implementations/tika_processor.py
@@ -14,6 +14,16 @@ logger = logging.getLogger("quivr_core")
class TikaProcessor(ProcessorBase):
+ """
+ TikaProcessor is a class that implements the ProcessorBase interface.
+ It is used to process the files with the Tika server.
+
+ To run it with docker you can do:
+ ```bash
+ docker run -d -p 9998:9998 apache/tika
+ ```
+ """
+
supported_extensions = [FileExtension.pdf]
def __init__(
diff --git a/backend/core/quivr_core/processor/splitter.py b/backend/core/quivr_core/processor/splitter.py
index ca1ce9657..9a3945594 100644
--- a/backend/core/quivr_core/processor/splitter.py
+++ b/backend/core/quivr_core/processor/splitter.py
@@ -2,5 +2,12 @@ from pydantic import BaseModel
class SplitterConfig(BaseModel):
+ """
+ This class is used to configure the chunking of the documents.
+
+ Chunk size is the number of characters in the chunk.
+ Chunk overlap is the number of characters that the chunk will overlap with the previous chunk.
+ """
+
chunk_size: int = 400
chunk_overlap: int = 100
diff --git a/backend/core/quivr_core/quivr_rag.py b/backend/core/quivr_core/quivr_rag.py
index da2d6da7e..9f3049bc8 100644
--- a/backend/core/quivr_core/quivr_rag.py
+++ b/backend/core/quivr_core/quivr_rag.py
@@ -45,6 +45,10 @@ class IdempotentCompressor(BaseDocumentCompressor):
class QuivrQARAG:
+ """
+ QuivrQA RAG is a class that provides a RAG interface to the QuivrQA system.
+ """
+
def __init__(
self,
*,
@@ -60,6 +64,9 @@ class QuivrQARAG:
@property
def retriever(self):
+ """
+ Retriever is a function that retrieves the documents from the vector store.
+ """
return self.vector_store.as_retriever()
def filter_history(
@@ -92,6 +99,9 @@ class QuivrQARAG:
return filtered_chat_history[::-1]
def build_chain(self, files: str):
+ """
+ Builds the chain for the QuivrQA RAG.
+ """
compression_retriever = ContextualCompressionRetriever(
base_compressor=self.reranker, base_retriever=self.retriever
)
@@ -149,6 +159,9 @@ class QuivrQARAG:
list_files: list[QuivrKnowledge],
metadata: dict[str, str] = {},
) -> ParsedRAGResponse:
+ """
+ Answers a question using the QuivrQA RAG synchronously.
+ """
concat_list_files = format_file_list(list_files, self.rag_config.max_files)
conversational_qa_chain = self.build_chain(concat_list_files)
raw_llm_response = conversational_qa_chain.invoke(
@@ -169,6 +182,9 @@ class QuivrQARAG:
list_files: list[QuivrKnowledge],
metadata: dict[str, str] = {},
) -> AsyncGenerator[ParsedRAGChunkResponse, ParsedRAGChunkResponse]:
+ """
+ Answers a question using the QuivrQA RAG asynchronously.
+ """
concat_list_files = format_file_list(list_files, self.rag_config.max_files)
conversational_qa_chain = self.build_chain(concat_list_files)
diff --git a/backend/docs/.gitignore b/backend/docs/.gitignore
new file mode 100644
index 000000000..ae8554dec
--- /dev/null
+++ b/backend/docs/.gitignore
@@ -0,0 +1,10 @@
+# python generated files
+__pycache__/
+*.py[oc]
+build/
+dist/
+wheels/
+*.egg-info
+
+# venv
+.venv
diff --git a/backend/docs/.python-version b/backend/docs/.python-version
new file mode 100644
index 000000000..2419ad5b0
--- /dev/null
+++ b/backend/docs/.python-version
@@ -0,0 +1 @@
+3.11.9
diff --git a/backend/docs/README.md b/backend/docs/README.md
new file mode 100644
index 000000000..69c1233e2
--- /dev/null
+++ b/backend/docs/README.md
@@ -0,0 +1,3 @@
+# docs
+
+Describe your project here.
diff --git a/backend/docs/docs/css/style.css b/backend/docs/docs/css/style.css
new file mode 100644
index 000000000..7923029fd
--- /dev/null
+++ b/backend/docs/docs/css/style.css
@@ -0,0 +1,50 @@
+.md-container .jp-Cell-outputWrapper .jp-OutputPrompt.jp-OutputArea-prompt,
+.md-container .jp-Cell-inputWrapper .jp-InputPrompt.jp-InputArea-prompt {
+ display: none !important;
+}
+
+/* CSS styles for side-by-side layout */
+.container {
+ display: flex-col;
+ justify-content: space-between;
+ margin-bottom: 20px;
+ /* Adjust spacing between sections */
+ position: sticky;
+ top: 2.4rem;
+ z-index: 1000;
+ /* Ensure it's above other content */
+ background-color: white;
+ /* Match your page background */
+ padding: 0.2rem;
+}
+
+.example-heading {
+ margin: 0.2rem !important;
+}
+
+.usage-examples {
+ width: 100%;
+ /* Adjust the width as needed */
+ border: 1px solid var(--md-default-fg-color--light);
+ border-radius: 2px;
+ padding: 0.2rem;
+}
+
+/* Additional styling for the toggle */
+.toggle-example {
+ cursor: pointer;
+ color: white;
+ text-decoration: underline;
+ background-color: var(--md-primary-fg-color);
+ padding: 0.2rem;
+ border-radius: 2px;
+}
+
+.hidden {
+ display: none;
+}
+
+/* mendable search styling */
+#my-component-root>div {
+ bottom: 100px;
+}
\ No newline at end of file
diff --git a/backend/docs/docs/index.md b/backend/docs/docs/index.md
new file mode 100644
index 000000000..dd90130b4
--- /dev/null
+++ b/backend/docs/docs/index.md
@@ -0,0 +1,41 @@
+# Welcome to Quivr Documentation
+
+Welcome to the documentation of Quivr! This is the place where you'll find help, guidance and support for collaborative software development. Whether you're involved in an open-source community or a large software team, these resources should get you up and running quickly!
+
+[Quivr](https://quivr.app) is your **Second Brain** that can act as your **personal assistant**. Quivr is a platform that enables the creation of AI assistants, referred to as "Brain". These assistants are designed with specialized capabilities. Some can connect to specific data sources, allowing users to interact directly with the data. Others serve as specialized tools for particular use cases, powered by Rag technology. These tools process specific inputs to generate practical outputs, such as summaries, translations, and more.
+
+## Quick Links
+
+- [Video Installation](https://dub.sh/quivr-demo)
+
+!!! note
+ **Our goal** is to make Quivr the **best personal assistant** that is powered by your knowledge and your applications 🔥
+
+## What does it do?
+
+
+
+
+
+## How to get started? 👀
+
+!!! tip
+ It takes less than **5 seconds** to get started with Quivr. You can even use your Google account to sign up.
+
+1. **Create an account**: Go to [Quivr](https://quivr.app) and create an account.
+2. **Create a Brain**: Let us guide you to create your first brain!
+3. **Feed this Brain**: Add documentation and/or URLs to feed your brain.
+4. **Ask Questions to your Brain**: Ask your Brain questions about the knowledge that you provide.
+
+## Empowering Innovation with Foundation Models & Generative AI
+
+As a Leader in AI, Quivr leverages Foundation Models and Generative AI to empower businesses to achieve gains through Innovation.
+
+- 50k+ users
+- 6k+ companies
+- 35k+ github stars
+- Top 100 open-source
+
diff --git a/backend/docs/docs/installation.md b/backend/docs/docs/installation.md
new file mode 100644
index 000000000..4f7cbfa54
--- /dev/null
+++ b/backend/docs/docs/installation.md
@@ -0,0 +1,5 @@
+## Installation
+
+```bash
+pip install quivr-core
+```
\ No newline at end of file
diff --git a/backend/docs/docs/parsers/index.md b/backend/docs/docs/parsers/index.md
new file mode 100644
index 000000000..d878fa1fb
--- /dev/null
+++ b/backend/docs/docs/parsers/index.md
@@ -0,0 +1,3 @@
+
+Quivr provides a suite of parsers to extract structured data from various sources.
+
diff --git a/backend/docs/docs/parsers/megaparse.md b/backend/docs/docs/parsers/megaparse.md
new file mode 100644
index 000000000..ea92eae9e
--- /dev/null
+++ b/backend/docs/docs/parsers/megaparse.md
@@ -0,0 +1,5 @@
+## Megaparse
+
+::: quivr_core.processor.implementations.megaparse_processor
+ options:
+ heading_level: 2
\ No newline at end of file
diff --git a/backend/docs/docs/parsers/simple.md b/backend/docs/docs/parsers/simple.md
new file mode 100644
index 000000000..530f89972
--- /dev/null
+++ b/backend/docs/docs/parsers/simple.md
@@ -0,0 +1,5 @@
+## Simple Txt
+
+::: quivr_core.processor.implementations.simple_txt_processor
+ options:
+ heading_level: 2
\ No newline at end of file
diff --git a/backend/docs/mkdocs.yml b/backend/docs/mkdocs.yml
new file mode 100644
index 000000000..daaa258db
--- /dev/null
+++ b/backend/docs/mkdocs.yml
@@ -0,0 +1,62 @@
+site_name: Quivr
+extra_css:
+ - css/style.css
+
+markdown_extensions:
+ - attr_list
+ - admonition
+ - pymdownx.details
+ - pymdownx.superfences
+ - md_in_html
+ - toc:
+ permalink: "#"
+
+theme:
+ custom_dir: overrides
+ features:
+ - navigation.instant
+ - navigation.tabs
+ - navigation.indexes
+ - navigation.top
+ - navigation.footer
+ - toc.follow
+ - content.code.copy
+ - search.suggest
+ - search.highlight
+ name: material
+ palette:
+ - media: (prefers-color-scheme)
+ toggle:
+ icon: material/brightness-auto
+ name: Switch to light mode
+ - accent: purple
+ media: "(prefers-color-scheme: light)"
+ primary: white
+ scheme: default
+ toggle:
+ icon: material/brightness-7
+ name: Switch to dark mode
+ - accent: purple
+ media: "(prefers-color-scheme: dark)"
+ primary: black
+ scheme: slate
+ toggle:
+ icon: material/brightness-4
+ name: Switch to system preference
+
+plugins:
+- mkdocstrings:
+ default_handler: python
+
+
+nav:
+ - Home:
+ - index.md
+ - installation.md
+ - Features:
+ - Parsers:
+ - parsers/index.md
+ - parsers/megaparse.md
+ - parsers/simple.md
+ - Enterprise: https://docs.quivr.app/
+
diff --git a/backend/docs/pyproject.toml b/backend/docs/pyproject.toml
new file mode 100644
index 000000000..993b21618
--- /dev/null
+++ b/backend/docs/pyproject.toml
@@ -0,0 +1,35 @@
+[project]
+name = "docs"
+version = "0.1.0"
+description = "Add your description here"
+authors = [
+ { name = "Stan Girard", email = "stan@quivr.app" }
+]
+dependencies = [
+ "mkdocs>=1.6.1",
+ "mkdocstrings[python]>=0.26.0",
+ "mkdocs-jupyter>=0.24.8",
+ "mkdocs-include-dir-to-nav>=1.2.0",
+ "mkdocs-material>=9.5.34",
+ "mkdocs-redirects>=1.2.1",
+]
+readme = "README.md"
+requires-python = ">= 3.8"
+
+[build-system]
+requires = ["hatchling"]
+build-backend = "hatchling.build"
+
+[tool.rye]
+managed = true
+dev-dependencies = []
+virtual = true
+
+[tool.rye.scripts]
+docs = "mkdocs serve"
+
+
+[tool.hatch.metadata]
+allow-direct-references = true
+
+
diff --git a/backend/docs/requirements-dev.lock b/backend/docs/requirements-dev.lock
new file mode 100644
index 000000000..7f2d5362c
--- /dev/null
+++ b/backend/docs/requirements-dev.lock
@@ -0,0 +1,231 @@
+# generated by rye
+# use `rye lock` or `rye sync` to update this lockfile
+#
+# last locked with the following flags:
+# pre: false
+# features: []
+# all-features: false
+# with-sources: false
+# generate-hashes: false
+# universal: false
+
+asttokens==2.4.1
+ # via stack-data
+attrs==24.2.0
+ # via jsonschema
+ # via referencing
+babel==2.16.0
+ # via mkdocs-material
+beautifulsoup4==4.12.3
+ # via nbconvert
+bleach==6.1.0
+ # via nbconvert
+certifi==2024.8.30
+ # via requests
+charset-normalizer==3.3.2
+ # via requests
+click==8.1.7
+ # via mkdocs
+ # via mkdocstrings
+colorama==0.4.6
+ # via griffe
+ # via mkdocs-material
+comm==0.2.2
+ # via ipykernel
+debugpy==1.8.5
+ # via ipykernel
+decorator==5.1.1
+ # via ipython
+defusedxml==0.7.1
+ # via nbconvert
+executing==2.1.0
+ # via stack-data
+fastjsonschema==2.20.0
+ # via nbformat
+ghp-import==2.1.0
+ # via mkdocs
+griffe==1.2.0
+ # via mkdocstrings-python
+idna==3.8
+ # via requests
+ipykernel==6.29.5
+ # via mkdocs-jupyter
+ipython==8.27.0
+ # via ipykernel
+jedi==0.19.1
+ # via ipython
+jinja2==3.1.4
+ # via mkdocs
+ # via mkdocs-material
+ # via mkdocstrings
+ # via nbconvert
+jsonschema==4.23.0
+ # via nbformat
+jsonschema-specifications==2023.12.1
+ # via jsonschema
+jupyter-client==8.6.2
+ # via ipykernel
+ # via nbclient
+jupyter-core==5.7.2
+ # via ipykernel
+ # via jupyter-client
+ # via nbclient
+ # via nbconvert
+ # via nbformat
+jupyterlab-pygments==0.3.0
+ # via nbconvert
+jupytext==1.16.4
+ # via mkdocs-jupyter
+markdown==3.7
+ # via mkdocs
+ # via mkdocs-autorefs
+ # via mkdocs-material
+ # via mkdocstrings
+ # via pymdown-extensions
+markdown-it-py==3.0.0
+ # via jupytext
+ # via mdit-py-plugins
+markupsafe==2.1.5
+ # via jinja2
+ # via mkdocs
+ # via mkdocs-autorefs
+ # via mkdocstrings
+ # via nbconvert
+matplotlib-inline==0.1.7
+ # via ipykernel
+ # via ipython
+mdit-py-plugins==0.4.1
+ # via jupytext
+mdurl==0.1.2
+ # via markdown-it-py
+mergedeep==1.3.4
+ # via mkdocs
+ # via mkdocs-get-deps
+mistune==3.0.2
+ # via nbconvert
+mkdocs==1.6.1
+ # via mkdocs-autorefs
+ # via mkdocs-include-dir-to-nav
+ # via mkdocs-jupyter
+ # via mkdocs-material
+ # via mkdocs-redirects
+ # via mkdocstrings
+mkdocs-autorefs==1.2.0
+ # via mkdocstrings
+ # via mkdocstrings-python
+mkdocs-get-deps==0.2.0
+ # via mkdocs
+mkdocs-include-dir-to-nav==1.2.0
+mkdocs-jupyter==0.24.8
+mkdocs-material==9.5.34
+ # via mkdocs-jupyter
+mkdocs-material-extensions==1.3.1
+ # via mkdocs-material
+mkdocs-redirects==1.2.1
+mkdocstrings==0.26.0
+ # via mkdocstrings-python
+mkdocstrings-python==1.10.9
+ # via mkdocstrings
+nbclient==0.10.0
+ # via nbconvert
+nbconvert==7.16.4
+ # via mkdocs-jupyter
+nbformat==5.10.4
+ # via jupytext
+ # via nbclient
+ # via nbconvert
+nest-asyncio==1.6.0
+ # via ipykernel
+packaging==24.1
+ # via ipykernel
+ # via jupytext
+ # via mkdocs
+ # via nbconvert
+paginate==0.5.7
+ # via mkdocs-material
+pandocfilters==1.5.1
+ # via nbconvert
+parso==0.8.4
+ # via jedi
+pathspec==0.12.1
+ # via mkdocs
+pexpect==4.9.0
+ # via ipython
+platformdirs==4.2.2
+ # via jupyter-core
+ # via mkdocs-get-deps
+ # via mkdocstrings
+prompt-toolkit==3.0.47
+ # via ipython
+psutil==6.0.0
+ # via ipykernel
+ptyprocess==0.7.0
+ # via pexpect
+pure-eval==0.2.3
+ # via stack-data
+pygments==2.18.0
+ # via ipython
+ # via mkdocs-jupyter
+ # via mkdocs-material
+ # via nbconvert
+pymdown-extensions==10.9
+ # via mkdocs-material
+ # via mkdocstrings
+python-dateutil==2.9.0.post0
+ # via ghp-import
+ # via jupyter-client
+pyyaml==6.0.2
+ # via jupytext
+ # via mkdocs
+ # via mkdocs-get-deps
+ # via pymdown-extensions
+ # via pyyaml-env-tag
+pyyaml-env-tag==0.1
+ # via mkdocs
+pyzmq==26.2.0
+ # via ipykernel
+ # via jupyter-client
+referencing==0.35.1
+ # via jsonschema
+ # via jsonschema-specifications
+regex==2024.7.24
+ # via mkdocs-material
+requests==2.32.3
+ # via mkdocs-material
+rpds-py==0.20.0
+ # via jsonschema
+ # via referencing
+six==1.16.0
+ # via asttokens
+ # via bleach
+ # via python-dateutil
+soupsieve==2.6
+ # via beautifulsoup4
+stack-data==0.6.3
+ # via ipython
+tinycss2==1.3.0
+ # via nbconvert
+tornado==6.4.1
+ # via ipykernel
+ # via jupyter-client
+traitlets==5.14.3
+ # via comm
+ # via ipykernel
+ # via ipython
+ # via jupyter-client
+ # via jupyter-core
+ # via matplotlib-inline
+ # via nbclient
+ # via nbconvert
+ # via nbformat
+typing-extensions==4.12.2
+ # via ipython
+urllib3==2.2.2
+ # via requests
+watchdog==5.0.0
+ # via mkdocs
+wcwidth==0.2.13
+ # via prompt-toolkit
+webencodings==0.5.1
+ # via bleach
+ # via tinycss2
diff --git a/backend/docs/requirements.lock b/backend/docs/requirements.lock
new file mode 100644
index 000000000..7f2d5362c
--- /dev/null
+++ b/backend/docs/requirements.lock
@@ -0,0 +1,231 @@
+# generated by rye
+# use `rye lock` or `rye sync` to update this lockfile
+#
+# last locked with the following flags:
+# pre: false
+# features: []
+# all-features: false
+# with-sources: false
+# generate-hashes: false
+# universal: false
+
+asttokens==2.4.1
+ # via stack-data
+attrs==24.2.0
+ # via jsonschema
+ # via referencing
+babel==2.16.0
+ # via mkdocs-material
+beautifulsoup4==4.12.3
+ # via nbconvert
+bleach==6.1.0
+ # via nbconvert
+certifi==2024.8.30
+ # via requests
+charset-normalizer==3.3.2
+ # via requests
+click==8.1.7
+ # via mkdocs
+ # via mkdocstrings
+colorama==0.4.6
+ # via griffe
+ # via mkdocs-material
+comm==0.2.2
+ # via ipykernel
+debugpy==1.8.5
+ # via ipykernel
+decorator==5.1.1
+ # via ipython
+defusedxml==0.7.1
+ # via nbconvert
+executing==2.1.0
+ # via stack-data
+fastjsonschema==2.20.0
+ # via nbformat
+ghp-import==2.1.0
+ # via mkdocs
+griffe==1.2.0
+ # via mkdocstrings-python
+idna==3.8
+ # via requests
+ipykernel==6.29.5
+ # via mkdocs-jupyter
+ipython==8.27.0
+ # via ipykernel
+jedi==0.19.1
+ # via ipython
+jinja2==3.1.4
+ # via mkdocs
+ # via mkdocs-material
+ # via mkdocstrings
+ # via nbconvert
+jsonschema==4.23.0
+ # via nbformat
+jsonschema-specifications==2023.12.1
+ # via jsonschema
+jupyter-client==8.6.2
+ # via ipykernel
+ # via nbclient
+jupyter-core==5.7.2
+ # via ipykernel
+ # via jupyter-client
+ # via nbclient
+ # via nbconvert
+ # via nbformat
+jupyterlab-pygments==0.3.0
+ # via nbconvert
+jupytext==1.16.4
+ # via mkdocs-jupyter
+markdown==3.7
+ # via mkdocs
+ # via mkdocs-autorefs
+ # via mkdocs-material
+ # via mkdocstrings
+ # via pymdown-extensions
+markdown-it-py==3.0.0
+ # via jupytext
+ # via mdit-py-plugins
+markupsafe==2.1.5
+ # via jinja2
+ # via mkdocs
+ # via mkdocs-autorefs
+ # via mkdocstrings
+ # via nbconvert
+matplotlib-inline==0.1.7
+ # via ipykernel
+ # via ipython
+mdit-py-plugins==0.4.1
+ # via jupytext
+mdurl==0.1.2
+ # via markdown-it-py
+mergedeep==1.3.4
+ # via mkdocs
+ # via mkdocs-get-deps
+mistune==3.0.2
+ # via nbconvert
+mkdocs==1.6.1
+ # via mkdocs-autorefs
+ # via mkdocs-include-dir-to-nav
+ # via mkdocs-jupyter
+ # via mkdocs-material
+ # via mkdocs-redirects
+ # via mkdocstrings
+mkdocs-autorefs==1.2.0
+ # via mkdocstrings
+ # via mkdocstrings-python
+mkdocs-get-deps==0.2.0
+ # via mkdocs
+mkdocs-include-dir-to-nav==1.2.0
+mkdocs-jupyter==0.24.8
+mkdocs-material==9.5.34
+ # via mkdocs-jupyter
+mkdocs-material-extensions==1.3.1
+ # via mkdocs-material
+mkdocs-redirects==1.2.1
+mkdocstrings==0.26.0
+ # via mkdocstrings-python
+mkdocstrings-python==1.10.9
+ # via mkdocstrings
+nbclient==0.10.0
+ # via nbconvert
+nbconvert==7.16.4
+ # via mkdocs-jupyter
+nbformat==5.10.4
+ # via jupytext
+ # via nbclient
+ # via nbconvert
+nest-asyncio==1.6.0
+ # via ipykernel
+packaging==24.1
+ # via ipykernel
+ # via jupytext
+ # via mkdocs
+ # via nbconvert
+paginate==0.5.7
+ # via mkdocs-material
+pandocfilters==1.5.1
+ # via nbconvert
+parso==0.8.4
+ # via jedi
+pathspec==0.12.1
+ # via mkdocs
+pexpect==4.9.0
+ # via ipython
+platformdirs==4.2.2
+ # via jupyter-core
+ # via mkdocs-get-deps
+ # via mkdocstrings
+prompt-toolkit==3.0.47
+ # via ipython
+psutil==6.0.0
+ # via ipykernel
+ptyprocess==0.7.0
+ # via pexpect
+pure-eval==0.2.3
+ # via stack-data
+pygments==2.18.0
+ # via ipython
+ # via mkdocs-jupyter
+ # via mkdocs-material
+ # via nbconvert
+pymdown-extensions==10.9
+ # via mkdocs-material
+ # via mkdocstrings
+python-dateutil==2.9.0.post0
+ # via ghp-import
+ # via jupyter-client
+pyyaml==6.0.2
+ # via jupytext
+ # via mkdocs
+ # via mkdocs-get-deps
+ # via pymdown-extensions
+ # via pyyaml-env-tag
+pyyaml-env-tag==0.1
+ # via mkdocs
+pyzmq==26.2.0
+ # via ipykernel
+ # via jupyter-client
+referencing==0.35.1
+ # via jsonschema
+ # via jsonschema-specifications
+regex==2024.7.24
+ # via mkdocs-material
+requests==2.32.3
+ # via mkdocs-material
+rpds-py==0.20.0
+ # via jsonschema
+ # via referencing
+six==1.16.0
+ # via asttokens
+ # via bleach
+ # via python-dateutil
+soupsieve==2.6
+ # via beautifulsoup4
+stack-data==0.6.3
+ # via ipython
+tinycss2==1.3.0
+ # via nbconvert
+tornado==6.4.1
+ # via ipykernel
+ # via jupyter-client
+traitlets==5.14.3
+ # via comm
+ # via ipykernel
+ # via ipython
+ # via jupyter-client
+ # via jupyter-core
+ # via matplotlib-inline
+ # via nbclient
+ # via nbconvert
+ # via nbformat
+typing-extensions==4.12.2
+ # via ipython
+urllib3==2.2.2
+ # via requests
+watchdog==5.0.0
+ # via mkdocs
+wcwidth==0.2.13
+ # via prompt-toolkit
+webencodings==0.5.1
+ # via bleach
+ # via tinycss2
diff --git a/backend/docs/src/docs/__init__.py b/backend/docs/src/docs/__init__.py
new file mode 100644
index 000000000..8fdb6d784
--- /dev/null
+++ b/backend/docs/src/docs/__init__.py
@@ -0,0 +1,2 @@
+def hello() -> str:
+ return "Hello from docs!"
diff --git a/backend/pyproject.toml b/backend/pyproject.toml
index 0aef12aa7..0f57a09db 100644
--- a/backend/pyproject.toml
+++ b/backend/pyproject.toml
@@ -40,7 +40,7 @@ dev-dependencies = [
]
[tool.rye.workspace]
-members = [".", "core", "worker", "api", "core/examples/chatbot"]
+members = [".", "core", "worker", "api", "docs", "core/examples/chatbot"]
[tool.hatch.metadata]
allow-direct-references = true
diff --git a/backend/requirements-dev.lock b/backend/requirements-dev.lock
index e864b2b90..9ceae7d3b 100644
--- a/backend/requirements-dev.lock
+++ b/backend/requirements-dev.lock
@@ -62,12 +62,15 @@ attrs==24.2.0
# via aiohttp
# via jsonschema
# via referencing
+babel==2.16.0
+ # via mkdocs-material
backoff==2.2.1
# via posthog
# via unstructured
beautifulsoup4==4.12.3
# via llama-index-readers-file
# via markdownify
+ # via nbconvert
# via unstructured
bidict==0.23.1
# via python-socketio
@@ -75,6 +78,8 @@ billiard==4.2.0
# via celery
black==24.8.0
# via flake8-black
+bleach==6.1.0
+ # via nbconvert
boto3==1.35.2
# via cohere
botocore==1.35.2
@@ -116,6 +121,8 @@ click==8.1.7
# via click-plugins
# via click-repl
# via litellm
+ # via mkdocs
+ # via mkdocstrings
# via nltk
# via uvicorn
click-didyoumean==0.3.1
@@ -131,7 +138,10 @@ cohere==5.8.1
colorama==0.4.6
# via click
# via colorlog
+ # via griffe
# via ipython
+ # via mkdocs
+ # via mkdocs-material
# via pytest
# via tox
# via tqdm
@@ -164,6 +174,7 @@ decorator==5.1.1
# via ipython
defusedxml==0.7.1
# via langchain-anthropic
+ # via nbconvert
deprecated==1.2.14
# via llama-index-core
# via llama-index-legacy
@@ -206,6 +217,8 @@ fastapi==0.110.3
# via sentry-sdk
fastavro==1.9.5
# via cohere
+fastjsonschema==2.20.0
+ # via nbformat
filelock==3.15.4
# via huggingface-hub
# via torch
@@ -237,6 +250,8 @@ fsspec==2024.2.0
# via llama-index-core
# via llama-index-legacy
# via torch
+ghp-import==2.1.0
+ # via mkdocs
google-api-core==2.19.1
# via google-api-python-client
# via google-cloud-vision
@@ -265,6 +280,8 @@ gotrue==2.7.0
greenlet==3.0.3
# via playwright
# via sqlalchemy
+griffe==1.2.0
+ # via mkdocstrings-python
grpcio==1.65.5
# via google-api-core
# via grpcio-status
@@ -330,12 +347,17 @@ iniconfig==2.0.0
iopath==0.1.10
# via layoutparser
ipykernel==6.29.5
+ # via mkdocs-jupyter
ipython==8.26.0
# via ipykernel
jedi==0.19.1
# via ipython
jinja2==3.1.3
# via litellm
+ # via mkdocs
+ # via mkdocs-material
+ # via mkdocstrings
+ # via nbconvert
# via torch
jiter==0.5.0
# via anthropic
@@ -353,13 +375,22 @@ jsonpointer==3.0.0
# via jsonpatch
jsonschema==4.23.0
# via litellm
+ # via nbformat
jsonschema-specifications==2023.12.1
# via jsonschema
jupyter-client==8.6.2
# via ipykernel
+ # via nbclient
jupyter-core==5.7.2
# via ipykernel
# via jupyter-client
+ # via nbclient
+ # via nbconvert
+ # via nbformat
+jupyterlab-pygments==0.3.0
+ # via nbconvert
+jupytext==1.16.4
+ # via mkdocs-jupyter
kiwisolver==1.4.5
# via matplotlib
kombu==5.4.0
@@ -474,13 +505,24 @@ lxml==5.3.0
mammoth==1.8.0
# via megaparse
markdown==3.7
+ # via mkdocs
+ # via mkdocs-autorefs
+ # via mkdocs-material
+ # via mkdocstrings
+ # via pymdown-extensions
# via unstructured
markdown-it-py==3.0.0
+ # via jupytext
+ # via mdit-py-plugins
# via rich
markdownify==0.13.1
# via quivr-api
markupsafe==2.1.5
# via jinja2
+ # via mkdocs
+ # via mkdocs-autorefs
+ # via mkdocstrings
+ # via nbconvert
marshmallow==3.22.0
# via dataclasses-json
# via marshmallow-enum
@@ -495,10 +537,40 @@ matplotlib-inline==0.1.7
# via ipython
mccabe==0.7.0
# via flake8
+mdit-py-plugins==0.4.1
+ # via jupytext
mdurl==0.1.2
# via markdown-it-py
megaparse==0.0.31
# via quivr-core
+mergedeep==1.3.4
+ # via mkdocs
+ # via mkdocs-get-deps
+mistune==3.0.2
+ # via nbconvert
+mkdocs==1.6.1
+ # via mkdocs-autorefs
+ # via mkdocs-include-dir-to-nav
+ # via mkdocs-jupyter
+ # via mkdocs-material
+ # via mkdocs-redirects
+ # via mkdocstrings
+mkdocs-autorefs==1.2.0
+ # via mkdocstrings
+ # via mkdocstrings-python
+mkdocs-get-deps==0.2.0
+ # via mkdocs
+mkdocs-include-dir-to-nav==1.2.0
+mkdocs-jupyter==0.25.0
+mkdocs-material==9.5.34
+ # via mkdocs-jupyter
+mkdocs-material-extensions==1.3.1
+ # via mkdocs-material
+mkdocs-redirects==1.2.1
+mkdocstrings==0.26.1
+ # via mkdocstrings-python
+mkdocstrings-python==1.11.1
+ # via mkdocstrings
monotonic==1.6
# via posthog
mpmath==1.3.0
@@ -514,6 +586,14 @@ mypy-extensions==1.0.0
# via mypy
# via typing-inspect
# via unstructured-client
+nbclient==0.10.0
+ # via nbconvert
+nbconvert==7.16.4
+ # via mkdocs-jupyter
+nbformat==5.10.4
+ # via jupytext
+ # via nbclient
+ # via nbconvert
nest-asyncio==1.6.0
# via chainlit
# via ipykernel
@@ -616,10 +696,13 @@ packaging==23.2
# via faiss-cpu
# via huggingface-hub
# via ipykernel
+ # via jupytext
# via langchain-core
# via literalai
# via marshmallow
# via matplotlib
+ # via mkdocs
+ # via nbconvert
# via onnxruntime
# via pikepdf
# via pyproject-api
@@ -629,18 +712,23 @@ packaging==23.2
# via transformers
# via unstructured-client
# via unstructured-pytesseract
+paginate==0.5.7
+ # via mkdocs-material
pandas==2.2.2
# via langchain-cohere
# via layoutparser
# via llama-index-core
# via llama-index-legacy
# via unstructured
+pandocfilters==1.5.1
+ # via nbconvert
parameterized==0.9.0
# via cohere
parso==0.8.4
# via jedi
pathspec==0.12.1
# via black
+ # via mkdocs
pdf2docx==0.5.8
# via megaparse
pdf2image==1.17.0
@@ -674,6 +762,8 @@ pillow-heif==0.18.0
platformdirs==4.2.2
# via black
# via jupyter-core
+ # via mkdocs-get-deps
+ # via mkdocstrings
# via tox
# via virtualenv
playwright==1.46.0
@@ -760,12 +850,18 @@ pyflakes==3.2.0
# via flake8
pygments==2.18.0
# via ipython
+ # via mkdocs-jupyter
+ # via mkdocs-material
+ # via nbconvert
# via rich
pyinstrument==4.7.2
# via quivr-api
pyjwt==2.9.0
# via chainlit
# via msal
+pymdown-extensions==10.9
+ # via mkdocs-material
+ # via mkdocstrings
pymupdf==1.24.9
# via pdf2docx
pymupdfb==1.24.9
@@ -801,6 +897,7 @@ pytest-xdist==3.6.1
python-dateutil==2.9.0.post0
# via botocore
# via celery
+ # via ghp-import
# via jupyter-client
# via matplotlib
# via pandas
@@ -845,15 +942,22 @@ pywin32==306 ; (platform_python_implementation != 'PyPy' and sys_platform == 'wi
# via portalocker
pyyaml==6.0.2
# via huggingface-hub
+ # via jupytext
# via langchain
# via langchain-community
# via langchain-core
# via layoutparser
# via llama-index-core
+ # via mkdocs
+ # via mkdocs-get-deps
# via omegaconf
# via pre-commit
+ # via pymdown-extensions
+ # via pyyaml-env-tag
# via timm
# via transformers
+pyyaml-env-tag==0.1
+ # via mkdocs
pyzmq==26.1.1
# via ipykernel
# via jupyter-client
@@ -869,6 +973,7 @@ referencing==0.35.1
# via jsonschema
# via jsonschema-specifications
regex==2024.7.24
+ # via mkdocs-material
# via nltk
# via tiktoken
# via transformers
@@ -883,6 +988,7 @@ requests==2.32.3
# via litellm
# via llama-index-core
# via llama-index-legacy
+ # via mkdocs-material
# via msal
# via opentelemetry-exporter-otlp-proto-http
# via posthog
@@ -920,6 +1026,7 @@ simple-websocket==1.0.0
# via python-engineio
six==1.16.0
# via asttokens
+ # via bleach
# via dropbox
# via ecdsa
# via fire
@@ -987,6 +1094,8 @@ tiktoken==0.7.0
timm==1.0.8
# via effdet
# via unstructured-inference
+tinycss2==1.3.0
+ # via nbconvert
tokenizers==0.19.1
# via anthropic
# via cohere
@@ -1034,6 +1143,9 @@ traitlets==5.14.3
# via jupyter-client
# via jupyter-core
# via matplotlib-inline
+ # via nbclient
+ # via nbconvert
+ # via nbformat
transformers==4.44.1
# via unstructured-inference
types-requests==2.31.0.6
@@ -1107,10 +1219,15 @@ vine==5.1.0
virtualenv==20.26.3
# via pre-commit
# via tox
+watchdog==5.0.2
+ # via mkdocs
watchfiles==0.20.0
# via chainlit
wcwidth==0.2.13
# via prompt-toolkit
+webencodings==0.5.1
+ # via bleach
+ # via tinycss2
websockets==12.0
# via realtime
wrapt==1.16.0
diff --git a/backend/requirements.lock b/backend/requirements.lock
index 09b47029d..96ee9ada7 100644
--- a/backend/requirements.lock
+++ b/backend/requirements.lock
@@ -36,7 +36,7 @@ amqp==5.2.0
# via kombu
annotated-types==0.7.0
# via pydantic
-anthropic==0.34.1
+anthropic==0.34.2
# via langchain-anthropic
antlr4-python3-runtime==4.9.3
# via omegaconf
@@ -45,6 +45,10 @@ anyio==4.4.0
# via httpx
# via openai
# via starlette
+appnope==0.1.4 ; platform_system == 'Darwin'
+ # via ipykernel
+asttokens==2.4.1
+ # via stack-data
async-timeout==4.0.3 ; python_full_version < '3.12'
# via asyncpg
asyncpg==0.29.0
@@ -53,15 +57,20 @@ attrs==24.2.0
# via aiohttp
# via jsonschema
# via referencing
+babel==2.16.0
+ # via mkdocs-material
backoff==2.2.1
# via posthog
# via unstructured
beautifulsoup4==4.12.3
# via llama-index-readers-file
# via markdownify
+ # via nbconvert
# via unstructured
billiard==4.2.0
# via celery
+bleach==6.1.0
+ # via nbconvert
boto3==1.35.2
# via cohere
botocore==1.35.2
@@ -79,8 +88,9 @@ certifi==2022.12.7
# via requests
# via sentry-sdk
# via unstructured-client
-cffi==1.17.0 ; platform_python_implementation != 'PyPy'
+cffi==1.17.0 ; platform_python_implementation != 'PyPy' or implementation_name == 'pypy'
# via cryptography
+ # via pyzmq
chardet==5.2.0
# via unstructured
charset-normalizer==2.1.1
@@ -93,6 +103,8 @@ click==8.1.7
# via click-plugins
# via click-repl
# via litellm
+ # via mkdocs
+ # via mkdocstrings
# via nltk
# via uvicorn
click-didyoumean==0.3.1
@@ -105,14 +117,20 @@ cobble==0.1.4
# via mammoth
cohere==5.8.1
# via langchain-cohere
-colorama==0.4.6 ; sys_platform == 'win32' or platform_system == 'Windows'
+colorama==0.4.6
# via click
# via colorlog
+ # via griffe
+ # via ipython
+ # via mkdocs
+ # via mkdocs-material
# via tqdm
coloredlogs==15.0.1
# via onnxruntime
colorlog==6.8.2
# via quivr-api
+comm==0.2.2
+ # via ipykernel
contourpy==1.2.1
# via matplotlib
cryptography==43.0.0
@@ -127,8 +145,13 @@ dataclasses-json==0.6.7
# via llama-index-legacy
# via unstructured
# via unstructured-client
+debugpy==1.8.5
+ # via ipykernel
+decorator==5.1.1
+ # via ipython
defusedxml==0.7.1
# via langchain-anthropic
+ # via nbconvert
deprecated==1.2.14
# via llama-index-core
# via llama-index-legacy
@@ -153,6 +176,8 @@ emoji==2.12.1
# via unstructured
et-xmlfile==1.1.0
# via openpyxl
+executing==2.1.0
+ # via stack-data
faiss-cpu==1.8.0.post1
# via quivr-core
fastapi==0.112.1
@@ -160,6 +185,8 @@ fastapi==0.112.1
# via sentry-sdk
fastavro==1.9.5
# via cohere
+fastjsonschema==2.20.0
+ # via nbformat
filelock==3.13.1
# via huggingface-hub
# via torch
@@ -185,6 +212,8 @@ fsspec==2024.2.0
# via llama-index-core
# via llama-index-legacy
# via torch
+ghp-import==2.1.0
+ # via mkdocs
google-api-core==2.19.1
# via google-api-python-client
# via google-cloud-vision
@@ -211,6 +240,8 @@ gotrue==2.7.0
greenlet==3.0.3
# via playwright
# via sqlalchemy
+griffe==1.2.0
+ # via mkdocstrings-python
grpcio==1.65.5
# via google-api-core
# via grpcio-status
@@ -266,8 +297,18 @@ importlib-metadata==8.4.0
# via litellm
iopath==0.1.10
# via layoutparser
+ipykernel==6.29.5
+ # via mkdocs-jupyter
+ipython==8.27.0
+ # via ipykernel
+jedi==0.19.1
+ # via ipython
jinja2==3.1.3
# via litellm
+ # via mkdocs
+ # via mkdocs-material
+ # via mkdocstrings
+ # via nbconvert
# via torch
jiter==0.5.0
# via anthropic
@@ -285,8 +326,22 @@ jsonpointer==3.0.0
# via jsonpatch
jsonschema==4.23.0
# via litellm
+ # via nbformat
jsonschema-specifications==2023.12.1
# via jsonschema
+jupyter-client==8.6.2
+ # via ipykernel
+ # via nbclient
+jupyter-core==5.7.2
+ # via ipykernel
+ # via jupyter-client
+ # via nbclient
+ # via nbconvert
+ # via nbformat
+jupyterlab-pygments==0.3.0
+ # via nbconvert
+jupytext==1.16.4
+ # via mkdocs-jupyter
kiwisolver==1.4.5
# via matplotlib
kombu==5.4.0
@@ -326,9 +381,9 @@ langchain-text-splitters==0.2.2
# via langchain
langdetect==1.0.9
# via unstructured
-langgraph==0.2.14
+langgraph==0.2.19
# via quivr-core
-langgraph-checkpoint==1.0.6
+langgraph-checkpoint==1.0.9
# via langgraph
langsmith==0.1.100
# via langchain
@@ -397,13 +452,24 @@ lxml==5.3.0
mammoth==1.8.0
# via megaparse
markdown==3.7
+ # via mkdocs
+ # via mkdocs-autorefs
+ # via mkdocs-material
+ # via mkdocstrings
+ # via pymdown-extensions
# via unstructured
markdown-it-py==3.0.0
+ # via jupytext
+ # via mdit-py-plugins
# via rich
markdownify==0.13.1
# via quivr-api
markupsafe==2.1.5
# via jinja2
+ # via mkdocs
+ # via mkdocs-autorefs
+ # via mkdocstrings
+ # via nbconvert
marshmallow==3.22.0
# via dataclasses-json
# via marshmallow-enum
@@ -413,10 +479,43 @@ marshmallow-enum==1.5.1
matplotlib==3.9.2
# via pycocotools
# via unstructured-inference
+matplotlib-inline==0.1.7
+ # via ipykernel
+ # via ipython
+mdit-py-plugins==0.4.1
+ # via jupytext
mdurl==0.1.2
# via markdown-it-py
megaparse==0.0.31
# via quivr-core
+mergedeep==1.3.4
+ # via mkdocs
+ # via mkdocs-get-deps
+mistune==3.0.2
+ # via nbconvert
+mkdocs==1.6.1
+ # via mkdocs-autorefs
+ # via mkdocs-include-dir-to-nav
+ # via mkdocs-jupyter
+ # via mkdocs-material
+ # via mkdocs-redirects
+ # via mkdocstrings
+mkdocs-autorefs==1.2.0
+ # via mkdocstrings
+ # via mkdocstrings-python
+mkdocs-get-deps==0.2.0
+ # via mkdocs
+mkdocs-include-dir-to-nav==1.2.0
+mkdocs-jupyter==0.25.0
+mkdocs-material==9.5.34
+ # via mkdocs-jupyter
+mkdocs-material-extensions==1.3.1
+ # via mkdocs-material
+mkdocs-redirects==1.2.1
+mkdocstrings==0.26.1
+ # via mkdocstrings-python
+mkdocstrings-python==1.11.1
+ # via mkdocstrings
monotonic==1.6
# via posthog
mpmath==1.3.0
@@ -429,7 +528,16 @@ multidict==6.0.5
mypy-extensions==1.0.0
# via typing-inspect
# via unstructured-client
+nbclient==0.10.0
+ # via nbconvert
+nbconvert==7.16.4
+ # via mkdocs-jupyter
+nbformat==5.10.4
+ # via jupytext
+ # via nbclient
+ # via nbconvert
nest-asyncio==1.6.0
+ # via ipykernel
# via llama-index-core
# via llama-index-legacy
networkx==3.2.1
@@ -495,23 +603,35 @@ packaging==24.1
# via deprecation
# via faiss-cpu
# via huggingface-hub
+ # via ipykernel
+ # via jupytext
# via langchain-core
# via marshmallow
# via matplotlib
+ # via mkdocs
+ # via nbconvert
# via onnxruntime
# via pikepdf
# via quivr-monorepo
# via transformers
# via unstructured-client
# via unstructured-pytesseract
+paginate==0.5.7
+ # via mkdocs-material
pandas==2.2.2
# via langchain-cohere
# via layoutparser
# via llama-index-core
# via llama-index-legacy
# via unstructured
+pandocfilters==1.5.1
+ # via nbconvert
parameterized==0.9.0
# via cohere
+parso==0.8.4
+ # via jedi
+pathspec==0.12.1
+ # via mkdocs
pdf2docx==0.5.8
# via megaparse
pdf2image==1.17.0
@@ -523,6 +643,8 @@ pdfminer-six==20231228
pdfplumber==0.11.4
# via layoutparser
# via megaparse
+pexpect==4.9.0 ; sys_platform != 'emscripten' and sys_platform != 'win32'
+ # via ipython
pgvector==0.3.2
# via quivr-api
pikepdf==9.1.1
@@ -540,6 +662,10 @@ pillow==10.2.0
# via unstructured-pytesseract
pillow-heif==0.18.0
# via unstructured
+platformdirs==4.3.2
+ # via jupyter-core
+ # via mkdocs-get-deps
+ # via mkdocstrings
playwright==1.46.0
# via quivr-worker
ply==3.11
@@ -554,6 +680,7 @@ prometheus-client==0.20.0
# via flower
prompt-toolkit==3.0.47
# via click-repl
+ # via ipython
proto-plus==1.24.0
# via google-api-core
# via google-cloud-vision
@@ -566,9 +693,14 @@ protobuf==5.27.3
# via onnxruntime
# via proto-plus
psutil==6.0.0
+ # via ipykernel
# via unstructured
psycopg2-binary==2.9.9
# via quivr-api
+ptyprocess==0.7.0 ; sys_platform != 'emscripten' and sys_platform != 'win32'
+ # via pexpect
+pure-eval==0.2.3
+ # via stack-data
pyasn1==0.6.0
# via pyasn1-modules
# via python-jose
@@ -577,7 +709,7 @@ pyasn1-modules==0.4.0
# via google-auth
pycocotools==2.0.8
# via effdet
-pycparser==2.22 ; platform_python_implementation != 'PyPy'
+pycparser==2.22 ; platform_python_implementation != 'PyPy' or implementation_name == 'pypy'
# via cffi
pycryptodome==3.20.0
# via megaparse
@@ -604,11 +736,18 @@ pydantic-settings==2.4.0
pyee==11.1.0
# via playwright
pygments==2.18.0
+ # via ipython
+ # via mkdocs-jupyter
+ # via mkdocs-material
+ # via nbconvert
# via rich
pyinstrument==4.7.2
# via quivr-api
pyjwt==2.9.0
# via msal
+pymdown-extensions==10.9
+ # via mkdocs-material
+ # via mkdocstrings
pymupdf==1.24.9
# via pdf2docx
pymupdfb==1.24.9
@@ -629,6 +768,8 @@ pyreadline3==3.4.1 ; sys_platform == 'win32'
python-dateutil==2.9.0.post0
# via botocore
# via celery
+ # via ghp-import
+ # via jupyter-client
# via matplotlib
# via pandas
# via posthog
@@ -660,18 +801,29 @@ python-pptx==1.0.2
pytz==2024.1
# via flower
# via pandas
-pywin32==306 ; platform_system == 'Windows'
+pywin32==306 ; (platform_python_implementation != 'PyPy' and sys_platform == 'win32') or platform_system == 'Windows'
+ # via jupyter-core
# via portalocker
pyyaml==6.0.2
# via huggingface-hub
+ # via jupytext
# via langchain
# via langchain-community
# via langchain-core
# via layoutparser
# via llama-index-core
+ # via mkdocs
+ # via mkdocs-get-deps
# via omegaconf
+ # via pymdown-extensions
+ # via pyyaml-env-tag
# via timm
# via transformers
+pyyaml-env-tag==0.1
+ # via mkdocs
+pyzmq==26.2.0
+ # via ipykernel
+ # via jupyter-client
rapidfuzz==3.9.6
# via unstructured
# via unstructured-inference
@@ -684,6 +836,7 @@ referencing==0.35.1
# via jsonschema
# via jsonschema-specifications
regex==2024.7.24
+ # via mkdocs-material
# via nltk
# via tiktoken
# via transformers
@@ -698,6 +851,7 @@ requests==2.32.3
# via litellm
# via llama-index-core
# via llama-index-legacy
+ # via mkdocs-material
# via msal
# via posthog
# via requests-oauthlib
@@ -728,6 +882,8 @@ scipy==1.14.1
sentry-sdk==2.13.0
# via quivr-api
six==1.16.0
+ # via asttokens
+ # via bleach
# via dropbox
# via ecdsa
# via fire
@@ -752,6 +908,8 @@ sqlalchemy==2.0.32
# via sqlmodel
sqlmodel==0.0.21
# via quivr-api
+stack-data==0.6.3
+ # via ipython
starlette==0.38.2
# via fastapi
stone==3.3.1
@@ -790,6 +948,8 @@ tiktoken==0.7.0
timm==1.0.8
# via effdet
# via unstructured-inference
+tinycss2==1.3.0
+ # via nbconvert
tokenizers==0.19.1
# via anthropic
# via cohere
@@ -817,6 +977,8 @@ torchvision==0.19.0+cpu ; platform_machine == 'x86_64'
# via timm
tornado==6.4.1
# via flower
+ # via ipykernel
+ # via jupyter-client
tqdm==4.66.5
# via huggingface-hub
# via iopath
@@ -825,6 +987,16 @@ tqdm==4.66.5
# via openai
# via transformers
# via unstructured
+traitlets==5.14.3
+ # via comm
+ # via ipykernel
+ # via ipython
+ # via jupyter-client
+ # via jupyter-core
+ # via matplotlib-inline
+ # via nbclient
+ # via nbconvert
+ # via nbformat
transformers==4.44.1
# via unstructured-inference
types-requests==2.31.0.6
@@ -838,6 +1010,7 @@ typing-extensions==4.12.2
# via fastapi
# via huggingface-hub
# via iopath
+ # via ipython
# via langchain-core
# via llama-index-core
# via llama-index-legacy
@@ -889,8 +1062,13 @@ vine==5.1.0
# via amqp
# via celery
# via kombu
+watchdog==5.0.2
+ # via mkdocs
wcwidth==0.2.13
# via prompt-toolkit
+webencodings==0.5.1
+ # via bleach
+ # via tinycss2
websockets==12.0
# via realtime
wrapt==1.16.0