mirror of
				https://github.com/open-webui/open-webui
				synced 2025-06-26 18:26:48 +00:00 
			
		
		
		
	Fix: Added azure openai and other new merges for individual rag config
This commit is contained in:
		
							parent
							
								
									5f43d42cfa
								
							
						
					
					
						commit
						03c27f1b2b
					
				@ -42,6 +42,10 @@
 | 
				
			|||||||
	let OpenAIUrl = '';
 | 
						let OpenAIUrl = '';
 | 
				
			||||||
	let OpenAIKey = '';
 | 
						let OpenAIKey = '';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						let AzureOpenAIUrl = '';
 | 
				
			||||||
 | 
						let AzureOpenAIKey = '';
 | 
				
			||||||
 | 
						let AzureOpenAIVersion = '';
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
	let OllamaUrl = '';
 | 
						let OllamaUrl = '';
 | 
				
			||||||
	let OllamaKey = '';
 | 
						let OllamaKey = '';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -85,7 +89,14 @@
 | 
				
			|||||||
			return;
 | 
								return;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if ((embeddingEngine === 'openai' && OpenAIKey === '') || OpenAIUrl === '') {
 | 
							if (embeddingEngine === 'openai' && (OpenAIKey === '' || OpenAIUrl === '')) {
 | 
				
			||||||
 | 
								toast.error($i18n.t('OpenAI URL/Key required.'));
 | 
				
			||||||
 | 
								return;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							if (
 | 
				
			||||||
 | 
								embeddingEngine === 'azure_openai' &&
 | 
				
			||||||
 | 
								(AzureOpenAIKey === '' || AzureOpenAIUrl === '' || AzureOpenAIVersion === '')
 | 
				
			||||||
 | 
							) {
 | 
				
			||||||
			toast.error($i18n.t('OpenAI URL/Key required.'));
 | 
								toast.error($i18n.t('OpenAI URL/Key required.'));
 | 
				
			||||||
			return;
 | 
								return;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
@ -105,6 +116,11 @@
 | 
				
			|||||||
				key: OpenAIKey,
 | 
									key: OpenAIKey,
 | 
				
			||||||
				url: OpenAIUrl
 | 
									url: OpenAIUrl
 | 
				
			||||||
			},
 | 
								},
 | 
				
			||||||
 | 
								azure_openai_config: {
 | 
				
			||||||
 | 
									key: AzureOpenAIKey,
 | 
				
			||||||
 | 
									url: AzureOpenAIUrl,
 | 
				
			||||||
 | 
									version: AzureOpenAIVersion
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
            knowledge_id: knowledgeId
 | 
					            knowledge_id: knowledgeId
 | 
				
			||||||
		}).catch(async (error) => {
 | 
							}).catch(async (error) => {
 | 
				
			||||||
			toast.error(`${error}`);
 | 
								toast.error(`${error}`);
 | 
				
			||||||
@ -135,6 +151,10 @@
 | 
				
			|||||||
			OpenAIKey = embeddingConfig.openai_config.key;
 | 
								OpenAIKey = embeddingConfig.openai_config.key;
 | 
				
			||||||
			OpenAIUrl = embeddingConfig.openai_config.url;
 | 
								OpenAIUrl = embeddingConfig.openai_config.url;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								AzureOpenAIKey = embeddingConfig.azure_openai_config.key;
 | 
				
			||||||
 | 
								AzureOpenAIUrl = embeddingConfig.azure_openai_config.url;
 | 
				
			||||||
 | 
								AzureOpenAIVersion = embeddingConfig.azure_openai_config.version;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			OllamaKey = embeddingConfig.ollama_config.key;
 | 
								OllamaKey = embeddingConfig.ollama_config.key;
 | 
				
			||||||
			OllamaUrl = embeddingConfig.ollama_config.url;
 | 
								OllamaUrl = embeddingConfig.ollama_config.url;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
@ -166,7 +186,24 @@
 | 
				
			|||||||
				toast.error($i18n.t('Docling Server URL required.'));
 | 
									toast.error($i18n.t('Docling Server URL required.'));
 | 
				
			||||||
				return;
 | 
									return;
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
					            if (
 | 
				
			||||||
 | 
					                RAGConfig.CONTENT_EXTRACTION_ENGINE === 'docling' &&
 | 
				
			||||||
 | 
					                ((RAGConfig.DOCLING_OCR_ENGINE === '' && RAGConfig.DOCLING_OCR_LANG !== '') ||
 | 
				
			||||||
 | 
					                    (RAGConfig.DOCLING_OCR_ENGINE !== '' && RAGConfig.DOCLING_OCR_LANG === ''))
 | 
				
			||||||
 | 
					            ) {
 | 
				
			||||||
 | 
					                toast.error(
 | 
				
			||||||
 | 
					                    $i18n.t('Both Docling OCR Engine and Language(s) must be provided or both left empty.')
 | 
				
			||||||
 | 
					                );
 | 
				
			||||||
 | 
					                return;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (
 | 
				
			||||||
 | 
					                RAGConfig.CONTENT_EXTRACTION_ENGINE === 'datalab_marker' &&
 | 
				
			||||||
 | 
					                !RAGConfig.DATALAB_MARKER_API_KEY
 | 
				
			||||||
 | 
					            ) {
 | 
				
			||||||
 | 
					                toast.error($i18n.t('Datalab Marker API Key required.'));
 | 
				
			||||||
 | 
					                return;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
			if (
 | 
								if (
 | 
				
			||||||
				RAGConfig.CONTENT_EXTRACTION_ENGINE === 'document_intelligence' &&
 | 
									RAGConfig.CONTENT_EXTRACTION_ENGINE === 'document_intelligence' &&
 | 
				
			||||||
				(RAGConfig.DOCUMENT_INTELLIGENCE_ENDPOINT === '' ||
 | 
									(RAGConfig.DOCUMENT_INTELLIGENCE_ENDPOINT === '' ||
 | 
				
			||||||
@ -336,6 +373,7 @@
 | 
				
			|||||||
                        <option value="external">{$i18n.t('External')}</option>
 | 
					                        <option value="external">{$i18n.t('External')}</option>
 | 
				
			||||||
                        <option value="tika">{$i18n.t('Tika')}</option>
 | 
					                        <option value="tika">{$i18n.t('Tika')}</option>
 | 
				
			||||||
                        <option value="docling">{$i18n.t('Docling')}</option>
 | 
					                        <option value="docling">{$i18n.t('Docling')}</option>
 | 
				
			||||||
 | 
					                        <option value="datalab_marker">{$i18n.t('Datalab Marker API')}</option>
 | 
				
			||||||
                        <option value="document_intelligence">{$i18n.t('Document Intelligence')}</option>
 | 
					                        <option value="document_intelligence">{$i18n.t('Document Intelligence')}</option>
 | 
				
			||||||
                        <option value="mistral_ocr">{$i18n.t('Mistral OCR')}</option>
 | 
					                        <option value="mistral_ocr">{$i18n.t('Mistral OCR')}</option>
 | 
				
			||||||
                    </select>
 | 
					                    </select>
 | 
				
			||||||
@ -353,6 +391,138 @@
 | 
				
			|||||||
                            </div>
 | 
					                            </div>
 | 
				
			||||||
                        </div>
 | 
					                        </div>
 | 
				
			||||||
                    </div>
 | 
					                    </div>
 | 
				
			||||||
 | 
					                {:else if RAGConfig.CONTENT_EXTRACTION_ENGINE === 'datalab_marker'}
 | 
				
			||||||
 | 
					                    <div class="my-0.5 flex gap-2 pr-2">
 | 
				
			||||||
 | 
					                        <SensitiveInput
 | 
				
			||||||
 | 
					                            placeholder={$i18n.t('Enter Datalab Marker API Key')}
 | 
				
			||||||
 | 
					                            required={false}
 | 
				
			||||||
 | 
					                            bind:value={RAGConfig.DATALAB_MARKER_API_KEY}
 | 
				
			||||||
 | 
					                        />
 | 
				
			||||||
 | 
					                    </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    <div class="flex justify-between w-full mt-2">
 | 
				
			||||||
 | 
					                        <div class="text-xs font-medium">
 | 
				
			||||||
 | 
					                            {$i18n.t('Languages')}
 | 
				
			||||||
 | 
					                        </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        <input
 | 
				
			||||||
 | 
					                            class="text-sm bg-transparent outline-hidden"
 | 
				
			||||||
 | 
					                            type="text"
 | 
				
			||||||
 | 
					                            bind:value={RAGConfig.DATALAB_MARKER_LANGS}
 | 
				
			||||||
 | 
					                            placeholder={$i18n.t('e.g.) en,fr,de')}
 | 
				
			||||||
 | 
					                        />
 | 
				
			||||||
 | 
					                    </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    <div class="flex justify-between w-full mt-2">
 | 
				
			||||||
 | 
					                        <div class="self-center text-xs font-medium">
 | 
				
			||||||
 | 
					                            <Tooltip
 | 
				
			||||||
 | 
					                                content={$i18n.t(
 | 
				
			||||||
 | 
					                                    'Significantly improves accuracy by using an LLM to enhance tables, forms, inline math, and layout detection. Will increase latency. Defaults to True.'
 | 
				
			||||||
 | 
					                                )}
 | 
				
			||||||
 | 
					                                placement="top-start"
 | 
				
			||||||
 | 
					                            >
 | 
				
			||||||
 | 
					                                {$i18n.t('Use LLM')}
 | 
				
			||||||
 | 
					                            </Tooltip>
 | 
				
			||||||
 | 
					                        </div>
 | 
				
			||||||
 | 
					                        <div class="flex items-center">
 | 
				
			||||||
 | 
					                            <Switch bind:state={RAGConfig.DATALAB_MARKER_USE_LLM} />
 | 
				
			||||||
 | 
					                        </div>
 | 
				
			||||||
 | 
					                    </div>
 | 
				
			||||||
 | 
					                    <div class="flex justify-between w-full mt-2">
 | 
				
			||||||
 | 
					                        <div class="self-center text-xs font-medium">
 | 
				
			||||||
 | 
					                            <Tooltip
 | 
				
			||||||
 | 
					                                content={$i18n.t('Skip the cache and re-run the inference. Defaults to False.')}
 | 
				
			||||||
 | 
					                                placement="top-start"
 | 
				
			||||||
 | 
					                            >
 | 
				
			||||||
 | 
					                                {$i18n.t('Skip Cache')}
 | 
				
			||||||
 | 
					                            </Tooltip>
 | 
				
			||||||
 | 
					                        </div>
 | 
				
			||||||
 | 
					                        <div class="flex items-center">
 | 
				
			||||||
 | 
					                            <Switch bind:state={RAGConfig.DATALAB_MARKER_SKIP_CACHE} />
 | 
				
			||||||
 | 
					                        </div>
 | 
				
			||||||
 | 
					                    </div>
 | 
				
			||||||
 | 
					                    <div class="flex justify-between w-full mt-2">
 | 
				
			||||||
 | 
					                        <div class="self-center text-xs font-medium">
 | 
				
			||||||
 | 
					                            <Tooltip
 | 
				
			||||||
 | 
					                                content={$i18n.t(
 | 
				
			||||||
 | 
					                                    'Force OCR on all pages of the PDF. This can lead to worse results if you have good text in your PDFs. Defaults to False.'
 | 
				
			||||||
 | 
					                                )}
 | 
				
			||||||
 | 
					                                placement="top-start"
 | 
				
			||||||
 | 
					                            >
 | 
				
			||||||
 | 
					                                {$i18n.t('Force OCR')}
 | 
				
			||||||
 | 
					                            </Tooltip>
 | 
				
			||||||
 | 
					                        </div>
 | 
				
			||||||
 | 
					                        <div class="flex items-center">
 | 
				
			||||||
 | 
					                            <Switch bind:state={RAGConfig.DATALAB_MARKER_FORCE_OCR} />
 | 
				
			||||||
 | 
					                        </div>
 | 
				
			||||||
 | 
					                    </div>
 | 
				
			||||||
 | 
					                    <div class="flex justify-between w-full mt-2">
 | 
				
			||||||
 | 
					                        <div class="self-center text-xs font-medium">
 | 
				
			||||||
 | 
					                            <Tooltip
 | 
				
			||||||
 | 
					                                content={$i18n.t(
 | 
				
			||||||
 | 
					                                    'Whether to paginate the output. Each page will be separated by a horizontal rule and page number. Defaults to False.'
 | 
				
			||||||
 | 
					                                )}
 | 
				
			||||||
 | 
					                                placement="top-start"
 | 
				
			||||||
 | 
					                            >
 | 
				
			||||||
 | 
					                                {$i18n.t('Paginate')}
 | 
				
			||||||
 | 
					                            </Tooltip>
 | 
				
			||||||
 | 
					                        </div>
 | 
				
			||||||
 | 
					                        <div class="flex items-center">
 | 
				
			||||||
 | 
					                            <Switch bind:state={RAGConfig.DATALAB_MARKER_PAGINATE} />
 | 
				
			||||||
 | 
					                        </div>
 | 
				
			||||||
 | 
					                    </div>
 | 
				
			||||||
 | 
					                    <div class="flex justify-between w-full mt-2">
 | 
				
			||||||
 | 
					                        <div class="self-center text-xs font-medium">
 | 
				
			||||||
 | 
					                            <Tooltip
 | 
				
			||||||
 | 
					                                content={$i18n.t(
 | 
				
			||||||
 | 
					                                    'Strip existing OCR text from the PDF and re-run OCR. Ignored if Force OCR is enabled. Defaults to False.'
 | 
				
			||||||
 | 
					                                )}
 | 
				
			||||||
 | 
					                                placement="top-start"
 | 
				
			||||||
 | 
					                            >
 | 
				
			||||||
 | 
					                                {$i18n.t('Strip Existing OCR')}
 | 
				
			||||||
 | 
					                            </Tooltip>
 | 
				
			||||||
 | 
					                        </div>
 | 
				
			||||||
 | 
					                        <div class="flex items-center">
 | 
				
			||||||
 | 
					                            <Switch bind:state={RAGConfig.DATALAB_MARKER_STRIP_EXISTING_OCR} />
 | 
				
			||||||
 | 
					                        </div>
 | 
				
			||||||
 | 
					                    </div>
 | 
				
			||||||
 | 
					                    <div class="flex justify-between w-full mt-2">
 | 
				
			||||||
 | 
					                        <div class="self-center text-xs font-medium">
 | 
				
			||||||
 | 
					                            <Tooltip
 | 
				
			||||||
 | 
					                                content={$i18n.t(
 | 
				
			||||||
 | 
					                                    'Disable image extraction from the PDF. If Use LLM is enabled, images will be automatically captioned. Defaults to False.'
 | 
				
			||||||
 | 
					                                )}
 | 
				
			||||||
 | 
					                                placement="top-start"
 | 
				
			||||||
 | 
					                            >
 | 
				
			||||||
 | 
					                                {$i18n.t('Disable Image Extraction')}
 | 
				
			||||||
 | 
					                            </Tooltip>
 | 
				
			||||||
 | 
					                        </div>
 | 
				
			||||||
 | 
					                        <div class="flex items-center">
 | 
				
			||||||
 | 
					                            <Switch bind:state={RAGConfig.DATALAB_MARKER_DISABLE_IMAGE_EXTRACTION} />
 | 
				
			||||||
 | 
					                        </div>
 | 
				
			||||||
 | 
					                    </div>
 | 
				
			||||||
 | 
					                    <div class="flex justify-between w-full mt-2">
 | 
				
			||||||
 | 
					                        <div class="self-center text-xs font-medium">
 | 
				
			||||||
 | 
					                            <Tooltip
 | 
				
			||||||
 | 
					                                content={$i18n.t(
 | 
				
			||||||
 | 
					                                    "The output format for the text. Can be 'json', 'markdown', or 'html'. Defaults to 'markdown'."
 | 
				
			||||||
 | 
					                                )}
 | 
				
			||||||
 | 
					                                placement="top-start"
 | 
				
			||||||
 | 
					                            >
 | 
				
			||||||
 | 
					                                {$i18n.t('Output Format')}
 | 
				
			||||||
 | 
					                            </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.DATALAB_MARKER_OUTPUT_FORMAT}
 | 
				
			||||||
 | 
					                            >
 | 
				
			||||||
 | 
					                                <option value="markdown">{$i18n.t('Markdown')}</option>
 | 
				
			||||||
 | 
					                                <option value="json">{$i18n.t('JSON')}</option>
 | 
				
			||||||
 | 
					                                <option value="html">{$i18n.t('HTML')}</option>
 | 
				
			||||||
 | 
					                            </select>
 | 
				
			||||||
 | 
					                        </div>
 | 
				
			||||||
 | 
					                    </div>
 | 
				
			||||||
                {:else if RAGConfig.CONTENT_EXTRACTION_ENGINE === 'external'}
 | 
					                {:else if RAGConfig.CONTENT_EXTRACTION_ENGINE === 'external'}
 | 
				
			||||||
                    <div class="my-0.5 flex gap-2 pr-2">
 | 
					                    <div class="my-0.5 flex gap-2 pr-2">
 | 
				
			||||||
                        <input
 | 
					                        <input
 | 
				
			||||||
@ -500,6 +670,8 @@
 | 
				
			|||||||
                                        embeddingModel = '';
 | 
					                                        embeddingModel = '';
 | 
				
			||||||
                                    } else if (e.target.value === 'openai') {
 | 
					                                    } else if (e.target.value === 'openai') {
 | 
				
			||||||
                                        embeddingModel = 'text-embedding-3-small';
 | 
					                                        embeddingModel = 'text-embedding-3-small';
 | 
				
			||||||
 | 
					                                    } else if (e.target.value === 'azure_openai') {
 | 
				
			||||||
 | 
					                                        embeddingModel = 'text-embedding-3-small';
 | 
				
			||||||
                                    } else if (e.target.value === '') {
 | 
					                                    } else if (e.target.value === '') {
 | 
				
			||||||
                                        embeddingModel = 'sentence-transformers/all-MiniLM-L6-v2';
 | 
					                                        embeddingModel = 'sentence-transformers/all-MiniLM-L6-v2';
 | 
				
			||||||
                                    }
 | 
					                                    }
 | 
				
			||||||
@ -508,6 +680,7 @@
 | 
				
			|||||||
                                <option value="">{$i18n.t('Default (SentenceTransformers)')}</option>
 | 
					                                <option value="">{$i18n.t('Default (SentenceTransformers)')}</option>
 | 
				
			||||||
                                <option value="ollama">{$i18n.t('Ollama')}</option>
 | 
					                                <option value="ollama">{$i18n.t('Ollama')}</option>
 | 
				
			||||||
                                <option value="openai">{$i18n.t('OpenAI')}</option>
 | 
					                                <option value="openai">{$i18n.t('OpenAI')}</option>
 | 
				
			||||||
 | 
					                                <option value="azure_openai">Azure OpenAI</option>
 | 
				
			||||||
                            </select>
 | 
					                            </select>
 | 
				
			||||||
                        </div>
 | 
					                        </div>
 | 
				
			||||||
                    </div>
 | 
					                    </div>
 | 
				
			||||||
@ -538,6 +711,26 @@
 | 
				
			|||||||
                                required={false}
 | 
					                                required={false}
 | 
				
			||||||
                            />
 | 
					                            />
 | 
				
			||||||
                        </div>
 | 
					                        </div>
 | 
				
			||||||
 | 
					                    {:else if embeddingEngine === 'azure_openai'}
 | 
				
			||||||
 | 
					                        <div class="my-0.5 flex flex-col gap-2 pr-2 w-full">
 | 
				
			||||||
 | 
					                            <div class="flex gap-2">
 | 
				
			||||||
 | 
					                                <input
 | 
				
			||||||
 | 
					                                    class="flex-1 w-full text-sm bg-transparent outline-hidden"
 | 
				
			||||||
 | 
					                                    placeholder={$i18n.t('API Base URL')}
 | 
				
			||||||
 | 
					                                    bind:value={AzureOpenAIUrl}
 | 
				
			||||||
 | 
					                                    required
 | 
				
			||||||
 | 
					                                />
 | 
				
			||||||
 | 
					                                <SensitiveInput placeholder={$i18n.t('API Key')} bind:value={AzureOpenAIKey} />
 | 
				
			||||||
 | 
					                            </div>
 | 
				
			||||||
 | 
					                            <div class="flex gap-2">
 | 
				
			||||||
 | 
					                                <input
 | 
				
			||||||
 | 
					                                    class="flex-1 w-full text-sm bg-transparent outline-hidden"
 | 
				
			||||||
 | 
					                                    placeholder="Version"
 | 
				
			||||||
 | 
					                                    bind:value={AzureOpenAIVersion}
 | 
				
			||||||
 | 
					                                    required
 | 
				
			||||||
 | 
					                                />
 | 
				
			||||||
 | 
					                            </div>
 | 
				
			||||||
 | 
					                        </div>
 | 
				
			||||||
                    {/if}
 | 
					                    {/if}
 | 
				
			||||||
                </div>
 | 
					                </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -609,7 +802,7 @@
 | 
				
			|||||||
                    </div>
 | 
					                    </div>
 | 
				
			||||||
                </div>
 | 
					                </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                {#if embeddingEngine === 'ollama' || embeddingEngine === 'openai'}
 | 
					                {#if embeddingEngine === 'ollama' || embeddingEngine === 'openai' || embeddingEngine === 'azure_openai'}
 | 
				
			||||||
                    <div class="  mb-2.5 flex w-full justify-between">
 | 
					                    <div class="  mb-2.5 flex w-full justify-between">
 | 
				
			||||||
                        <div class=" self-center text-xs font-medium">
 | 
					                        <div class=" self-center text-xs font-medium">
 | 
				
			||||||
                            {$i18n.t('Embedding Batch Size')}
 | 
					                            {$i18n.t('Embedding Batch Size')}
 | 
				
			||||||
@ -819,6 +1012,25 @@
 | 
				
			|||||||
                            </div>
 | 
					                            </div>
 | 
				
			||||||
                        </div>
 | 
					                        </div>
 | 
				
			||||||
                    {/if}
 | 
					                    {/if}
 | 
				
			||||||
 | 
					                    {#if RAGConfig.ENABLE_RAG_HYBRID_SEARCH === true}
 | 
				
			||||||
 | 
					                        <div class="mb-2.5 flex w-full justify-between">
 | 
				
			||||||
 | 
					                            <div class="self-center text-xs font-medium">
 | 
				
			||||||
 | 
					                                {$i18n.t('Weight of BM25 Retrieval')}
 | 
				
			||||||
 | 
					                            </div>
 | 
				
			||||||
 | 
					                            <div class="flex items-center relative">
 | 
				
			||||||
 | 
					                                <input
 | 
				
			||||||
 | 
					                                    class="flex-1 w-full text-sm bg-transparent outline-hidden"
 | 
				
			||||||
 | 
					                                    type="number"
 | 
				
			||||||
 | 
					                                    step="0.01"
 | 
				
			||||||
 | 
					                                    placeholder={$i18n.t('Enter BM25 Weight')}
 | 
				
			||||||
 | 
					                                    bind:value={RAGConfig.HYBRID_BM25_WEIGHT}
 | 
				
			||||||
 | 
					                                    autocomplete="off"
 | 
				
			||||||
 | 
					                                    min="0.0"
 | 
				
			||||||
 | 
					                                    max="1.0"
 | 
				
			||||||
 | 
					                                />
 | 
				
			||||||
 | 
					                            </div>
 | 
				
			||||||
 | 
					                        </div>
 | 
				
			||||||
 | 
					                    {/if}
 | 
				
			||||||
                {/if}
 | 
					                {/if}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                <div class="  mb-2.5 flex flex-col w-full justify-between">
 | 
					                <div class="  mb-2.5 flex flex-col w-full justify-between">
 | 
				
			||||||
 | 
				
			|||||||
@ -45,6 +45,10 @@
 | 
				
			|||||||
    let OpenAIUrl = RAGConfig.openai_config?.url || "";
 | 
					    let OpenAIUrl = RAGConfig.openai_config?.url || "";
 | 
				
			||||||
    let OpenAIKey = RAGConfig.openai_config?.key || "";
 | 
					    let OpenAIKey = RAGConfig.openai_config?.key || "";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						let AzureOpenAIUrl = RAGConfig.azure_openai_config?.url || "";
 | 
				
			||||||
 | 
						let AzureOpenAIKey = RAGConfig.azure_openai_config?.key || "";
 | 
				
			||||||
 | 
						let AzureOpenAIVersion = RAGConfig.azure_openai_config?.version || "";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    let OllamaUrl = RAGConfig.ollama_config?.url || "";
 | 
					    let OllamaUrl = RAGConfig.ollama_config?.url || "";
 | 
				
			||||||
    let OllamaKey = RAGConfig.ollama_config?.key || "";
 | 
					    let OllamaKey = RAGConfig.ollama_config?.key || "";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -61,6 +65,10 @@
 | 
				
			|||||||
    OpenAIUrl = RAGConfig.openai_config?.url || "";
 | 
					    OpenAIUrl = RAGConfig.openai_config?.url || "";
 | 
				
			||||||
    OpenAIKey = RAGConfig.openai_config?.key || "";
 | 
					    OpenAIKey = RAGConfig.openai_config?.key || "";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    AzureOpenAIUrl = RAGConfig.azure_openai_config?.url || "";
 | 
				
			||||||
 | 
					    AzureOpenAIKey = RAGConfig.azure_openai_config?.key || "";
 | 
				
			||||||
 | 
					    AzureOpenAIVersion = RAGConfig.azure_openai_config?.version || "";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    OllamaUrl = RAGConfig.ollama_config?.url || "";
 | 
					    OllamaUrl = RAGConfig.ollama_config?.url || "";
 | 
				
			||||||
    OllamaKey = RAGConfig.ollama_config?.key || "";
 | 
					    OllamaKey = RAGConfig.ollama_config?.key || "";
 | 
				
			||||||
    needsReindex = false;
 | 
					    needsReindex = false;
 | 
				
			||||||
@ -101,7 +109,14 @@
 | 
				
			|||||||
            return;
 | 
					            return;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if ((embeddingEngine === 'openai' && OpenAIKey === '') || OpenAIUrl === '') {
 | 
							if (embeddingEngine === 'openai' && (OpenAIKey === '' || OpenAIUrl === '')) {
 | 
				
			||||||
 | 
								toast.error($i18n.t('OpenAI URL/Key required.'));
 | 
				
			||||||
 | 
								return;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							if (
 | 
				
			||||||
 | 
								embeddingEngine === 'azure_openai' &&
 | 
				
			||||||
 | 
								(AzureOpenAIKey === '' || AzureOpenAIUrl === '' || AzureOpenAIVersion === '')
 | 
				
			||||||
 | 
							) {
 | 
				
			||||||
			toast.error($i18n.t('OpenAI URL/Key required.'));
 | 
								toast.error($i18n.t('OpenAI URL/Key required.'));
 | 
				
			||||||
			return;
 | 
								return;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
@ -121,6 +136,11 @@
 | 
				
			|||||||
                key: OpenAIKey,
 | 
					                key: OpenAIKey,
 | 
				
			||||||
                url: OpenAIUrl
 | 
					                url: OpenAIUrl
 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
 | 
					            azure_openai_config: {
 | 
				
			||||||
 | 
									key: AzureOpenAIKey,
 | 
				
			||||||
 | 
									url: AzureOpenAIUrl,
 | 
				
			||||||
 | 
									version: AzureOpenAIVersion
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
            knowledge_id: knowledgeId,
 | 
					            knowledge_id: knowledgeId,
 | 
				
			||||||
        }).catch(async (error) => {
 | 
					        }).catch(async (error) => {
 | 
				
			||||||
            toast.error(`${error}`);
 | 
					            toast.error(`${error}`);
 | 
				
			||||||
@ -151,6 +171,10 @@
 | 
				
			|||||||
            OpenAIKey = embeddingConfig.openai_config.key;
 | 
					            OpenAIKey = embeddingConfig.openai_config.key;
 | 
				
			||||||
            OpenAIUrl = embeddingConfig.openai_config.url;
 | 
					            OpenAIUrl = embeddingConfig.openai_config.url;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								AzureOpenAIKey = embeddingConfig.azure_openai_config.key;
 | 
				
			||||||
 | 
								AzureOpenAIUrl = embeddingConfig.azure_openai_config.url;
 | 
				
			||||||
 | 
								AzureOpenAIVersion = embeddingConfig.azure_openai_config.version;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            OllamaKey = embeddingConfig.ollama_config.key;
 | 
					            OllamaKey = embeddingConfig.ollama_config.key;
 | 
				
			||||||
            OllamaUrl = embeddingConfig.ollama_config.url;
 | 
					            OllamaUrl = embeddingConfig.ollama_config.url;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
@ -184,6 +208,13 @@
 | 
				
			|||||||
			);
 | 
								);
 | 
				
			||||||
			return;
 | 
								return;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
							if (
 | 
				
			||||||
 | 
								localRAGConfig.CONTENT_EXTRACTION_ENGINE === 'datalab_marker' &&
 | 
				
			||||||
 | 
								!localRAGConfig.DATALAB_MARKER_API_KEY
 | 
				
			||||||
 | 
							) {
 | 
				
			||||||
 | 
								toast.error($i18n.t('Datalab Marker API Key required.'));
 | 
				
			||||||
 | 
								return;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (
 | 
					        if (
 | 
				
			||||||
            localRAGConfig.CONTENT_EXTRACTION_ENGINE === 'document_intelligence' &&
 | 
					            localRAGConfig.CONTENT_EXTRACTION_ENGINE === 'document_intelligence' &&
 | 
				
			||||||
@ -208,6 +239,7 @@
 | 
				
			|||||||
            embedding_batch_size, 
 | 
					            embedding_batch_size, 
 | 
				
			||||||
            openai_config, 
 | 
					            openai_config, 
 | 
				
			||||||
            ollama_config,
 | 
					            ollama_config,
 | 
				
			||||||
 | 
					            azure_openai_config,
 | 
				
			||||||
            LOADED_EMBEDDING_MODELS,
 | 
					            LOADED_EMBEDDING_MODELS,
 | 
				
			||||||
            DOWNLOADED_EMBEDDING_MODELS,
 | 
					            DOWNLOADED_EMBEDDING_MODELS,
 | 
				
			||||||
            LOADED_RERANKING_MODELS,
 | 
					            LOADED_RERANKING_MODELS,
 | 
				
			||||||
@ -229,16 +261,15 @@
 | 
				
			|||||||
        localRAGConfig.embedding_batch_size = embeddingBatchSize
 | 
					        localRAGConfig.embedding_batch_size = embeddingBatchSize
 | 
				
			||||||
        localRAGConfig.openai_config = {"key": OpenAIKey, "url": OpenAIUrl}          
 | 
					        localRAGConfig.openai_config = {"key": OpenAIKey, "url": OpenAIUrl}          
 | 
				
			||||||
        localRAGConfig.ollama_config = {"key": OllamaKey, "url": OllamaUrl}
 | 
					        localRAGConfig.ollama_config = {"key": OllamaKey, "url": OllamaUrl}
 | 
				
			||||||
 | 
					        localRAGConfig.azure_openai_config = {"key": AzureOpenAIKey, "url": AzureOpenAIUrl, "version": AzureOpenAIVersion}
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
        if (needsReindex) {
 | 
					        if (needsReindex) {
 | 
				
			||||||
            // Reindex knowledge files if reranking model changed
 | 
					            // Reindex knowledge files if reranking model changed
 | 
				
			||||||
            const reindexResponse = await reindexSpecificKnowledgeFiles(localStorage.token, knowledgeId,
 | 
					            const reindexResponse = await reindexSpecificKnowledgeFiles(localStorage.token, knowledgeId,
 | 
				
			||||||
            );
 | 
					            );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            if (reindexResponse.status === true) {
 | 
					            if (reindexResponse) {
 | 
				
			||||||
                toast.success($i18n.t('Knowledge files reindexed successfully.'));
 | 
					                toast.success($i18n.t('Knowledge files reindexed successfully.'));
 | 
				
			||||||
            } else {
 | 
					 | 
				
			||||||
                toast.error($i18n.t('Failed to reindex knowledge files.'));
 | 
					 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -290,6 +321,7 @@
 | 
				
			|||||||
                    <option value="external">{$i18n.t('External')}</option>
 | 
					                    <option value="external">{$i18n.t('External')}</option>
 | 
				
			||||||
                    <option value="tika">{$i18n.t('Tika')}</option>
 | 
					                    <option value="tika">{$i18n.t('Tika')}</option>
 | 
				
			||||||
                    <option value="docling">{$i18n.t('Docling')}</option>
 | 
					                    <option value="docling">{$i18n.t('Docling')}</option>
 | 
				
			||||||
 | 
					                    <option value="datalab_marker">{$i18n.t('Datalab Marker API')}</option>
 | 
				
			||||||
                    <option value="document_intelligence">{$i18n.t('Document Intelligence')}</option>
 | 
					                    <option value="document_intelligence">{$i18n.t('Document Intelligence')}</option>
 | 
				
			||||||
                    <option value="mistral_ocr">{$i18n.t('Mistral OCR')}</option>
 | 
					                    <option value="mistral_ocr">{$i18n.t('Mistral OCR')}</option>
 | 
				
			||||||
                </select>
 | 
					                </select>
 | 
				
			||||||
@ -307,7 +339,139 @@
 | 
				
			|||||||
                        </div>
 | 
					                        </div>
 | 
				
			||||||
                    </div>
 | 
					                    </div>
 | 
				
			||||||
                </div>
 | 
					                </div>
 | 
				
			||||||
            {:else if RAGConfig.CONTENT_EXTRACTION_ENGINE === 'external'}
 | 
					            {:else if localRAGConfig.CONTENT_EXTRACTION_ENGINE === 'datalab_marker'}
 | 
				
			||||||
 | 
					                <div class="my-0.5 flex gap-2 pr-2">
 | 
				
			||||||
 | 
					                    <SensitiveInput
 | 
				
			||||||
 | 
					                        placeholder={$i18n.t('Enter Datalab Marker API Key')}
 | 
				
			||||||
 | 
					                        required={false}
 | 
				
			||||||
 | 
					                        bind:value={localRAGConfig.DATALAB_MARKER_API_KEY}
 | 
				
			||||||
 | 
					                    />
 | 
				
			||||||
 | 
					                </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                <div class="flex justify-between w-full mt-2">
 | 
				
			||||||
 | 
					                    <div class="text-xs font-medium">
 | 
				
			||||||
 | 
					                        {$i18n.t('Languages')}
 | 
				
			||||||
 | 
					                    </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    <input
 | 
				
			||||||
 | 
					                        class="text-sm bg-transparent outline-hidden"
 | 
				
			||||||
 | 
					                        type="text"
 | 
				
			||||||
 | 
					                        bind:value={localRAGConfig.DATALAB_MARKER_LANGS}
 | 
				
			||||||
 | 
					                        placeholder={$i18n.t('e.g.) en,fr,de')}
 | 
				
			||||||
 | 
					                    />
 | 
				
			||||||
 | 
					                </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                <div class="flex justify-between w-full mt-2">
 | 
				
			||||||
 | 
					                    <div class="self-center text-xs font-medium">
 | 
				
			||||||
 | 
					                        <Tooltip
 | 
				
			||||||
 | 
					                            content={$i18n.t(
 | 
				
			||||||
 | 
					                                'Significantly improves accuracy by using an LLM to enhance tables, forms, inline math, and layout detection. Will increase latency. Defaults to True.'
 | 
				
			||||||
 | 
					                            )}
 | 
				
			||||||
 | 
					                            placement="top-start"
 | 
				
			||||||
 | 
					                        >
 | 
				
			||||||
 | 
					                            {$i18n.t('Use LLM')}
 | 
				
			||||||
 | 
					                        </Tooltip>
 | 
				
			||||||
 | 
					                    </div>
 | 
				
			||||||
 | 
					                    <div class="flex items-center">
 | 
				
			||||||
 | 
					                        <Switch bind:state={localRAGConfig.DATALAB_MARKER_USE_LLM} />
 | 
				
			||||||
 | 
					                    </div>
 | 
				
			||||||
 | 
					                </div>
 | 
				
			||||||
 | 
					                <div class="flex justify-between w-full mt-2">
 | 
				
			||||||
 | 
					                    <div class="self-center text-xs font-medium">
 | 
				
			||||||
 | 
					                        <Tooltip
 | 
				
			||||||
 | 
					                            content={$i18n.t('Skip the cache and re-run the inference. Defaults to False.')}
 | 
				
			||||||
 | 
					                            placement="top-start"
 | 
				
			||||||
 | 
					                        >
 | 
				
			||||||
 | 
					                            {$i18n.t('Skip Cache')}
 | 
				
			||||||
 | 
					                        </Tooltip>
 | 
				
			||||||
 | 
					                    </div>
 | 
				
			||||||
 | 
					                    <div class="flex items-center">
 | 
				
			||||||
 | 
					                        <Switch bind:state={localRAGConfig.DATALAB_MARKER_SKIP_CACHE} />
 | 
				
			||||||
 | 
					                    </div>
 | 
				
			||||||
 | 
					                </div>
 | 
				
			||||||
 | 
					                <div class="flex justify-between w-full mt-2">
 | 
				
			||||||
 | 
					                    <div class="self-center text-xs font-medium">
 | 
				
			||||||
 | 
					                        <Tooltip
 | 
				
			||||||
 | 
					                            content={$i18n.t(
 | 
				
			||||||
 | 
					                                'Force OCR on all pages of the PDF. This can lead to worse results if you have good text in your PDFs. Defaults to False.'
 | 
				
			||||||
 | 
					                            )}
 | 
				
			||||||
 | 
					                            placement="top-start"
 | 
				
			||||||
 | 
					                        >
 | 
				
			||||||
 | 
					                            {$i18n.t('Force OCR')}
 | 
				
			||||||
 | 
					                        </Tooltip>
 | 
				
			||||||
 | 
					                    </div>
 | 
				
			||||||
 | 
					                    <div class="flex items-center">
 | 
				
			||||||
 | 
					                        <Switch bind:state={localRAGConfig.DATALAB_MARKER_FORCE_OCR} />
 | 
				
			||||||
 | 
					                    </div>
 | 
				
			||||||
 | 
					                </div>
 | 
				
			||||||
 | 
					                <div class="flex justify-between w-full mt-2">
 | 
				
			||||||
 | 
					                    <div class="self-center text-xs font-medium">
 | 
				
			||||||
 | 
					                        <Tooltip
 | 
				
			||||||
 | 
					                            content={$i18n.t(
 | 
				
			||||||
 | 
					                                'Whether to paginate the output. Each page will be separated by a horizontal rule and page number. Defaults to False.'
 | 
				
			||||||
 | 
					                            )}
 | 
				
			||||||
 | 
					                            placement="top-start"
 | 
				
			||||||
 | 
					                        >
 | 
				
			||||||
 | 
					                            {$i18n.t('Paginate')}
 | 
				
			||||||
 | 
					                        </Tooltip>
 | 
				
			||||||
 | 
					                    </div>
 | 
				
			||||||
 | 
					                    <div class="flex items-center">
 | 
				
			||||||
 | 
					                        <Switch bind:state={localRAGConfig.DATALAB_MARKER_PAGINATE} />
 | 
				
			||||||
 | 
					                    </div>
 | 
				
			||||||
 | 
					                </div>
 | 
				
			||||||
 | 
					                <div class="flex justify-between w-full mt-2">
 | 
				
			||||||
 | 
					                    <div class="self-center text-xs font-medium">
 | 
				
			||||||
 | 
					                        <Tooltip
 | 
				
			||||||
 | 
					                            content={$i18n.t(
 | 
				
			||||||
 | 
					                                'Strip existing OCR text from the PDF and re-run OCR. Ignored if Force OCR is enabled. Defaults to False.'
 | 
				
			||||||
 | 
					                            )}
 | 
				
			||||||
 | 
					                            placement="top-start"
 | 
				
			||||||
 | 
					                        >
 | 
				
			||||||
 | 
					                            {$i18n.t('Strip Existing OCR')}
 | 
				
			||||||
 | 
					                        </Tooltip>
 | 
				
			||||||
 | 
					                    </div>
 | 
				
			||||||
 | 
					                    <div class="flex items-center">
 | 
				
			||||||
 | 
					                        <Switch bind:state={localRAGConfig.DATALAB_MARKER_STRIP_EXISTING_OCR} />
 | 
				
			||||||
 | 
					                    </div>
 | 
				
			||||||
 | 
					                </div>
 | 
				
			||||||
 | 
					                <div class="flex justify-between w-full mt-2">
 | 
				
			||||||
 | 
					                    <div class="self-center text-xs font-medium">
 | 
				
			||||||
 | 
					                        <Tooltip
 | 
				
			||||||
 | 
					                            content={$i18n.t(
 | 
				
			||||||
 | 
					                                'Disable image extraction from the PDF. If Use LLM is enabled, images will be automatically captioned. Defaults to False.'
 | 
				
			||||||
 | 
					                            )}
 | 
				
			||||||
 | 
					                            placement="top-start"
 | 
				
			||||||
 | 
					                        >
 | 
				
			||||||
 | 
					                            {$i18n.t('Disable Image Extraction')}
 | 
				
			||||||
 | 
					                        </Tooltip>
 | 
				
			||||||
 | 
					                    </div>
 | 
				
			||||||
 | 
					                    <div class="flex items-center">
 | 
				
			||||||
 | 
					                        <Switch bind:state={localRAGConfig.DATALAB_MARKER_DISABLE_IMAGE_EXTRACTION} />
 | 
				
			||||||
 | 
					                    </div>
 | 
				
			||||||
 | 
					                </div>
 | 
				
			||||||
 | 
					                <div class="flex justify-between w-full mt-2">
 | 
				
			||||||
 | 
					                    <div class="self-center text-xs font-medium">
 | 
				
			||||||
 | 
					                        <Tooltip
 | 
				
			||||||
 | 
					                            content={$i18n.t(
 | 
				
			||||||
 | 
					                                "The output format for the text. Can be 'json', 'markdown', or 'html'. Defaults to 'markdown'."
 | 
				
			||||||
 | 
					                            )}
 | 
				
			||||||
 | 
					                            placement="top-start"
 | 
				
			||||||
 | 
					                        >
 | 
				
			||||||
 | 
					                            {$i18n.t('Output Format')}
 | 
				
			||||||
 | 
					                        </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={localRAGConfig.DATALAB_MARKER_OUTPUT_FORMAT}
 | 
				
			||||||
 | 
					                        >
 | 
				
			||||||
 | 
					                            <option value="markdown">{$i18n.t('Markdown')}</option>
 | 
				
			||||||
 | 
					                            <option value="json">{$i18n.t('JSON')}</option>
 | 
				
			||||||
 | 
					                            <option value="html">{$i18n.t('HTML')}</option>
 | 
				
			||||||
 | 
					                        </select>
 | 
				
			||||||
 | 
					                    </div>
 | 
				
			||||||
 | 
					                </div>
 | 
				
			||||||
 | 
					            {:else if localRAGConfig.CONTENT_EXTRACTION_ENGINE === 'external'}
 | 
				
			||||||
                <div class="my-0.5 flex gap-2 pr-2">
 | 
					                <div class="my-0.5 flex gap-2 pr-2">
 | 
				
			||||||
                    <input
 | 
					                    <input
 | 
				
			||||||
                        class="flex-1 w-full text-sm bg-transparent outline-hidden"
 | 
					                        class="flex-1 w-full text-sm bg-transparent outline-hidden"
 | 
				
			||||||
@ -454,6 +618,8 @@
 | 
				
			|||||||
                                    embeddingModel = '';
 | 
					                                    embeddingModel = '';
 | 
				
			||||||
                                } else if (e.target.value === 'openai') {
 | 
					                                } else if (e.target.value === 'openai') {
 | 
				
			||||||
                                    embeddingModel = 'text-embedding-3-small';
 | 
					                                    embeddingModel = 'text-embedding-3-small';
 | 
				
			||||||
 | 
					                                } else if (e.target.value === 'azure_openai') {
 | 
				
			||||||
 | 
					                                    embeddingModel = 'text-embedding-3-small';
 | 
				
			||||||
                                } else if (e.target.value === '') {
 | 
					                                } else if (e.target.value === '') {
 | 
				
			||||||
                                    embeddingModel = 'sentence-transformers/all-MiniLM-L6-v2';
 | 
					                                    embeddingModel = 'sentence-transformers/all-MiniLM-L6-v2';
 | 
				
			||||||
                                }
 | 
					                                }
 | 
				
			||||||
@ -462,6 +628,7 @@
 | 
				
			|||||||
                            <option value="">{$i18n.t('Default (SentenceTransformers)')}</option>
 | 
					                            <option value="">{$i18n.t('Default (SentenceTransformers)')}</option>
 | 
				
			||||||
                            <option value="ollama">{$i18n.t('Ollama')}</option>
 | 
					                            <option value="ollama">{$i18n.t('Ollama')}</option>
 | 
				
			||||||
                            <option value="openai">{$i18n.t('OpenAI')}</option>
 | 
					                            <option value="openai">{$i18n.t('OpenAI')}</option>
 | 
				
			||||||
 | 
					                            <option value="azure_openai">Azure OpenAI</option>
 | 
				
			||||||
                        </select>
 | 
					                        </select>
 | 
				
			||||||
                    </div>
 | 
					                    </div>
 | 
				
			||||||
                </div>
 | 
					                </div>
 | 
				
			||||||
@ -492,6 +659,26 @@
 | 
				
			|||||||
                            required={false}
 | 
					                            required={false}
 | 
				
			||||||
                        />
 | 
					                        />
 | 
				
			||||||
                    </div>
 | 
					                    </div>
 | 
				
			||||||
 | 
					                {:else if embeddingEngine === 'azure_openai'}
 | 
				
			||||||
 | 
					                    <div class="my-0.5 flex flex-col gap-2 pr-2 w-full">
 | 
				
			||||||
 | 
					                        <div class="flex gap-2">
 | 
				
			||||||
 | 
					                            <input
 | 
				
			||||||
 | 
					                                class="flex-1 w-full text-sm bg-transparent outline-hidden"
 | 
				
			||||||
 | 
					                                placeholder={$i18n.t('API Base URL')}
 | 
				
			||||||
 | 
					                                bind:value={AzureOpenAIUrl}
 | 
				
			||||||
 | 
					                                required
 | 
				
			||||||
 | 
					                            />
 | 
				
			||||||
 | 
					                            <SensitiveInput placeholder={$i18n.t('API Key')} bind:value={AzureOpenAIKey} />
 | 
				
			||||||
 | 
					                        </div>
 | 
				
			||||||
 | 
					                        <div class="flex gap-2">
 | 
				
			||||||
 | 
					                            <input
 | 
				
			||||||
 | 
					                                class="flex-1 w-full text-sm bg-transparent outline-hidden"
 | 
				
			||||||
 | 
					                                placeholder="Version"
 | 
				
			||||||
 | 
					                                bind:value={AzureOpenAIVersion}
 | 
				
			||||||
 | 
					                                required
 | 
				
			||||||
 | 
					                            />
 | 
				
			||||||
 | 
					                        </div>
 | 
				
			||||||
 | 
					                    </div>
 | 
				
			||||||
                {/if}
 | 
					                {/if}
 | 
				
			||||||
            </div>
 | 
					            </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -643,7 +830,7 @@
 | 
				
			|||||||
                </div>
 | 
					                </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            {#if embeddingEngine === 'ollama' || embeddingEngine === 'openai'}
 | 
					            {#if embeddingEngine === 'ollama' || embeddingEngine === 'openai'|| embeddingEngine === 'azure_openai'}
 | 
				
			||||||
                <div class="  mb-2.5 flex w-full justify-between">
 | 
					                <div class="  mb-2.5 flex w-full justify-between">
 | 
				
			||||||
                    <div class=" self-center text-xs font-medium">
 | 
					                    <div class=" self-center text-xs font-medium">
 | 
				
			||||||
                        {$i18n.t('Embedding Batch Size')}
 | 
					                        {$i18n.t('Embedding Batch Size')}
 | 
				
			||||||
@ -854,6 +1041,25 @@
 | 
				
			|||||||
                        </div>
 | 
					                        </div>
 | 
				
			||||||
                    </div>
 | 
					                    </div>
 | 
				
			||||||
                {/if}
 | 
					                {/if}
 | 
				
			||||||
 | 
					                {#if localRAGConfig.ENABLE_RAG_HYBRID_SEARCH === true}
 | 
				
			||||||
 | 
					                    <div class="mb-2.5 flex w-full justify-between">
 | 
				
			||||||
 | 
					                        <div class="self-center text-xs font-medium">
 | 
				
			||||||
 | 
					                            {$i18n.t('Weight of BM25 Retrieval')}
 | 
				
			||||||
 | 
					                        </div>
 | 
				
			||||||
 | 
					                        <div class="flex items-center relative">
 | 
				
			||||||
 | 
					                            <input
 | 
				
			||||||
 | 
					                                class="flex-1 w-full text-sm bg-transparent outline-hidden"
 | 
				
			||||||
 | 
					                                type="number"
 | 
				
			||||||
 | 
					                                step="0.01"
 | 
				
			||||||
 | 
					                                placeholder={$i18n.t('Enter BM25 Weight')}
 | 
				
			||||||
 | 
					                                bind:value={localRAGConfig.HYBRID_BM25_WEIGHT}
 | 
				
			||||||
 | 
					                                autocomplete="off"
 | 
				
			||||||
 | 
					                                min="0.0"
 | 
				
			||||||
 | 
					                                max="1.0"
 | 
				
			||||||
 | 
					                            />
 | 
				
			||||||
 | 
					                        </div>
 | 
				
			||||||
 | 
					                    </div>
 | 
				
			||||||
 | 
					                {/if}
 | 
				
			||||||
            {/if}
 | 
					            {/if}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            <div class="  mb-2.5 flex flex-col w-full justify-between">
 | 
					            <div class="  mb-2.5 flex flex-col w-full justify-between">
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user