mirror of
https://github.com/open-webui/open-webui
synced 2025-06-26 18:26:48 +00:00
Fix: Added missing docling UI sections
This commit is contained in:
parent
eae1829b42
commit
4a8ff0b790
@ -256,7 +256,21 @@
|
|||||||
// update ragconfig to load reranker
|
// update ragconfig to load reranker
|
||||||
const backendRAGConfig = { ...filteredRAGConfig, knowledge_id: res.id };
|
const backendRAGConfig = { ...filteredRAGConfig, knowledge_id: res.id };
|
||||||
|
|
||||||
await updateRAGConfig(localStorage.token, backendRAGConfig);
|
await updateRAGConfig(localStorage.token, {
|
||||||
|
...backendRAGConfig,
|
||||||
|
ALLOWED_FILE_EXTENSIONS: backendRAGConfig.ALLOWED_FILE_EXTENSIONS.split(',')
|
||||||
|
.map((ext) => ext.trim())
|
||||||
|
.filter((ext) => ext !== ''),
|
||||||
|
DATALAB_MARKER_LANGS: backendRAGConfig.DATALAB_MARKER_LANGS.split(',')
|
||||||
|
.map((code) => code.trim())
|
||||||
|
.filter((code) => code !== '')
|
||||||
|
.join(', '),
|
||||||
|
DOCLING_PICTURE_DESCRIPTION_LOCAL: JSON.parse(
|
||||||
|
backendRAGConfig.DOCLING_PICTURE_DESCRIPTION_LOCAL || '{}'
|
||||||
|
),
|
||||||
|
DOCLING_PICTURE_DESCRIPTION_API: JSON.parse(backendRAGConfig.DOCLING_PICTURE_DESCRIPTION_API || '{}')
|
||||||
|
}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -547,13 +561,101 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{:else if RAGConfig.CONTENT_EXTRACTION_ENGINE === 'docling'}
|
{:else if RAGConfig.CONTENT_EXTRACTION_ENGINE === 'docling'}
|
||||||
<div class="flex w-full mt-1">
|
<div class="flex w-full mt-1">
|
||||||
<input
|
<input
|
||||||
class="flex-1 w-full rounded-lg text-sm bg-transparent outline-hidden"
|
class="flex-1 w-full text-sm bg-transparent outline-hidden"
|
||||||
placeholder={$i18n.t('Enter Docling Server URL')}
|
placeholder={$i18n.t('Enter Docling Server URL')}
|
||||||
bind:value={RAGConfig.DOCLING_SERVER_URL}
|
bind:value={RAGConfig.DOCLING_SERVER_URL}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="flex w-full mt-2">
|
||||||
|
<input
|
||||||
|
class="flex-1 w-full text-sm bg-transparent outline-hidden"
|
||||||
|
placeholder={$i18n.t('Enter Docling OCR Engine')}
|
||||||
|
bind:value={RAGConfig.DOCLING_OCR_ENGINE}
|
||||||
|
/>
|
||||||
|
<input
|
||||||
|
class="flex-1 w-full text-sm bg-transparent outline-hidden"
|
||||||
|
placeholder={$i18n.t('Enter Docling OCR Language(s)')}
|
||||||
|
bind:value={RAGConfig.DOCLING_OCR_LANG}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="flex w-full mt-2">
|
||||||
|
<div class="flex-1 flex justify-between">
|
||||||
|
<div class=" self-center text-xs font-medium">
|
||||||
|
{$i18n.t('Describe Pictures in Documents')}
|
||||||
|
</div>
|
||||||
|
<div class="flex items-center relative">
|
||||||
|
<Switch bind:state={RAGConfig.DOCLING_DO_PICTURE_DESCRIPTION} />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{#if RAGConfig.DOCLING_DO_PICTURE_DESCRIPTION}
|
||||||
|
<div class="flex justify-between w-full mt-2">
|
||||||
|
<div class="self-center text-xs font-medium">
|
||||||
|
<Tooltip content={''} placement="top-start">
|
||||||
|
{$i18n.t('Picture Description Mode')}
|
||||||
|
</Tooltip>
|
||||||
|
</div>
|
||||||
|
<div class="">
|
||||||
|
<select
|
||||||
|
class="dark:bg-gray-900 w-fit pr-8 rounded-sm px-2 text-xs bg-transparent outline-hidden text-right"
|
||||||
|
bind:value={RAGConfig.DOCLING_PICTURE_DESCRIPTION_MODE}
|
||||||
|
>
|
||||||
|
<option value="">{$i18n.t('Default')}</option>
|
||||||
|
<option value="local">{$i18n.t('Local')}</option>
|
||||||
|
<option value="api">{$i18n.t('API')}</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{#if RAGConfig.DOCLING_PICTURE_DESCRIPTION_MODE === 'local'}
|
||||||
|
<div class="flex flex-col gap-2 mt-2">
|
||||||
|
<div class=" flex flex-col w-full justify-between">
|
||||||
|
<div class=" mb-1 text-xs font-medium">
|
||||||
|
{$i18n.t('Picture Description Local Config')}
|
||||||
|
</div>
|
||||||
|
<div class="flex w-full items-center relative">
|
||||||
|
<Tooltip
|
||||||
|
content={$i18n.t(
|
||||||
|
'Options for running a local vision-language model in the picture description. The parameters refer to a model hosted on Hugging Face. This parameter is mutually exclusive with picture_description_api.'
|
||||||
|
)}
|
||||||
|
placement="top-start"
|
||||||
|
className="w-full"
|
||||||
|
>
|
||||||
|
<Textarea
|
||||||
|
bind:value={RAGConfig.DOCLING_PICTURE_DESCRIPTION_LOCAL}
|
||||||
|
placeholder={$i18n.t('Enter Config in JSON format')}
|
||||||
|
/>
|
||||||
|
</Tooltip>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{:else if RAGConfig.DOCLING_PICTURE_DESCRIPTION_MODE === 'api'}
|
||||||
|
<div class="flex flex-col gap-2 mt-2">
|
||||||
|
<div class=" flex flex-col w-full justify-between">
|
||||||
|
<div class=" mb-1 text-xs font-medium">
|
||||||
|
{$i18n.t('Picture Description API Config')}
|
||||||
|
</div>
|
||||||
|
<div class="flex w-full items-center relative">
|
||||||
|
<Tooltip
|
||||||
|
content={$i18n.t(
|
||||||
|
'API details for using a vision-language model in the picture description. This parameter is mutually exclusive with picture_description_local.'
|
||||||
|
)}
|
||||||
|
placement="top-start"
|
||||||
|
className="w-full"
|
||||||
|
>
|
||||||
|
<Textarea
|
||||||
|
bind:value={RAGConfig.DOCLING_PICTURE_DESCRIPTION_API}
|
||||||
|
placeholder={$i18n.t('Enter Config in JSON format')}
|
||||||
|
/>
|
||||||
|
</Tooltip>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{/if}
|
||||||
|
{/if}
|
||||||
{:else if RAGConfig.CONTENT_EXTRACTION_ENGINE === 'document_intelligence'}
|
{:else if RAGConfig.CONTENT_EXTRACTION_ENGINE === 'document_intelligence'}
|
||||||
<div class="my-0.5 flex gap-2 pr-2">
|
<div class="my-0.5 flex gap-2 pr-2">
|
||||||
<input
|
<input
|
||||||
@ -850,11 +952,6 @@
|
|||||||
<div class="flex items-center relative">
|
<div class="flex items-center relative">
|
||||||
<Switch
|
<Switch
|
||||||
bind:state={RAGConfig.ENABLE_RAG_HYBRID_SEARCH}
|
bind:state={RAGConfig.ENABLE_RAG_HYBRID_SEARCH}
|
||||||
on:change={() => {
|
|
||||||
if (!RAGConfig.ENABLE_RAG_HYBRID_SEARCH) {
|
|
||||||
RAGConfig.RAG_RERANKING_MODEL = "";
|
|
||||||
}
|
|
||||||
}}
|
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -582,6 +582,18 @@
|
|||||||
|
|
||||||
if (res) {
|
if (res) {
|
||||||
knowledge = res;
|
knowledge = res;
|
||||||
|
knowledge.rag_config.ALLOWED_FILE_EXTENSIONS = (config?.ALLOWED_FILE_EXTENSIONS ?? []).join(', ');
|
||||||
|
|
||||||
|
knowledge.rag_config.DOCLING_PICTURE_DESCRIPTION_LOCAL = JSON.stringify(
|
||||||
|
config.DOCLING_PICTURE_DESCRIPTION_LOCAL ?? {},
|
||||||
|
null,
|
||||||
|
2
|
||||||
|
);
|
||||||
|
knowledge.rag_config.DOCLING_PICTURE_DESCRIPTION_API = JSON.stringify(
|
||||||
|
config.DOCLING_PICTURE_DESCRIPTION_API ?? {},
|
||||||
|
null,
|
||||||
|
2
|
||||||
|
);
|
||||||
} else {
|
} else {
|
||||||
goto('/workspace/knowledge');
|
goto('/workspace/knowledge');
|
||||||
}
|
}
|
||||||
|
@ -249,7 +249,20 @@
|
|||||||
|
|
||||||
// Create the filtered RAGConfig for backend updates
|
// Create the filtered RAGConfig for backend updates
|
||||||
const backendRAGConfig = { ...filteredRAGConfig, knowledge_id: knowledgeId };
|
const backendRAGConfig = { ...filteredRAGConfig, knowledge_id: knowledgeId };
|
||||||
await updateRAGConfig(localStorage.token, backendRAGConfig)
|
await updateRAGConfig(localStorage.token, {
|
||||||
|
...backendRAGConfig,
|
||||||
|
ALLOWED_FILE_EXTENSIONS: backendRAGConfig.ALLOWED_FILE_EXTENSIONS.split(',')
|
||||||
|
.map((ext) => ext.trim())
|
||||||
|
.filter((ext) => ext !== ''),
|
||||||
|
DATALAB_MARKER_LANGS: backendRAGConfig.DATALAB_MARKER_LANGS.split(',')
|
||||||
|
.map((code) => code.trim())
|
||||||
|
.filter((code) => code !== '')
|
||||||
|
.join(', '),
|
||||||
|
DOCLING_PICTURE_DESCRIPTION_LOCAL: JSON.parse(
|
||||||
|
backendRAGConfig.DOCLING_PICTURE_DESCRIPTION_LOCAL || '{}'
|
||||||
|
),
|
||||||
|
DOCLING_PICTURE_DESCRIPTION_API: JSON.parse(backendRAGConfig.DOCLING_PICTURE_DESCRIPTION_API || '{}')
|
||||||
|
})
|
||||||
|
|
||||||
if (!localRAGConfig.BYPASS_EMBEDDING_AND_RETRIEVAL) {
|
if (!localRAGConfig.BYPASS_EMBEDDING_AND_RETRIEVAL) {
|
||||||
await embeddingModelUpdateHandler();
|
await embeddingModelUpdateHandler();
|
||||||
@ -494,14 +507,102 @@
|
|||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{:else if localRAGConfig.CONTENT_EXTRACTION_ENGINE === 'docling'}
|
{:else if RAGConfig.CONTENT_EXTRACTION_ENGINE === 'docling'}
|
||||||
<div class="flex w-full mt-1">
|
<div class="flex w-full mt-1">
|
||||||
<input
|
<input
|
||||||
class="flex-1 w-full rounded-lg text-sm bg-transparent outline-hidden"
|
class="flex-1 w-full text-sm bg-transparent outline-hidden"
|
||||||
placeholder={$i18n.t('Enter Docling Server URL')}
|
placeholder={$i18n.t('Enter Docling Server URL')}
|
||||||
bind:value={localRAGConfig.DOCLING_SERVER_URL}
|
bind:value={RAGConfig.DOCLING_SERVER_URL}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="flex w-full mt-2">
|
||||||
|
<input
|
||||||
|
class="flex-1 w-full text-sm bg-transparent outline-hidden"
|
||||||
|
placeholder={$i18n.t('Enter Docling OCR Engine')}
|
||||||
|
bind:value={RAGConfig.DOCLING_OCR_ENGINE}
|
||||||
|
/>
|
||||||
|
<input
|
||||||
|
class="flex-1 w-full text-sm bg-transparent outline-hidden"
|
||||||
|
placeholder={$i18n.t('Enter Docling OCR Language(s)')}
|
||||||
|
bind:value={RAGConfig.DOCLING_OCR_LANG}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="flex w-full mt-2">
|
||||||
|
<div class="flex-1 flex justify-between">
|
||||||
|
<div class=" self-center text-xs font-medium">
|
||||||
|
{$i18n.t('Describe Pictures in Documents')}
|
||||||
|
</div>
|
||||||
|
<div class="flex items-center relative">
|
||||||
|
<Switch bind:state={RAGConfig.DOCLING_DO_PICTURE_DESCRIPTION} />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{#if RAGConfig.DOCLING_DO_PICTURE_DESCRIPTION}
|
||||||
|
<div class="flex justify-between w-full mt-2">
|
||||||
|
<div class="self-center text-xs font-medium">
|
||||||
|
<Tooltip content={''} placement="top-start">
|
||||||
|
{$i18n.t('Picture Description Mode')}
|
||||||
|
</Tooltip>
|
||||||
|
</div>
|
||||||
|
<div class="">
|
||||||
|
<select
|
||||||
|
class="dark:bg-gray-900 w-fit pr-8 rounded-sm px-2 text-xs bg-transparent outline-hidden text-right"
|
||||||
|
bind:value={RAGConfig.DOCLING_PICTURE_DESCRIPTION_MODE}
|
||||||
|
>
|
||||||
|
<option value="">{$i18n.t('Default')}</option>
|
||||||
|
<option value="local">{$i18n.t('Local')}</option>
|
||||||
|
<option value="api">{$i18n.t('API')}</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{#if RAGConfig.DOCLING_PICTURE_DESCRIPTION_MODE === 'local'}
|
||||||
|
<div class="flex flex-col gap-2 mt-2">
|
||||||
|
<div class=" flex flex-col w-full justify-between">
|
||||||
|
<div class=" mb-1 text-xs font-medium">
|
||||||
|
{$i18n.t('Picture Description Local Config')}
|
||||||
|
</div>
|
||||||
|
<div class="flex w-full items-center relative">
|
||||||
|
<Tooltip
|
||||||
|
content={$i18n.t(
|
||||||
|
'Options for running a local vision-language model in the picture description. The parameters refer to a model hosted on Hugging Face. This parameter is mutually exclusive with picture_description_api.'
|
||||||
|
)}
|
||||||
|
placement="top-start"
|
||||||
|
className="w-full"
|
||||||
|
>
|
||||||
|
<Textarea
|
||||||
|
bind:value={RAGConfig.DOCLING_PICTURE_DESCRIPTION_LOCAL}
|
||||||
|
placeholder={$i18n.t('Enter Config in JSON format')}
|
||||||
|
/>
|
||||||
|
</Tooltip>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{:else if RAGConfig.DOCLING_PICTURE_DESCRIPTION_MODE === 'api'}
|
||||||
|
<div class="flex flex-col gap-2 mt-2">
|
||||||
|
<div class=" flex flex-col w-full justify-between">
|
||||||
|
<div class=" mb-1 text-xs font-medium">
|
||||||
|
{$i18n.t('Picture Description API Config')}
|
||||||
|
</div>
|
||||||
|
<div class="flex w-full items-center relative">
|
||||||
|
<Tooltip
|
||||||
|
content={$i18n.t(
|
||||||
|
'API details for using a vision-language model in the picture description. This parameter is mutually exclusive with picture_description_local.'
|
||||||
|
)}
|
||||||
|
placement="top-start"
|
||||||
|
className="w-full"
|
||||||
|
>
|
||||||
|
<Textarea
|
||||||
|
bind:value={RAGConfig.DOCLING_PICTURE_DESCRIPTION_API}
|
||||||
|
placeholder={$i18n.t('Enter Config in JSON format')}
|
||||||
|
/>
|
||||||
|
</Tooltip>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{/if}
|
||||||
|
{/if}
|
||||||
{:else if localRAGConfig.CONTENT_EXTRACTION_ENGINE === 'document_intelligence'}
|
{:else if localRAGConfig.CONTENT_EXTRACTION_ENGINE === 'document_intelligence'}
|
||||||
<div class="my-0.5 flex gap-2 pr-2">
|
<div class="my-0.5 flex gap-2 pr-2">
|
||||||
<input
|
<input
|
||||||
@ -878,11 +979,6 @@
|
|||||||
<div class="flex items-center relative">
|
<div class="flex items-center relative">
|
||||||
<Switch
|
<Switch
|
||||||
bind:state={localRAGConfig.ENABLE_RAG_HYBRID_SEARCH}
|
bind:state={localRAGConfig.ENABLE_RAG_HYBRID_SEARCH}
|
||||||
on:change={() => {
|
|
||||||
if (!localRAGConfig.ENABLE_RAG_HYBRID_SEARCH) {
|
|
||||||
localRAGConfig.RAG_RERANKING_MODEL = "";
|
|
||||||
}
|
|
||||||
}}
|
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
Loading…
Reference in New Issue
Block a user