Skip to content

Commit f2007b2

Browse files
authored
New approach to multimodal document ingestion (#2558)
* Prepare change for multimodal, rm old vision approach stuff * Add LLM-based media describer * Prepdocs progress * Fix media description with OpenAI * More prepdocs improvements for image handling * Store bbox as list of pixel floats, add storage container just for extracted images * Getting image citations almost working * More progress on multimodal approach * Update more tests * Fix up more app tests * Add test for upload_document_image * Add media describer and embeddings tests * Fix tests for vision, work on vectorizer * Add font, rename multimodal doc * Update links to multimodal * Fix import * Doc fixes * Fix f-string syntax * Markdown lint issues * mypy fixes and reasoning fixes * Rename vision variables, fix mypy * Mypy fixes * Fix all mypy issues * Fixes to sidebar so that it all fits * Fixes to sidebar so that it all fits * Integrated vectorization and user upload work * Progress on user upload support * changes needed for user upload * Update tests * Integrated vectorization progress * Fix tests * Use ImageEmbeddings client directly * Change frontend for vector fields * Use boolean parameters in the backend as well, for vector fields * Updated translations * Change frontend for LLM inputs * Change from LLM inputs to booleans * Working on tests * Blob manager improvements/tests * Change to a global client that we close in lifespan * Add latest int vect changes * Update the tests * Add as_bytes option * Mypy fixes * Mypy fixes * More mypy fixes * More mypy fixes * Address more TODOs * Fix E2E tests * Add more tests for blobmanger * Markdown fix, more coverage * Fix broken MD link * Increase coverage * Increase test coverage * Add diff-cover step to python test * Fix diff-cover action * Fetch origin main for diff-cover * Increase test coverage * More tests, Windows check * Better copilot instructions * Updated merge * Revert integrated vectorization changes, using a different strategy * Remove unused identity in int vect * Refactor get_sources_content to return DataPoints * Fix multimodal bicep variable error * Fix prepdocs to properly close async clients * better CSS for image URLs and images in Thought Process and Supporting Content * Revert logging level to WARNING as before * Update text splitter chunking logic and add full test coverage * Use single token char * Fix mypy error * Add some helper functions and modules to improve code clarity for textsplitter * Update splitting algorithm with better overlap algorithm, rename SplitPage to Chunk * markdown issues * Revise multimodal doc to be clearer * Rephrase fragment shift to be more grokkable * Reword duplicate part of textsplitter doc
1 parent 84cf73e commit f2007b2

File tree

178 files changed

+7806
-3728
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

178 files changed

+7806
-3728
lines changed

.azdo/pipelines/azure-dev.yml

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -77,11 +77,6 @@ steps:
7777
AZURE_OPENAI_EMB_DEPLOYMENT_VERSION: $(AZURE_OPENAI_EMB_DEPLOYMENT_VERSION)
7878
AZURE_OPENAI_EMB_DEPLOYMENT_SKU: $(AZURE_OPENAI_EMB_DEPLOYMENT_SKU)
7979
AZURE_OPENAI_EMB_DIMENSIONS: $(AZURE_OPENAI_EMB_DIMENSIONS)
80-
AZURE_OPENAI_GPT4V_MODEL: $(AZURE_OPENAI_GPT4V_MODEL)
81-
AZURE_OPENAI_GPT4V_DEPLOYMENT: $(AZURE_OPENAI_GPT4V_DEPLOYMENT)
82-
AZURE_OPENAI_GPT4V_DEPLOYMENT_CAPACITY: $(AZURE_OPENAI_GPT4V_DEPLOYMENT_CAPACITY)
83-
AZURE_OPENAI_GPT4V_DEPLOYMENT_VERSION: $(AZURE_OPENAI_GPT4V_DEPLOYMENT_VERSION)
84-
AZURE_OPENAI_GPT4V_DEPLOYMENT_SKU: $(AZURE_OPENAI_GPT4V_DEPLOYMENT_SKU)
8580
AZURE_OPENAI_DISABLE_KEYS: $(AZURE_OPENAI_DISABLE_KEYS)
8681
OPENAI_HOST: $(OPENAI_HOST)
8782
OPENAI_API_KEY: $(OPENAI_API_KEY)
@@ -91,13 +86,13 @@ steps:
9186
AZURE_APPLICATION_INSIGHTS_DASHBOARD: $(AZURE_APPLICATION_INSIGHTS_DASHBOARD)
9287
AZURE_LOG_ANALYTICS: $(AZURE_LOG_ANALYTICS)
9388
USE_VECTORS: $(USE_VECTORS)
94-
USE_GPT4V: $(USE_GPT4V)
89+
USE_MULTIMODAL: $(USE_MULTIMODAL)
9590
AZURE_VISION_ENDPOINT: $(AZURE_VISION_ENDPOINT)
9691
VISION_SECRET_NAME: $(VISION_SECRET_NAME)
97-
AZURE_COMPUTER_VISION_SERVICE: $(AZURE_COMPUTER_VISION_SERVICE)
98-
AZURE_COMPUTER_VISION_RESOURCE_GROUP: $(AZURE_COMPUTER_VISION_RESOURCE_GROUP)
99-
AZURE_COMPUTER_VISION_LOCATION: $(AZURE_COMPUTER_VISION_LOCATION)
100-
AZURE_COMPUTER_VISION_SKU: $(AZURE_COMPUTER_VISION_SKU)
92+
AZURE_VISION_SERVICE: $(AZURE_VISION_SERVICE)
93+
AZURE_VISION_RESOURCE_GROUP: $(AZURE_VISION_RESOURCE_GROUP)
94+
AZURE_VISION_LOCATION: $(AZURE_VISION_LOCATION)
95+
AZURE_VISION_SKU: $(AZURE_VISION_SKU)
10196
ENABLE_LANGUAGE_PICKER: $(ENABLE_LANGUAGE_PICKER)
10297
USE_SPEECH_INPUT_BROWSER: $(USE_SPEECH_INPUT_BROWSER)
10398
USE_SPEECH_OUTPUT_BROWSER: $(USE_SPEECH_OUTPUT_BROWSER)
@@ -126,6 +121,10 @@ steps:
126121
AZURE_CONTAINER_APPS_WORKLOAD_PROFILE: $(AZURE_CONTAINER_APPS_WORKLOAD_PROFILE)
127122
USE_CHAT_HISTORY_BROWSER: $(USE_CHAT_HISTORY_BROWSER)
128123
USE_MEDIA_DESCRIBER_AZURE_CU: $(USE_MEDIA_DESCRIBER_AZURE_CU)
124+
RAG_SEARCH_TEXT_EMBEDDINGS: $(RAG_SEARCH_TEXT_EMBEDDINGS)
125+
RAG_SEARCH_IMAGE_EMBEDDINGS: $(RAG_SEARCH_IMAGE_EMBEDDINGS)
126+
RAG_SEND_TEXT_SOURCES: $(RAG_SEND_TEXT_SOURCES)
127+
RAG_SEND_IMAGE_SOURCES: $(RAG_SEND_IMAGE_SOURCES)
129128
- task: AzureCLI@2
130129
displayName: Deploy Application
131130
inputs:

.github/chatmodes/fixer.chatmode.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,12 @@ You MUST check task output readiness before debugging, testing, or declaring wor
2626
- If watchers seem stuck or output stops updating, stop the tasks and run the "Development" task again.
2727
- To interact with a running application, use the Playwright MCP server. If testing login, you will need to navigate to 'localhost' instead of '127.0.0.1' since that's the URL allowed by the Entra application.
2828

29+
## Running Python scripts
30+
31+
If you are running Python scripts that depend on installed requirements, you must run them using the virtual environment in `.venv`.
32+
2933
## Committing the change
3034

3135
When change is complete, offer to make a new branch, git commit, and pull request.
36+
(DO NOT check out a new branch unless explicitly confirmed - sometimes user is already in a branch)
3237
Make sure the PR follows the PULL_REQUEST_TEMPLATE.md format, with all sections filled out and appropriate checkboxes checked.

.github/copilot-instructions.md

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,33 @@
1+
# Overall code layout
2+
3+
* app: Contains the main application code, including frontend and backend.
4+
* app/backend: Contains the Python backend code, written with Quart framework.
5+
* app/backend/approaches: Contains the different approaches
6+
* app/backend/approaches/approach.py: Base class for all approaches
7+
* app/backend/approaches/retrievethenread.py: Ask approach, just searches and answers
8+
* app/backend/approaches/chatreadretrieveread.py: Chat approach, includes query rewriting step first
9+
* app/backend/approaches/prompts/ask_answer_question.prompty: Prompt used by the Ask approach to answer the question based off sources
10+
* app/backend/approaches/prompts/chat_query_rewrite.prompty: Prompt used to rewrite the query based off search history into a better search query
11+
* app/backend/approaches/prompts/chat_query_rewrite_tools.json: Tools used by the query rewriting prompt
12+
* app/backend/approaches/prompts/chat_answer_question.prompty: Prompt used by the Chat approach to actually answer the question based off sources
13+
* app/backend/app.py: The main entry point for the backend application.
14+
* app/frontend: Contains the React frontend code, built with TypeScript, built with vite.
15+
* app/frontend/src/api: Contains the API client code for communicating with the backend.
16+
* app/frontend/src/components: Contains the React components for the frontend.
17+
* app/frontend/src/locales: Contains the translation files for internationalization.
18+
* app/frontend/src/locales/da/translation.json: Danish translations
19+
* app/frontend/src/locales/en/translation.json: English translations
20+
* app/frontend/src/locales/es/translation.json: Spanish translations
21+
* app/frontend/src/locales/fr/translation.json: French translations
22+
* app/frontend/src/locales/it/translation.json: Italian translations
23+
* app/frontend/src/locales/ja/translation.json: Japanese translations
24+
* app/frontend/src/locales/nl/translation.json: Dutch translations
25+
* app/frontend/src/locales/ptBR/translation.json: Portuguese translations
26+
* app/frontend/src/locales/tr/translation.json: Turkish translations
27+
* app/frontend/src/pages: Contains the main pages of the application
28+
* infra: Contains the Bicep templates for provisioning Azure resources.
29+
* tests: Contains the test code, including e2e tests, app integration tests, and unit tests.
30+
131
# Adding new data
232

333
New files should be added to the `data` folder, and then either run scripts/prepdocs.sh or scripts/prepdocs.ps1 to ingest the data.

.github/workflows/azure-dev.yml

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -37,10 +37,10 @@ jobs:
3737
AZURE_DOCUMENTINTELLIGENCE_RESOURCE_GROUP: ${{ vars.AZURE_DOCUMENTINTELLIGENCE_RESOURCE_GROUP }}
3838
AZURE_DOCUMENTINTELLIGENCE_SKU: ${{ vars.AZURE_DOCUMENTINTELLIGENCE_SKU }}
3939
AZURE_DOCUMENTINTELLIGENCE_LOCATION: ${{ vars.AZURE_DOCUMENTINTELLIGENCE_LOCATION }}
40-
AZURE_COMPUTER_VISION_SERVICE: ${{ vars.AZURE_COMPUTER_VISION_SERVICE }}
41-
AZURE_COMPUTER_VISION_RESOURCE_GROUP: ${{ vars.AZURE_COMPUTER_VISION_RESOURCE_GROUP }}
42-
AZURE_COMPUTER_VISION_LOCATION: ${{ vars.AZURE_COMPUTER_VISION_LOCATION }}
43-
AZURE_COMPUTER_VISION_SKU: ${{ vars.AZURE_COMPUTER_VISION_SKU }}
40+
AZURE_VISION_SERVICE: ${{ vars.AZURE_VISION_SERVICE }}
41+
AZURE_VISION_RESOURCE_GROUP: ${{ vars.AZURE_VISION_RESOURCE_GROUP }}
42+
AZURE_VISION_LOCATION: ${{ vars.AZURE_VISION_LOCATION }}
43+
AZURE_VISION_SKU: ${{ vars.AZURE_VISION_SKU }}
4444
AZURE_SEARCH_INDEX: ${{ vars.AZURE_SEARCH_INDEX }}
4545
AZURE_SEARCH_SERVICE: ${{ vars.AZURE_SEARCH_SERVICE }}
4646
AZURE_SEARCH_SERVICE_RESOURCE_GROUP: ${{ vars.AZURE_SEARCH_SERVICE_RESOURCE_GROUP }}
@@ -67,11 +67,6 @@ jobs:
6767
AZURE_OPENAI_EMB_DEPLOYMENT_CAPACITY: ${{ vars.AZURE_OPENAI_EMB_DEPLOYMENT_CAPACITY }}
6868
AZURE_OPENAI_EMB_DEPLOYMENT_VERSION: ${{ vars.AZURE_OPENAI_EMB_DEPLOYMENT_VERSION }}
6969
AZURE_OPENAI_EMB_DIMENSIONS: ${{ vars.AZURE_OPENAI_EMB_DIMENSIONS }}
70-
AZURE_OPENAI_GPT4V_MODEL: ${{ vars.AZURE_OPENAI_GPT4V_MODEL }}
71-
AZURE_OPENAI_GPT4V_DEPLOYMENT: ${{ vars.AZURE_OPENAI_GPT4V_DEPLOYMENT }}
72-
AZURE_OPENAI_GPT4V_DEPLOYMENT_CAPACITY: ${{ vars.AZURE_OPENAI_GPT4V_DEPLOYMENT_CAPACITY }}
73-
AZURE_OPENAI_GPT4V_DEPLOYMENT_VERSION: ${{ vars.AZURE_OPENAI_GPT4V_DEPLOYMENT_VERSION }}
74-
AZURE_OPENAI_GPT4V_DEPLOYMENT_SKU: ${{ vars.AZURE_OPENAI_GPT4V_DEPLOYMENT_SKU }}
7570
USE_EVAL: ${{ vars.USE_EVAL }}
7671
AZURE_OPENAI_EVAL_MODEL: ${{ vars.AZURE_OPENAI_EVAL_MODEL }}
7772
AZURE_OPENAI_EVAL_MODEL_VERSION: ${{ vars.AZURE_OPENAI_EVAL_MODEL_VERSION }}
@@ -87,7 +82,7 @@ jobs:
8782
AZURE_APPLICATION_INSIGHTS_DASHBOARD: ${{ vars.AZURE_APPLICATION_INSIGHTS_DASHBOARD }}
8883
AZURE_LOG_ANALYTICS: ${{ vars.AZURE_LOG_ANALYTICS }}
8984
USE_VECTORS: ${{ vars.USE_VECTORS }}
90-
USE_GPT4V: ${{ vars.USE_GPT4V }}
85+
USE_MULTIMODAL: ${{ vars.USE_MULTIMODAL }}
9186
AZURE_VISION_ENDPOINT: ${{ vars.AZURE_VISION_ENDPOINT }}
9287
VISION_SECRET_NAME: ${{ vars.VISION_SECRET_NAME }}
9388
ENABLE_LANGUAGE_PICKER: ${{ vars.ENABLE_LANGUAGE_PICKER }}
@@ -116,6 +111,10 @@ jobs:
116111
USE_CHAT_HISTORY_BROWSER: ${{ vars.USE_CHAT_HISTORY_BROWSER }}
117112
USE_MEDIA_DESCRIBER_AZURE_CU: ${{ vars.USE_MEDIA_DESCRIBER_AZURE_CU }}
118113
USE_AI_PROJECT: ${{ vars.USE_AI_PROJECT }}
114+
RAG_SEARCH_TEXT_EMBEDDINGS: ${{ vars.RAG_SEARCH_TEXT_EMBEDDINGS }}
115+
RAG_SEARCH_IMAGE_EMBEDDINGS: ${{ vars.RAG_SEARCH_IMAGE_EMBEDDINGS }}
116+
RAG_SEND_TEXT_SOURCES: ${{ vars.RAG_SEND_TEXT_SOURCES }}
117+
RAG_SEND_IMAGE_SOURCES: ${{ vars.RAG_SEND_IMAGE_SOURCES }}
119118
steps:
120119
- name: Checkout
121120
uses: actions/checkout@v5

.github/workflows/evaluate.yaml

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -35,10 +35,10 @@ jobs:
3535
AZURE_DOCUMENTINTELLIGENCE_RESOURCE_GROUP: ${{ vars.AZURE_DOCUMENTINTELLIGENCE_RESOURCE_GROUP }}
3636
AZURE_DOCUMENTINTELLIGENCE_SKU: ${{ vars.AZURE_DOCUMENTINTELLIGENCE_SKU }}
3737
AZURE_DOCUMENTINTELLIGENCE_LOCATION: ${{ vars.AZURE_DOCUMENTINTELLIGENCE_LOCATION }}
38-
AZURE_COMPUTER_VISION_SERVICE: ${{ vars.AZURE_COMPUTER_VISION_SERVICE }}
39-
AZURE_COMPUTER_VISION_RESOURCE_GROUP: ${{ vars.AZURE_COMPUTER_VISION_RESOURCE_GROUP }}
40-
AZURE_COMPUTER_VISION_LOCATION: ${{ vars.AZURE_COMPUTER_VISION_LOCATION }}
41-
AZURE_COMPUTER_VISION_SKU: ${{ vars.AZURE_COMPUTER_VISION_SKU }}
38+
AZURE_VISION_SERVICE: ${{ vars.AZURE_VISION_SERVICE }}
39+
AZURE_VISION_RESOURCE_GROUP: ${{ vars.AZURE_VISION_RESOURCE_GROUP }}
40+
AZURE_VISION_LOCATION: ${{ vars.AZURE_VISION_LOCATION }}
41+
AZURE_VISION_SKU: ${{ vars.AZURE_VISION_SKU }}
4242
AZURE_SEARCH_INDEX: ${{ vars.AZURE_SEARCH_INDEX }}
4343
AZURE_SEARCH_SERVICE: ${{ vars.AZURE_SEARCH_SERVICE }}
4444
AZURE_SEARCH_SERVICE_RESOURCE_GROUP: ${{ vars.AZURE_SEARCH_SERVICE_RESOURCE_GROUP }}
@@ -62,11 +62,6 @@ jobs:
6262
AZURE_OPENAI_EMB_DEPLOYMENT_CAPACITY: ${{ vars.AZURE_OPENAI_EMB_DEPLOYMENT_CAPACITY }}
6363
AZURE_OPENAI_EMB_DEPLOYMENT_VERSION: ${{ vars.AZURE_OPENAI_EMB_DEPLOYMENT_VERSION }}
6464
AZURE_OPENAI_EMB_DIMENSIONS: ${{ vars.AZURE_OPENAI_EMB_DIMENSIONS }}
65-
AZURE_OPENAI_GPT4V_MODEL: ${{ vars.AZURE_OPENAI_GPT4V_MODEL }}
66-
AZURE_OPENAI_GPT4V_DEPLOYMENT: ${{ vars.AZURE_OPENAI_GPT4V_DEPLOYMENT }}
67-
AZURE_OPENAI_GPT4V_DEPLOYMENT_CAPACITY: ${{ vars.AZURE_OPENAI_GPT4V_DEPLOYMENT_CAPACITY }}
68-
AZURE_OPENAI_GPT4V_DEPLOYMENT_VERSION: ${{ vars.AZURE_OPENAI_GPT4V_DEPLOYMENT_VERSION }}
69-
AZURE_OPENAI_GPT4V_DEPLOYMENT_SKU: ${{ vars.AZURE_OPENAI_GPT4V_DEPLOYMENT_SKU }}
7065
USE_EVAL: ${{ vars.USE_EVAL }}
7166
AZURE_OPENAI_EVAL_MODEL: ${{ vars.AZURE_OPENAI_EVAL_MODEL }}
7267
AZURE_OPENAI_EVAL_MODEL_VERSION: ${{ vars.AZURE_OPENAI_EVAL_MODEL_VERSION }}
@@ -82,7 +77,7 @@ jobs:
8277
AZURE_APPLICATION_INSIGHTS_DASHBOARD: ${{ vars.AZURE_APPLICATION_INSIGHTS_DASHBOARD }}
8378
AZURE_LOG_ANALYTICS: ${{ vars.AZURE_LOG_ANALYTICS }}
8479
USE_VECTORS: ${{ vars.USE_VECTORS }}
85-
USE_GPT4V: ${{ vars.USE_GPT4V }}
80+
USE_MULTIMODAL: ${{ vars.USE_MULTIMODAL }}
8681
AZURE_VISION_ENDPOINT: ${{ vars.AZURE_VISION_ENDPOINT }}
8782
VISION_SECRET_NAME: ${{ vars.VISION_SECRET_NAME }}
8883
ENABLE_LANGUAGE_PICKER: ${{ vars.ENABLE_LANGUAGE_PICKER }}

.github/workflows/python-test.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ jobs:
6464
run: black . --check --verbose
6565
- name: Run Python tests
6666
if: runner.os != 'Windows'
67-
run: pytest -s -vv --cov --cov-report=xml --cov-fail-under=89
67+
run: pytest -s -vv --cov --cov-report=xml --cov-fail-under=90
6868
- name: Check diff coverage
6969
if: runner.os != 'Windows'
7070
run: |

CONTRIBUTING.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ Once tests are passing, generate a coverage report to make sure your changes are
7373

7474
```shell
7575
pytest --cov --cov-report=xml && \
76-
diff-cover coverage.xml --format html:coverage_report.html && \
76+
diff-cover coverage.xml --html-report coverage_report.html && \
7777
open coverage_report.html
7878
```
7979

README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ The repo includes sample data so it's ready to try end to end. In this sample ap
6161
- Renders citations and thought process for each answer
6262
- Includes settings directly in the UI to tweak the behavior and experiment with options
6363
- Integrates Azure AI Search for indexing and retrieval of documents, with support for [many document formats](/docs/data_ingestion.md#supported-document-formats) as well as [integrated vectorization](/docs/data_ingestion.md#overview-of-integrated-vectorization)
64-
- Optional usage of [GPT-4 with vision](/docs/gpt4v.md) to reason over image-heavy documents
64+
- Optional usage of [multimodal models](/docs/multimodal.md) to reason over image-heavy documents
6565
- Optional addition of [speech input/output](/docs/deploy_features.md#enabling-speech-inputoutput) for accessibility
6666
- Optional automation of [user login and data access](/docs/login_and_acl.md) via Microsoft Entra
6767
- Performance tracing and monitoring with Application Insights
@@ -92,7 +92,7 @@ However, you can try the [Azure pricing calculator](https://azure.com/e/e3490de2
9292
- Azure AI Search: Basic tier, 1 replica, free level of semantic search. Pricing per hour. [Pricing](https://azure.microsoft.com/pricing/details/search/)
9393
- Azure Blob Storage: Standard tier with ZRS (Zone-redundant storage). Pricing per storage and read operations. [Pricing](https://azure.microsoft.com/pricing/details/storage/blobs/)
9494
- Azure Cosmos DB: Only provisioned if you enabled [chat history with Cosmos DB](docs/deploy_features.md#enabling-persistent-chat-history-with-azure-cosmos-db). Serverless tier. Pricing per request unit and storage. [Pricing](https://azure.microsoft.com/pricing/details/cosmos-db/)
95-
- Azure AI Vision: Only provisioned if you enabled [GPT-4 with vision](docs/gpt4v.md). Pricing per 1K transactions. [Pricing](https://azure.microsoft.com/pricing/details/cognitive-services/computer-vision/)
95+
- Azure AI Vision: Only provisioned if you enabled [multimodal approach](docs/multimodal.md). Pricing per 1K transactions. [Pricing](https://azure.microsoft.com/pricing/details/cognitive-services/computer-vision/)
9696
- Azure AI Content Understanding: Only provisioned if you enabled [media description](docs/deploy_features.md#enabling-media-description-with-azure-content-understanding). Pricing per 1K images. [Pricing](https://azure.microsoft.com/pricing/details/content-understanding/)
9797
- Azure Monitor: Pay-as-you-go tier. Costs based on data ingested. [Pricing](https://azure.microsoft.com/pricing/details/monitor/)
9898

@@ -255,7 +255,7 @@ You can find extensive documentation in the [docs](docs/README.md) folder:
255255
- [Enabling optional features](docs/deploy_features.md)
256256
- [All features](docs/deploy_features.md)
257257
- [Login and access control](docs/login_and_acl.md)
258-
- [GPT-4 Turbo with Vision](docs/gpt4v.md)
258+
- [Multimodal](docs/multimodal.md)
259259
- [Reasoning](docs/reasoning.md)
260260
- [Private endpoints](docs/deploy_private.md)
261261
- [Agentic retrieval](docs/agentic_retrieval.md)

0 commit comments

Comments
 (0)