feat: Add sidepanelRag settings for Copilot chat with website
This commit is contained in:
		
							parent
							
								
									9521707160
								
							
						
					
					
						commit
						57c02bc1b1
					
				| @ -31,6 +31,16 @@ | |||||||
|         "label": "Send Notification After Finishing Processing the Knowledge Base" |         "label": "Send Notification After Finishing Processing the Knowledge Base" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "sidepanelRag": { | ||||||
|  |       "heading": "Copilot Chat With Website Settings", | ||||||
|  |       "ragEnabled": { | ||||||
|  |         "label": "Chat with website using vector embeddings" | ||||||
|  |       }, | ||||||
|  |       "maxWebsiteContext": { | ||||||
|  |         "label": "Normal mode website content size", | ||||||
|  |         "placeholder": "Content size (default 4028)" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "webSearch": { |     "webSearch": { | ||||||
|       "heading": "Manage Web Search", |       "heading": "Manage Web Search", | ||||||
|       "searchMode": { |       "searchMode": { | ||||||
|  | |||||||
| @ -31,6 +31,16 @@ | |||||||
|         "label": "Enviar notificación después de terminar el procesamiento de la base de conocimientos" |         "label": "Enviar notificación después de terminar el procesamiento de la base de conocimientos" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "sidepanelRag": { | ||||||
|  |       "heading": "Configuración del Chat Copilot con Sitio Web", | ||||||
|  |       "ragEnabled": { | ||||||
|  |         "label": "Chatear con el sitio web usando incrustaciones vectoriales" | ||||||
|  |       }, | ||||||
|  |       "maxWebsiteContext": { | ||||||
|  |         "label": "Tamaño del contenido del sitio web en modo normal", | ||||||
|  |         "placeholder": "Tamaño del contenido (predeterminado 4028)" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "webSearch": { |     "webSearch": { | ||||||
|       "heading": "Manejo de la busqueda Web", |       "heading": "Manejo de la busqueda Web", | ||||||
|       "searchMode": { |       "searchMode": { | ||||||
|  | |||||||
| @ -31,6 +31,16 @@ | |||||||
|         "label": "Envoyer une notification après avoir terminé le traitement de la base de connaissances" |         "label": "Envoyer une notification après avoir terminé le traitement de la base de connaissances" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "sidepanelRag": { | ||||||
|  |       "heading": "Paramètres du Chat Copilot avec le Site Web", | ||||||
|  |       "ragEnabled": { | ||||||
|  |         "label": "Discuter avec le site web en utilisant des embeddings vectoriels" | ||||||
|  |       }, | ||||||
|  |       "maxWebsiteContext": { | ||||||
|  |         "label": "Taille du contenu du site web en mode normal", | ||||||
|  |         "placeholder": "Taille du contenu (par défaut 4028)" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "webSearch": { |     "webSearch": { | ||||||
|       "heading": "Gérer la recherche Web", |       "heading": "Gérer la recherche Web", | ||||||
|       "searchMode": { |       "searchMode": { | ||||||
|  | |||||||
| @ -31,6 +31,16 @@ | |||||||
|         "label": "Inviare notifica dopo aver terminato l'elaborazione della base di conoscenza" |         "label": "Inviare notifica dopo aver terminato l'elaborazione della base di conoscenza" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "sidepanelRag": { | ||||||
|  |       "heading": "Impostazioni Chat Copilot con Sito Web", | ||||||
|  |       "ragEnabled": { | ||||||
|  |         "label": "Chatta con il sito web utilizzando embedding vettoriali" | ||||||
|  |       }, | ||||||
|  |       "maxWebsiteContext": { | ||||||
|  |         "label": "Dimensione del contenuto del sito web in modalità normale", | ||||||
|  |         "placeholder": "Dimensione del contenuto (predefinito 4028)" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "webSearch": { |     "webSearch": { | ||||||
|       "heading": "Gestione ricerca Web", |       "heading": "Gestione ricerca Web", | ||||||
|       "searchMode": { |       "searchMode": { | ||||||
|  | |||||||
| @ -34,6 +34,16 @@ | |||||||
|         "label": "ナレッジベースの処理完了後に通知を送信" |         "label": "ナレッジベースの処理完了後に通知を送信" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "sidepanelRag": { | ||||||
|  |       "heading": "ウェブサイトとのCopilotチャット設定", | ||||||
|  |       "ragEnabled": { | ||||||
|  |         "label": "ベクトル埋め込みを使用してウェブサイトとチャットする" | ||||||
|  |       }, | ||||||
|  |       "maxWebsiteContext": { | ||||||
|  |         "label": "通常モードのウェブサイトコンテンツサイズ", | ||||||
|  |         "placeholder": "コンテンツサイズ(デフォルト4028)" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "webSearch": { |     "webSearch": { | ||||||
|       "heading": "ウェブ検索を管理する", |       "heading": "ウェブ検索を管理する", | ||||||
|       "searchMode": { |       "searchMode": { | ||||||
|  | |||||||
| @ -34,6 +34,16 @@ | |||||||
|         "label": "അറിവ് ശേഖരം പ്രോസസ്സ് ചെയ്ത് കഴിഞ്ഞതിന് ശേഷം അറിയിപ്പ് അയയ്ക്കുക" |         "label": "അറിവ് ശേഖരം പ്രോസസ്സ് ചെയ്ത് കഴിഞ്ഞതിന് ശേഷം അറിയിപ്പ് അയയ്ക്കുക" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "sidepanelRag": { | ||||||
|  |       "heading": "വെബ്സൈറ്റുമായുള്ള കോപൈലറ്റ് ചാറ്റ് ക്രമീകരണങ്ങൾ", | ||||||
|  |       "ragEnabled": { | ||||||
|  |         "label": "വെക്ടർ എംബെഡിംഗുകൾ ഉപയോഗിച്ച് വെബ്സൈറ്റുമായി ചാറ്റ് ചെയ്യുക" | ||||||
|  |       }, | ||||||
|  |       "maxWebsiteContext": { | ||||||
|  |         "label": "സാധാരണ മോഡിലെ വെബ്സൈറ്റ് ഉള്ളടക്ക വലുപ്പം", | ||||||
|  |         "placeholder": "ഉള്ളടക്ക വലുപ്പം (സ്ഥിരസ്ഥിതി 4028)" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "webSearch": { |     "webSearch": { | ||||||
|       "heading": "വെബ്ബ് തിരച്ചിൽ നിയന്ത്രിക്കുക", |       "heading": "വെബ്ബ് തിരച്ചിൽ നിയന്ത്രിക്കുക", | ||||||
|       "searchMode": { |       "searchMode": { | ||||||
|  | |||||||
| @ -31,6 +31,16 @@ | |||||||
|         "label": "Enviar notificação após concluir o processamento da base de conhecimento" |         "label": "Enviar notificação após concluir o processamento da base de conhecimento" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "sidepanelRag": { | ||||||
|  |       "heading": "Configurações de Chat Copilot com o Site", | ||||||
|  |       "ragEnabled": { | ||||||
|  |         "label": "Conversar com o site usando embeddings vetoriais" | ||||||
|  |       }, | ||||||
|  |       "maxWebsiteContext": { | ||||||
|  |         "label": "Tamanho do conteúdo do site no modo normal", | ||||||
|  |         "placeholder": "Tamanho do conteúdo (padrão 4028)" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "webSearch": { |     "webSearch": { | ||||||
|       "heading": "Gerenciar Pesquisa na Web", |       "heading": "Gerenciar Pesquisa na Web", | ||||||
|       "searchMode": { |       "searchMode": { | ||||||
|  | |||||||
| @ -31,6 +31,17 @@ | |||||||
|         "label": "Отправить уведомление после завершения обработки базы знаний" |         "label": "Отправить уведомление после завершения обработки базы знаний" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "sidepanelRag": { | ||||||
|  |       "heading": "Настройки чата Copilot с веб-сайтом", | ||||||
|  |       "ragEnabled": { | ||||||
|  |         "label": "Общаться с веб-сайтом, используя векторные вложения" | ||||||
|  |       }, | ||||||
|  |       "maxWebsiteContext": { | ||||||
|  |         "label": "Размер содержимого веб-сайта в обычном режиме", | ||||||
|  |         "placeholder": "Размер содержимого (по умолчанию 4028)" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|  | 
 | ||||||
|     "webSearch": { |     "webSearch": { | ||||||
|       "heading": "Управление веб-поиском", |       "heading": "Управление веб-поиском", | ||||||
|       "searchMode": { |       "searchMode": { | ||||||
|  | |||||||
| @ -34,6 +34,16 @@ | |||||||
|         "label": "完成知识库处理后发送通知" |         "label": "完成知识库处理后发送通知" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "sidepanelRag": { | ||||||
|  |       "heading": "与网站对话的Copilot聊天设置", | ||||||
|  |       "ragEnabled": { | ||||||
|  |         "label": "使用向量嵌入与网站聊天" | ||||||
|  |       }, | ||||||
|  |       "maxWebsiteContext": { | ||||||
|  |         "label": "普通模式下的网站内容大小", | ||||||
|  |         "placeholder": "内容大小(默认4028)" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "webSearch": { |     "webSearch": { | ||||||
|       "heading": "管理网络搜索", |       "heading": "管理网络搜索", | ||||||
|       "searchMode": { |       "searchMode": { | ||||||
|  | |||||||
| @ -1,39 +0,0 @@ | |||||||
| import { Tabs } from "antd" |  | ||||||
| import { SettingsOllama } from "./Settings/ollama" |  | ||||||
| import { SettingPrompt } from "./Settings/prompt" |  | ||||||
| import { SettingOther } from "./Settings/general-settings" |  | ||||||
| 
 |  | ||||||
| type Props = { |  | ||||||
|   setClose: (close: boolean) => void |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| export const Settings = ({ setClose }: Props) => { |  | ||||||
|   return ( |  | ||||||
|     <div className="my-6 max-h-[80vh] overflow-y-auto"> |  | ||||||
|       <Tabs |  | ||||||
|         tabPosition="left" |  | ||||||
|         defaultActiveKey="1" |  | ||||||
|         items={[ |  | ||||||
|           { |  | ||||||
|             id: "1", |  | ||||||
|             key: "1", |  | ||||||
|             label: "Prompt", |  | ||||||
|             children: <SettingPrompt /> |  | ||||||
|           }, |  | ||||||
|           { |  | ||||||
|             id: "2", |  | ||||||
|             key: "2", |  | ||||||
|             label: "Web UI Settings", |  | ||||||
|             children: <SettingOther /> |  | ||||||
|           }, |  | ||||||
|           { |  | ||||||
|             id: "3", |  | ||||||
|             key: "3", |  | ||||||
|             label: "Ollama Settings", |  | ||||||
|             children: <SettingsOllama /> |  | ||||||
|           } |  | ||||||
|         ]} |  | ||||||
|       /> |  | ||||||
|     </div> |  | ||||||
|   ) |  | ||||||
| } |  | ||||||
| @ -11,6 +11,7 @@ import { | |||||||
| import { SettingPrompt } from "./prompt" | import { SettingPrompt } from "./prompt" | ||||||
| import { useTranslation } from "react-i18next" | import { useTranslation } from "react-i18next" | ||||||
| import { getTotalFilePerKB } from "@/services/app" | import { getTotalFilePerKB } from "@/services/app" | ||||||
|  | import { SidepanelRag } from "./sidepanel-rag" | ||||||
| 
 | 
 | ||||||
| export const RagSettings = () => { | export const RagSettings = () => { | ||||||
|   const { t } = useTranslation("settings") |   const { t } = useTranslation("settings") | ||||||
| @ -163,6 +164,8 @@ export const RagSettings = () => { | |||||||
|             </Form> |             </Form> | ||||||
|           </div> |           </div> | ||||||
| 
 | 
 | ||||||
|  |           <SidepanelRag  /> | ||||||
|  | 
 | ||||||
|           <div> |           <div> | ||||||
|             <div> |             <div> | ||||||
|               <h2 className="text-base font-semibold leading-7 text-gray-900 dark:text-white"> |               <h2 className="text-base font-semibold leading-7 text-gray-900 dark:text-white"> | ||||||
|  | |||||||
							
								
								
									
										63
									
								
								src/components/Option/Settings/sidepanel-rag.tsx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										63
									
								
								src/components/Option/Settings/sidepanel-rag.tsx
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,63 @@ | |||||||
|  | import { useStorage } from "@plasmohq/storage/hook" | ||||||
|  | import { InputNumber, Switch } from "antd" | ||||||
|  | import { useTranslation } from "react-i18next" | ||||||
|  | 
 | ||||||
|  | export const SidepanelRag = ({ hideBorder }: { hideBorder?: boolean }) => { | ||||||
|  |   const { t } = useTranslation("settings") | ||||||
|  |   const [chatWithWebsiteEmbedding, setChatWithWebsiteEmbedding] = useStorage( | ||||||
|  |     "chatWithWebsiteEmbedding", | ||||||
|  |     true | ||||||
|  |   ) | ||||||
|  |   const [maxWebsiteContext, setMaxWebsiteContext] = useStorage( | ||||||
|  |     "maxWebsiteContext", | ||||||
|  |     4028 | ||||||
|  |   ) | ||||||
|  | 
 | ||||||
|  |   return ( | ||||||
|  |     <div> | ||||||
|  |       <div className="mb-5"> | ||||||
|  |         <h2 | ||||||
|  |           className={`${ | ||||||
|  |             !hideBorder ? "text-base font-semibold leading-7" : "text-md" | ||||||
|  |           } text-gray-900 dark:text-white`}>
 | ||||||
|  |           {t("generalSettings.sidepanelRag.heading")} | ||||||
|  |         </h2> | ||||||
|  |         {!hideBorder && ( | ||||||
|  |           <div className="border border-b border-gray-200 dark:border-gray-600 mt-3"></div> | ||||||
|  |         )} | ||||||
|  |       </div> | ||||||
|  |       <div className={`${ | ||||||
|  |         !hideBorder ? "text-sm" : "" | ||||||
|  |       } space-y-4`}>
 | ||||||
|  |         <div className="flex flex-col sm:flex-row sm:items-center sm:justify-between space-y-4 sm:space-y-0"> | ||||||
|  |           <span className="text-gray-700  truncate dark:text-neutral-50"> | ||||||
|  |             {t("generalSettings.sidepanelRag.ragEnabled.label")} | ||||||
|  |           </span> | ||||||
|  |           <div> | ||||||
|  |             <Switch | ||||||
|  |               className="mt-4 sm:mt-0" | ||||||
|  |               checked={chatWithWebsiteEmbedding} | ||||||
|  |               onChange={(checked) => setChatWithWebsiteEmbedding(checked)} | ||||||
|  |             /> | ||||||
|  |           </div> | ||||||
|  |         </div> | ||||||
|  |         <div className="flex flex-col sm:flex-row sm:items-center sm:justify-between space-y-4 sm:space-y-0"> | ||||||
|  |           <span className="text-gray-700 truncate dark:text-neutral-50"> | ||||||
|  |             {t("generalSettings.sidepanelRag.maxWebsiteContext.label")} | ||||||
|  |           </span> | ||||||
|  |           <div> | ||||||
|  |             <InputNumber | ||||||
|  |               disabled={chatWithWebsiteEmbedding} | ||||||
|  |               className="mt-4 sm:mt-0" | ||||||
|  |               value={maxWebsiteContext} | ||||||
|  |               onChange={(value) => setMaxWebsiteContext(value)} | ||||||
|  |               placeholder={t( | ||||||
|  |                 "generalSettings.sidepanelRag.maxWebsiteContext.placeholder" | ||||||
|  |               )} | ||||||
|  |             /> | ||||||
|  |           </div> | ||||||
|  |         </div> | ||||||
|  |       </div> | ||||||
|  |     </div> | ||||||
|  |   ) | ||||||
|  | } | ||||||
| @ -35,7 +35,10 @@ export const TTSModeSettings = ({ hideBorder }: { hideBorder?: boolean }) => { | |||||||
|   return ( |   return ( | ||||||
|     <div> |     <div> | ||||||
|       <div className="mb-5"> |       <div className="mb-5"> | ||||||
|         <h2 className="text-base font-semibold leading-7 text-gray-900 dark:text-white"> |         <h2 | ||||||
|  |           className={`${ | ||||||
|  |             !hideBorder ? "text-base font-semibold leading-7" : "text-md" | ||||||
|  |           } text-gray-900 dark:text-white`}>
 | ||||||
|           {t("generalSettings.tts.heading")} |           {t("generalSettings.tts.heading")} | ||||||
|         </h2> |         </h2> | ||||||
|         {!hideBorder && ( |         {!hideBorder && ( | ||||||
|  | |||||||
| @ -33,6 +33,8 @@ import { useI18n } from "@/hooks/useI18n" | |||||||
| import { TTSModeSettings } from "@/components/Option/Settings/tts-mode" | import { TTSModeSettings } from "@/components/Option/Settings/tts-mode" | ||||||
| import { AdvanceOllamaSettings } from "@/components/Common/Settings/AdvanceOllamaSettings" | import { AdvanceOllamaSettings } from "@/components/Common/Settings/AdvanceOllamaSettings" | ||||||
| import { useStorage } from "@plasmohq/storage/hook" | import { useStorage } from "@plasmohq/storage/hook" | ||||||
|  | import { getTotalFilePerKB } from "@/services/app" | ||||||
|  | import { SidepanelRag } from "@/components/Option/Settings/sidepanel-rag" | ||||||
| 
 | 
 | ||||||
| export const SettingsBody = () => { | export const SettingsBody = () => { | ||||||
|   const { t } = useTranslation("settings") |   const { t } = useTranslation("settings") | ||||||
| @ -66,7 +68,8 @@ export const SettingsBody = () => { | |||||||
|         allModels, |         allModels, | ||||||
|         chunkOverlap, |         chunkOverlap, | ||||||
|         chunkSize, |         chunkSize, | ||||||
|         defaultEM |         defaultEM, | ||||||
|  |         totalFilePerKB | ||||||
|       ] = await Promise.all([ |       ] = await Promise.all([ | ||||||
|         getOllamaURL(), |         getOllamaURL(), | ||||||
|         systemPromptForNonRag(), |         systemPromptForNonRag(), | ||||||
| @ -74,7 +77,8 @@ export const SettingsBody = () => { | |||||||
|         getAllModels({ returnEmpty: true }), |         getAllModels({ returnEmpty: true }), | ||||||
|         defaultEmbeddingChunkOverlap(), |         defaultEmbeddingChunkOverlap(), | ||||||
|         defaultEmbeddingChunkSize(), |         defaultEmbeddingChunkSize(), | ||||||
|         defaultEmbeddingModelForRag() |         defaultEmbeddingModelForRag(), | ||||||
|  |         getTotalFilePerKB() | ||||||
|       ]) |       ]) | ||||||
| 
 | 
 | ||||||
|       return { |       return { | ||||||
| @ -85,18 +89,19 @@ export const SettingsBody = () => { | |||||||
|         models: allModels, |         models: allModels, | ||||||
|         chunkOverlap, |         chunkOverlap, | ||||||
|         chunkSize, |         chunkSize, | ||||||
|         defaultEM |         defaultEM, | ||||||
|  |         totalFilePerKB | ||||||
|       } |       } | ||||||
|     } |     } | ||||||
|   }) |   }) | ||||||
| 
 | 
 | ||||||
|   const { mutate: saveRAG, isPending: isSaveRAGPending } = useMutation({ |   const { mutate: saveRAG, isPending: isSaveRAGPending } = useMutation({ | ||||||
|     mutationFn: async (data: { |     mutationFn: async (f: { | ||||||
|       model: string |       model: string | ||||||
|       chunkSize: number |       chunkSize: number | ||||||
|       overlap: number |       overlap: number | ||||||
|     }) => { |     }) => { | ||||||
|       await saveForRag(data.model, data.chunkSize, data.overlap) |       await saveForRag(f.model, f.chunkSize, f.overlap, data.totalFilePerKB) | ||||||
|     } |     } | ||||||
|   }) |   }) | ||||||
| 
 | 
 | ||||||
| @ -196,7 +201,9 @@ export const SettingsBody = () => { | |||||||
|           </div> |           </div> | ||||||
|         )} |         )} | ||||||
|       </div> |       </div> | ||||||
| 
 |       <div className="border border-gray-300 dark:border-gray-700 rounded p-4 bg-white dark:bg-[#171717]"> | ||||||
|  |         <SidepanelRag hideBorder /> | ||||||
|  |       </div> | ||||||
|       <div className="border flex flex-col gap-4 border-gray-300 dark:border-gray-700 rounded p-4 bg-white dark:bg-[#171717]"> |       <div className="border flex flex-col gap-4 border-gray-300 dark:border-gray-700 rounded p-4 bg-white dark:bg-[#171717]"> | ||||||
|         <h2 className="text-md font-semibold dark:text-white"> |         <h2 className="text-md font-semibold dark:text-white"> | ||||||
|           {t("ollamaSettings.heading")} |           {t("ollamaSettings.heading")} | ||||||
| @ -247,7 +254,6 @@ export const SettingsBody = () => { | |||||||
|           /> |           /> | ||||||
|         </div> |         </div> | ||||||
|       </div> |       </div> | ||||||
| 
 |  | ||||||
|       <div className="border border-gray-300 dark:border-gray-700 rounded p-4 bg-white dark:bg-[#171717]"> |       <div className="border border-gray-300 dark:border-gray-700 rounded p-4 bg-white dark:bg-[#171717]"> | ||||||
|         <h2 className="text-md mb-4 font-semibold dark:text-white"> |         <h2 className="text-md mb-4 font-semibold dark:text-white"> | ||||||
|           {t("rag.ragSettings.label")} |           {t("rag.ragSettings.label")} | ||||||
| @ -298,16 +304,12 @@ export const SettingsBody = () => { | |||||||
|             rules={[ |             rules={[ | ||||||
|               { |               { | ||||||
|                 required: true, |                 required: true, | ||||||
|                 message: t( |                 message: t("rag.ragSettings.chunkSize.required") | ||||||
|                   "rag.ragSettings.chunkSize.required" |  | ||||||
|                 ) |  | ||||||
|               } |               } | ||||||
|             ]}> |             ]}> | ||||||
|             <InputNumber |             <InputNumber | ||||||
|               style={{ width: "100%" }} |               style={{ width: "100%" }} | ||||||
|               placeholder={t( |               placeholder={t("rag.ragSettings.chunkSize.placeholder")} | ||||||
|                 "rag.ragSettings.chunkSize.placeholder" |  | ||||||
|               )} |  | ||||||
|             /> |             /> | ||||||
|           </Form.Item> |           </Form.Item> | ||||||
|           <Form.Item |           <Form.Item | ||||||
| @ -316,16 +318,12 @@ export const SettingsBody = () => { | |||||||
|             rules={[ |             rules={[ | ||||||
|               { |               { | ||||||
|                 required: true, |                 required: true, | ||||||
|                 message: t( |                 message: t("rag.ragSettings.chunkOverlap.required") | ||||||
|                   "rag.ragSettings.chunkOverlap.required" |  | ||||||
|                 ) |  | ||||||
|               } |               } | ||||||
|             ]}> |             ]}> | ||||||
|             <InputNumber |             <InputNumber | ||||||
|               style={{ width: "100%" }} |               style={{ width: "100%" }} | ||||||
|               placeholder={t( |               placeholder={t("rag.ragSettings.chunkOverlap.placeholder")} | ||||||
|                 "rag.ragSettings.chunkOverlap.placeholder" |  | ||||||
|               )} |  | ||||||
|             /> |             /> | ||||||
|           </Form.Item> |           </Form.Item> | ||||||
| 
 | 
 | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user