feat(knowledge): add RAPTOR and Knowledge Graph config sections to parsers
refactor(knowledge): reorganize parser configuration components into accordions
3
.gitignore
vendored
@@ -24,5 +24,4 @@ dist-ssr
|
||||
*.sw?
|
||||
|
||||
# rag core
|
||||
rag_web_core_v0.20.5
|
||||
rag_web_core_deprecated
|
||||
ragflow_core_v0.21.1
|
||||
15
src/assets/svg/data-flow/data-icon-bri.svg
Normal file
@@ -0,0 +1,15 @@
|
||||
<svg width="40" height="40" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M35.3194 10.6367H20.4258C19.4857 10.6367 18.7236 11.3988 18.7236 12.3388V34.892C18.7236 35.8321 19.4857 36.5942 20.4258 36.5942H35.3194C36.2594 36.5942 37.0215 35.8321 37.0215 34.892V12.3388C37.0215 11.3988 36.2594 10.6367 35.3194 10.6367Z" fill="url(#paint0_linear_488_37636)"/>
|
||||
<path d="M31.0639 4.25391H5.10642C4.16637 4.25391 3.4043 5.01597 3.4043 5.95603V18.2965C3.4043 19.2365 4.16637 19.9986 5.10642 19.9986H31.0639C32.0039 19.9986 32.766 19.2365 32.766 18.2965V5.95603C32.766 5.01597 32.0039 4.25391 31.0639 4.25391Z" fill="#00BEB4" fill-opacity="0.1"/>
|
||||
<path d="M31.0639 4.25391C32.0039 4.25391 32.766 5.01597 32.766 5.95603V18.2965C32.766 19.2365 32.0039 19.9986 31.0639 19.9986H5.10642C4.16637 19.9986 3.4043 19.2365 3.4043 18.2965V5.95603C3.4043 5.01597 4.16637 4.25391 5.10642 4.25391H31.0639ZM31.0639 4.67944H5.10642C4.40138 4.67944 3.82983 5.25099 3.82983 5.95603V18.2965C3.82983 19.0015 4.40138 19.5731 5.10642 19.5731H31.0639C31.7689 19.5731 32.3405 19.0015 32.3405 18.2965V5.95603C32.3405 5.25099 31.7689 4.67944 31.0639 4.67944Z" fill="#00BEB4"/>
|
||||
<path d="M31.0639 22.5547H5.10642C4.16637 22.5547 3.4043 23.3168 3.4043 24.2568V34.8951C3.4043 35.8352 4.16637 36.5972 5.10642 36.5972H31.0639C32.0039 36.5972 32.766 35.8352 32.766 34.8951V24.2568C32.766 23.3168 32.0039 22.5547 31.0639 22.5547Z" fill="#00BEB4" fill-opacity="0.1"/>
|
||||
<path d="M31.0639 22.5547C32.0039 22.5547 32.766 23.3168 32.766 24.2568V34.8951C32.766 35.8352 32.0039 36.5972 31.0639 36.5972H5.10642C4.16637 36.5972 3.4043 35.8352 3.4043 34.8951V24.2568C3.4043 23.3168 4.16637 22.5547 5.10642 22.5547H31.0639ZM31.0639 22.9802H5.10642C4.40138 22.9802 3.82983 23.5518 3.82983 24.2568V34.8951C3.82983 35.6002 4.40138 36.1717 5.10642 36.1717H31.0639C31.7689 36.1717 32.3405 35.6002 32.3405 34.8951V24.2568C32.3405 23.5518 31.7689 22.9802 31.0639 22.9802Z" fill="#00BEB4"/>
|
||||
<path d="M10.6384 14.8949C12.2835 14.8949 13.6171 13.5613 13.6171 11.9162C13.6171 10.2711 12.2835 8.9375 10.6384 8.9375C8.99329 8.9375 7.65967 10.2711 7.65967 11.9162C7.65967 13.5613 8.99329 14.8949 10.6384 14.8949Z" fill="#00BEB4"/>
|
||||
<path d="M10.6384 32.766C12.2835 32.766 13.6171 31.4324 13.6171 29.7873C13.6171 28.1422 12.2835 26.8086 10.6384 26.8086C8.99329 26.8086 7.65967 28.1422 7.65967 29.7873C7.65967 31.4324 8.99329 32.766 10.6384 32.766Z" fill="#00BEB4"/>
|
||||
<defs>
|
||||
<linearGradient id="paint0_linear_488_37636" x1="933.617" y1="10.6367" x2="933.617" y2="2606.38" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#C9F1EF"/>
|
||||
<stop offset="1" stop-color="#00BEB4"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.6 KiB |
15
src/assets/svg/data-flow/data-icon.svg
Normal file
@@ -0,0 +1,15 @@
|
||||
<svg width="40" height="40" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M35.3194 10.6387H20.4258C19.4857 10.6387 18.7236 11.4007 18.7236 12.3408V34.894C18.7236 35.834 19.4857 36.5961 20.4258 36.5961H35.3194C36.2594 36.5961 37.0215 35.834 37.0215 34.894V12.3408C37.0215 11.4007 36.2594 10.6387 35.3194 10.6387Z" fill="url(#paint0_linear_491_41413)"/>
|
||||
<path d="M31.0639 4.25586H5.10642C4.16637 4.25586 3.4043 5.01793 3.4043 5.95799V18.2984C3.4043 19.2385 4.16637 20.0005 5.10642 20.0005H31.0639C32.0039 20.0005 32.766 19.2385 32.766 18.2984V5.95799C32.766 5.01793 32.0039 4.25586 31.0639 4.25586Z" fill="#00BEB4" fill-opacity="0.2"/>
|
||||
<path d="M31.0639 4.25586C32.0039 4.25586 32.766 5.01793 32.766 5.95799V18.2984C32.766 19.2385 32.0039 20.0005 31.0639 20.0005H5.10642C4.16637 20.0005 3.4043 19.2385 3.4043 18.2984V5.95799C3.4043 5.01793 4.16637 4.25586 5.10642 4.25586H31.0639ZM31.0639 4.68139H5.10642C4.40138 4.68139 3.82983 5.25294 3.82983 5.95799V18.2984C3.82983 19.0035 4.40138 19.575 5.10642 19.575H31.0639C31.7689 19.575 32.3405 19.0035 32.3405 18.2984V5.95799C32.3405 5.25294 31.7689 4.68139 31.0639 4.68139Z" fill="#226365"/>
|
||||
<path d="M31.0639 22.5527H5.10642C4.16637 22.5527 3.4043 23.3148 3.4043 24.2549V34.8932C3.4043 35.8332 4.16637 36.5953 5.10642 36.5953H31.0639C32.0039 36.5953 32.766 35.8332 32.766 34.8932V24.2549C32.766 23.3148 32.0039 22.5527 31.0639 22.5527Z" fill="#3A9093" fill-opacity="0.2"/>
|
||||
<path d="M31.0639 22.5527C32.0039 22.5527 32.766 23.3148 32.766 24.2549V34.8932C32.766 35.8332 32.0039 36.5953 31.0639 36.5953H5.10642C4.16637 36.5953 3.4043 35.8332 3.4043 34.8932V24.2549C3.4043 23.3148 4.16637 22.5527 5.10642 22.5527H31.0639ZM31.0639 22.9783H5.10642C4.40138 22.9783 3.82983 23.5498 3.82983 24.2549V34.8932C3.82983 35.5982 4.40138 36.1698 5.10642 36.1698H31.0639C31.7689 36.1698 32.3405 35.5982 32.3405 34.8932V24.2549C32.3405 23.5498 31.7689 22.9783 31.0639 22.9783Z" fill="#226365"/>
|
||||
<path d="M10.6384 14.893C12.2835 14.893 13.6171 13.5594 13.6171 11.9143C13.6171 10.2692 12.2835 8.93555 10.6384 8.93555C8.99329 8.93555 7.65967 10.2692 7.65967 11.9143C7.65967 13.5594 8.99329 14.893 10.6384 14.893Z" fill="#3A9093"/>
|
||||
<path d="M10.6384 32.766C12.2835 32.766 13.6171 31.4324 13.6171 29.7873C13.6171 28.1422 12.2835 26.8086 10.6384 26.8086C8.99329 26.8086 7.65967 28.1422 7.65967 29.7873C7.65967 31.4324 8.99329 32.766 10.6384 32.766Z" fill="#3A9093"/>
|
||||
<defs>
|
||||
<linearGradient id="paint0_linear_491_41413" x1="933.617" y1="10.6387" x2="933.617" y2="2606.38" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#1B3C3D"/>
|
||||
<stop offset="1" stop-color="#164142"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.6 KiB |
6
src/assets/svg/data-flow/processing-icon-bri.svg
Normal file
@@ -0,0 +1,6 @@
|
||||
<svg width="40" height="40" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M21.8074 21.9283L30.4051 33.9033C30.9531 34.667 30.7785 35.7307 30.0148 36.2787C29.7258 36.4865 29.3785 36.5982 29.0223 36.5982H11.8273C10.8871 36.5982 10.125 35.8361 10.125 34.8963C10.125 34.54 10.2367 34.1928 10.4445 33.9033L19.0422 21.9283C19.5902 21.1646 20.6539 20.99 21.4176 21.5385C21.5676 21.6463 21.6996 21.7779 21.8074 21.9283Z" fill="#C6EFED"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M5.94336 3.39844H34.0285C35.9086 3.39844 37.4328 4.92266 37.4328 6.80273V27.2281C37.4328 29.1082 35.9086 30.6324 34.0285 30.6324H5.94336C4.06328 30.6324 2.53906 29.1082 2.53906 27.2281V6.80273C2.53906 4.92266 4.06328 3.39844 5.94336 3.39844Z" fill="#00BEB4" fill-opacity="0.2"/>
|
||||
<path d="M34.0422 3.40625C35.9223 3.40625 37.4465 4.93047 37.4465 6.81055V27.2359C37.4465 29.116 35.9223 30.6402 34.0422 30.6402H5.95703C4.07695 30.6402 2.55273 29.116 2.55273 27.2359V6.81055C2.55273 4.93047 4.07695 3.40625 5.95703 3.40625H34.0422ZM34.0422 3.83164H5.95703C4.31211 3.83164 2.97852 5.16523 2.97852 6.81055V27.2359C2.97852 28.8812 4.31211 30.2148 5.95703 30.2148H34.0422C35.6871 30.2148 37.0207 28.8812 37.0207 27.2359V6.81055C37.0207 5.16523 35.6871 3.83164 34.0422 3.83164Z" fill="#00BEB4"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M19.9785 11.6797C20.6836 11.6797 21.2551 12.2512 21.2551 12.9562V21.0414C21.2551 21.7465 20.6836 22.318 19.9785 22.318C19.2734 22.318 18.702 21.7465 18.702 21.0414V12.9562C18.702 12.2512 19.2734 11.6797 19.9785 11.6797ZM11.0422 11.6797C11.7473 11.6797 12.3187 12.2512 12.3187 12.9562V21.0414C12.3187 21.7465 11.7473 22.318 11.0422 22.318C10.3371 22.318 9.76562 21.7465 9.76562 21.0414V12.9562C9.76562 12.2512 10.3371 11.6797 11.0422 11.6797ZM28.9145 11.6797C29.6195 11.6797 30.191 12.2512 30.191 12.9562V21.0414C30.191 21.7465 29.6195 22.318 28.9145 22.318C28.2094 22.318 27.6379 21.7465 27.6379 21.0414V12.9562C27.6379 12.2512 28.2094 11.6797 28.9145 11.6797Z" fill="#00BEB4"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.0 KiB |
6
src/assets/svg/data-flow/processing-icon.svg
Normal file
@@ -0,0 +1,6 @@
|
||||
<svg width="40" height="40" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M21.8074 21.9264L30.4051 33.9014C30.9531 34.665 30.7785 35.7287 30.0148 36.2767C29.7258 36.4846 29.3785 36.5963 29.0223 36.5963H11.8273C10.8871 36.5963 10.125 35.8342 10.125 34.8943C10.125 34.5381 10.2367 34.1908 10.4445 33.9014L19.0422 21.9264C19.5902 21.1627 20.6539 20.9881 21.4176 21.5365C21.5676 21.6443 21.6996 21.776 21.8074 21.9264Z" fill="#1C3C3D"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M5.94336 3.39844H34.0285C35.9086 3.39844 37.4328 4.92266 37.4328 6.80273V27.2281C37.4328 29.1082 35.9086 30.6324 34.0285 30.6324H5.94336C4.06328 30.6324 2.53906 29.1082 2.53906 27.2281V6.80273C2.53906 4.92266 4.06328 3.39844 5.94336 3.39844Z" fill="#00BEB4" fill-opacity="0.2"/>
|
||||
<path d="M34.0422 3.4043C35.9223 3.4043 37.4465 4.92852 37.4465 6.80859V27.234C37.4465 29.1141 35.9223 30.6383 34.0422 30.6383H5.95703C4.07695 30.6383 2.55273 29.1141 2.55273 27.234V6.80859C2.55273 4.92852 4.07695 3.4043 5.95703 3.4043H34.0422ZM34.0422 3.82969H5.95703C4.31211 3.82969 2.97852 5.16328 2.97852 6.80859V27.234C2.97852 28.8793 4.31211 30.2129 5.95703 30.2129H34.0422C35.6871 30.2129 37.0207 28.8793 37.0207 27.234V6.80859C37.0207 5.16328 35.6871 3.82969 34.0422 3.82969Z" fill="#1B3B3C"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M19.9785 11.6797C20.6836 11.6797 21.2551 12.2512 21.2551 12.9562V21.0414C21.2551 21.7465 20.6836 22.318 19.9785 22.318C19.2734 22.318 18.702 21.7465 18.702 21.0414V12.9562C18.702 12.2512 19.2734 11.6797 19.9785 11.6797ZM11.0422 11.6797C11.7473 11.6797 12.3187 12.2512 12.3187 12.9562V21.0414C12.3187 21.7465 11.7473 22.318 11.0422 22.318C10.3371 22.318 9.76562 21.7465 9.76562 21.0414V12.9562C9.76562 12.2512 10.3371 11.6797 11.0422 11.6797ZM28.9145 11.6797C29.6195 11.6797 30.191 12.2512 30.191 12.9562V21.0414C30.191 21.7465 29.6195 22.318 28.9145 22.318C28.2094 22.318 27.6379 21.7465 27.6379 21.0414V12.9562C27.6379 12.2512 28.2094 11.6797 28.9145 11.6797Z" fill="#00BEB4"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.0 KiB |
6
src/assets/svg/data-flow/total-files-icon-bri.svg
Normal file
@@ -0,0 +1,6 @@
|
||||
<svg width="40" height="40" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M11.0291 4.67969C11.8025 4.67969 12.4787 5.20078 12.6752 5.94844L13.3494 8.50937H31.4275C33.1599 8.50937 34.6158 9.81055 34.8103 11.5316L37.0205 31.1062C37.231 32.9746 35.8877 34.6602 34.0193 34.8711C33.8927 34.8852 33.765 34.8926 33.6377 34.8926H6.30289C4.92476 34.8926 3.79547 33.7988 3.75094 32.4215L3.11734 12.7746H3.115L2.90719 6.4375C2.87633 5.49805 3.61304 4.71133 4.5525 4.68047C4.57086 4.68008 4.58961 4.67969 4.60836 4.67969H11.0291Z" fill="#00BEB4" fill-opacity="0.1"/>
|
||||
<path d="M11.0291 4.67969C11.8025 4.67969 12.4787 5.20078 12.6752 5.94844L13.349 8.50937H31.4275C33.1599 8.50937 34.6158 9.81055 34.8103 11.5316L37.0205 31.1062C37.231 32.9746 35.8877 34.6602 34.0193 34.8711C33.8927 34.8852 33.765 34.8926 33.6377 34.8926H6.30289C4.92476 34.8926 3.79547 33.7988 3.75094 32.4215L3.11656 12.7742L2.90719 6.4375C2.87633 5.49805 3.61304 4.71133 4.5525 4.68047L4.58023 4.67969H11.0291ZM11.0291 5.10508H4.59078L4.56656 5.10586C3.86187 5.12891 3.30914 5.71914 3.33219 6.42344L3.54195 12.7605L4.17633 32.4078C4.21344 33.5555 5.15445 34.4668 6.30289 34.4668H33.6377C33.749 34.4668 33.8607 34.4605 33.9716 34.448C35.6064 34.2637 36.7822 32.7887 36.5974 31.1539L34.3873 11.5797C34.2173 10.0734 32.9431 8.93516 31.4275 8.93516H13.0209L12.9377 8.61758L12.2638 6.05703C12.1162 5.49609 11.6091 5.10508 11.0291 5.10508Z" fill="#00BEB4"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M9.72812 12.7656H36.6539C38.0637 12.7656 39.207 13.9086 39.207 15.3188C39.207 15.4328 39.1992 15.5465 39.184 15.6594L36.9922 31.943C36.7648 33.6324 35.323 34.8934 33.6184 34.8934H6.37969C4.96953 34.8934 3.82617 33.75 3.82617 32.3398C3.82617 32.2102 3.83633 32.0801 3.85586 31.952L6.36367 15.6523C6.61914 13.9914 8.04805 12.7656 9.72812 12.7656Z" fill="#CAF2F0"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M8.98438 14.6172H20.4848C20.899 14.6172 21.2348 14.9529 21.2348 15.3672C21.2348 15.7814 20.899 16.1172 20.4848 16.1172H8.98438C8.57013 16.1172 8.23438 15.7814 8.23438 15.3672C8.23438 14.9529 8.57013 14.6172 8.98438 14.6172Z" fill="#00BEB4"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.1 KiB |
6
src/assets/svg/data-flow/total-files-icon.svg
Normal file
@@ -0,0 +1,6 @@
|
||||
<svg width="40" height="40" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M11.0291 4.68164C11.8025 4.68164 12.4787 5.20273 12.6752 5.95039L13.3494 8.51133H31.4275C33.1599 8.51133 34.6158 9.8125 34.8103 11.5336L37.0205 31.1082C37.231 32.9766 35.8877 34.6621 34.0193 34.873C33.8927 34.8871 33.765 34.8945 33.6377 34.8945H6.30289C4.92476 34.8945 3.79547 33.8008 3.75094 32.4234L3.11734 12.7766H3.115L2.90719 6.43945C2.87633 5.5 3.61304 4.71328 4.5525 4.68242C4.57086 4.68203 4.58961 4.68164 4.60836 4.68164H11.0291Z" fill="#1F3232"/>
|
||||
<path d="M11.0291 4.68164C11.8025 4.68164 12.4787 5.20273 12.6752 5.95039L13.349 8.51133H31.4275C33.1599 8.51133 34.6158 9.8125 34.8103 11.5336L37.0205 31.1082C37.231 32.9766 35.8877 34.6621 34.0193 34.873C33.8927 34.8871 33.765 34.8945 33.6377 34.8945H6.30289C4.92476 34.8945 3.79547 33.8008 3.75094 32.4234L3.11656 12.7762L2.90719 6.43945C2.87633 5.5 3.61304 4.71328 4.5525 4.68242L4.58023 4.68164H11.0291ZM11.0291 5.10703H4.59078L4.56656 5.10781C3.86187 5.13086 3.30914 5.72109 3.33219 6.42539L3.54195 12.7625L4.17633 32.4098C4.21344 33.5574 5.15445 34.4687 6.30289 34.4687H33.6377C33.749 34.4687 33.8607 34.4625 33.9716 34.45C35.6064 34.2656 36.7822 32.7906 36.5974 31.1559L34.3873 11.5816C34.2173 10.0754 32.9431 8.93711 31.4275 8.93711H13.0209L12.9377 8.61953L12.2638 6.05898C12.1162 5.49805 11.6091 5.10703 11.0291 5.10703Z" fill="#1B3B3C"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M9.72812 12.7656H36.6539C38.0637 12.7656 39.207 13.9086 39.207 15.3188C39.207 15.4328 39.1992 15.5465 39.184 15.6594L36.9922 31.943C36.7648 33.6324 35.323 34.8934 33.6184 34.8934H6.37969C4.96953 34.8934 3.82617 33.75 3.82617 32.3398C3.82617 32.2102 3.83633 32.0801 3.85586 31.952L6.36367 15.6523C6.61914 13.9914 8.04805 12.7656 9.72812 12.7656Z" fill="#1B3B3C"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M8.98438 14.6172H20.4848C20.899 14.6172 21.2348 14.9529 21.2348 15.3672C21.2348 15.7814 20.899 16.1172 20.4848 16.1172H8.98438C8.57013 16.1172 8.23438 15.7814 8.23438 15.3672C8.23438 14.9529 8.57013 14.6172 8.98438 14.6172Z" fill="#00BEB4"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.1 KiB |
6
src/assets/svg/llm/cometapi.svg
Normal file
|
After Width: | Height: | Size: 96 KiB |
5
src/assets/svg/llm/deerapi.svg
Normal file
@@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- Generated by Pixelmator Pro 3.5.5 -->
|
||||
<svg width="24" height="24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
||||
<path id="path1" fill="#447eec" stroke="none" d="M 4.043384 3 C 4.218303 3.131369 4.218303 3.131369 4.245634 3.344843 C 4.235589 3.689968 4.120566 4.019037 4.020153 4.354485 C 3.648397 5.639093 3.772068 7.16324 4.721537 8.292472 C 4.834668 8.405636 4.834668 8.405636 5.092898 8.451808 C 5.099438 8.407101 5.105977 8.362394 5.112713 8.316334 C 5.266371 7.465536 5.643018 6.500875 6.492251 5.890116 C 6.722516 5.834181 6.722516 5.834181 6.929549 5.82443 C 7.088069 5.89422 7.088069 5.89422 7.191927 6.021484 C 7.238566 6.266672 7.182186 6.450504 7.071671 6.678328 C 6.587966 7.729729 6.728653 8.892773 7.366847 9.896866 C 7.683047 10.36898 8.067978 10.728178 8.59128 11.079185 C 8.649906 11.121605 8.70853 11.164025 8.768932 11.207732 C 9.66402 11.807772 10.937032 12.285625 12.156346 12.257288 C 13.377048 12.176717 14.726612 11.651421 15.533382 10.972448 C 15.588738 10.922069 15.644094 10.871689 15.701127 10.819783 C 15.850423 10.685079 15.850423 10.685079 16.08547 10.524973 C 16.383444 10.276995 16.547771 10.004078 16.725018 9.699812 C 16.759743 9.646976 16.794468 9.594141 16.830244 9.539706 C 17.098297 9.063352 17.108864 8.602456 17.113121 8.090544 C 17.114 8.021955 17.114882 7.953365 17.115789 7.882698 C 17.109453 7.451891 17.02879 7.068714 16.870663 6.654499 C 16.778524 6.380194 16.726711 6.084627 16.899937 5.82443 C 17.474003 5.873095 17.771864 6.159414 18.124371 6.481276 C 18.275856 6.67165 18.378973 6.862965 18.474209 7.072435 C 18.510059 7.143305 18.510059 7.143305 18.546637 7.215607 C 18.731159 7.597385 18.826818 7.985786 18.911507 8.386124 C 19.354362 8.235567 19.496134 8.016235 19.671312 7.692331 C 19.697708 7.645218 19.724104 7.598103 19.751299 7.549561 C 19.94206 7.198732 20.071728 6.857859 20.135941 6.481276 C 20.153978 6.410828 20.172018 6.340384 20.190603 6.267801 C 20.311863 5.357117 20.176548 4.488987 19.832565 3.61451 C 19.773235 3.416943 19.797062 3.258942 19.873562 3.065685 C 20.343493 3.074291 20.545094 3.203472 20.855154 3.445213 C 21.137327 3.710249 21.304079 4.011683 21.480631 4.321899 C 21.518852 4.385996 21.557068 4.45009 21.596447 4.51613 C 21.93461 5.092474 21.990692 5.56271 21.994455 6.1898 C 21.997162 6.299852 21.997162 6.299852 21.999922 6.412127 C 22.004002 7.072449 21.84753 7.669481 21.491564 8.275281 C 21.453457 8.340647 21.415352 8.406013 21.376089 8.473361 C 21.342043 8.531276 21.307995 8.58919 21.272915 8.648861 C 21.233231 8.726082 21.193544 8.803303 21.152658 8.882862 C 20.590042 9.776692 19.648251 10.593391 18.513157 11.107153 C 17.735565 11.48311 16.590176 12.039842 16.28772 12.721296 C 16.708294 12.597325 17.125742 12.472708 17.534019 12.327189 C 18.42695 12.030186 19.416105 11.804957 20.398319 11.933083 C 20.650791 12.052649 20.650791 12.052649 20.835617 12.195821 C 20.889799 12.745177 20.433676 13.369287 19.976738 13.786102 C 19.068974 14.416512 17.830204 14.815967 16.637558 15.020251 C 16.405041 15.058423 16.405041 15.058423 16.20026 15.15162 C 16.092342 15.326459 16.092342 15.326459 16.047207 15.537517 C 16.0268 15.614313 16.006393 15.691111 15.985371 15.770234 C 15.941998 15.985131 15.916471 16.195107 15.899619 16.41194 C 15.85338 16.919502 15.635668 17.317726 15.243672 17.729734 C 14.687399 18.330616 14.487684 19.071302 14.284009 19.776215 C 14.139319 20.134537 13.878259 20.395561 13.527279 20.656797 C 13.476657 20.695154 13.426036 20.733509 13.373882 20.773027 C 13.044217 20.98155 12.615493 20.960649 12.204453 20.981113 C 12.136414 20.985601 12.068374 20.990088 11.998274 20.994713 C 11.372272 21.025297 10.929299 20.924742 10.406066 20.652691 C 9.956832 20.315306 9.780399 19.975595 9.646261 19.51553 C 9.45176 18.889639 9.236951 18.265442 8.766199 17.721523 C 8.338652 17.217646 8.153504 16.619122 7.973939 16.041952 C 7.951638 15.970907 7.951638 15.970907 7.928885 15.898428 C 7.901113 15.807971 7.874589 15.717293 7.84954 15.62639 C 7.766208 15.349351 7.674052 15.189289 7.366847 15.020251 C 7.084245 14.934055 7.084245 14.934055 6.765562 14.868356 C 5.556292 14.586564 4.309259 14.177955 3.62556 13.33837 C 3.34536 12.926235 3.155031 12.517895 3.343707 12.064452 C 3.860229 11.811237 4.491402 11.904243 5.064542 11.990557 C 5.992092 12.14533 6.804541 12.365472 7.629225 12.721296 C 7.549964 12.200433 7.008167 11.934837 6.498059 11.6257 C 6.238734 11.478328 5.973781 11.345892 5.699649 11.21466 C 5.246062 10.99374 4.881122 10.743555 4.511429 10.448256 C 4.305137 10.283882 4.305137 10.283882 4.043384 10.135485 C 3.752214 9.943573 3.574499 9.753546 3.376505 9.506865 C 3.311633 9.428246 3.246722 9.349648 3.181771 9.271068 C 3.150556 9.232649 3.11934 9.194228 3.087179 9.154644 C 2.999125 9.049258 2.904421 8.947053 2.809384 8.845145 C 1.856228 7.713696 1.874341 6.082378 2.206733 4.810427 C 2.455393 4.168301 3.071521 3.532841 3.693546 3.065685 C 3.872223 3.013599 3.872223 3.013599 4.043384 3 Z"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 4.9 KiB |
@@ -1 +1 @@
|
||||
<svg id="layer_2" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 274.37 172.76"><defs><style>.cls-2{fill:#36cfd1}.cls-3{fill:#624aff}</style></defs><g id="layer_1-2"><path class="cls-3" d="M24.78 73.55h25.65V99.2H24.78zm99.14 25.66h25.65v25.65h-25.65zm76.95 25.65h-25.65v22.19h47.84V99.21h-22.19v25.65z"/><path class="cls-2" d="M149.57 73.55h25.65V99.2h-25.65zM24.78 47.9h25.65v25.65H24.78z"/><path class="cls-3" d="M223.06 73.55h25.65V99.2h-25.65z"/><path class="cls-2" d="M223.06 47.9h25.65v25.65h-25.65z"/><path class="cls-3" d="M175.22 25.71V47.9h25.65v25.65h22.19V25.71h-47.84z"/><path class="cls-2" d="M98.27 73.55h25.65V99.2H98.27z"/><path class="cls-3" d="M72.62 47.9h25.65V25.71H50.43v47.84h22.19V47.9zm0 51.31H50.43v47.84h47.84v-22.19H72.62V99.21z"/><path style="fill:none" d="M0 0h274.37v172.76H0z"/></g></svg>
|
||||
<svg id="_层_2" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 274.37 172.76"><defs><style>.cls-2{fill:#36cfd1}.cls-3{fill:#624aff}</style></defs><g id="_层_1-2"><path class="cls-3" d="M24.78 73.55h25.65V99.2H24.78zm99.14 25.66h25.65v25.65h-25.65zm76.95 25.65h-25.65v22.19h47.84V99.21h-22.19v25.65z"/><path class="cls-2" d="M149.57 73.55h25.65V99.2h-25.65zM24.78 47.9h25.65v25.65H24.78z"/><path class="cls-3" d="M223.06 73.55h25.65V99.2h-25.65z"/><path class="cls-2" d="M223.06 47.9h25.65v25.65h-25.65z"/><path class="cls-3" d="M175.22 25.71V47.9h25.65v25.65h22.19V25.71h-47.84z"/><path class="cls-2" d="M98.27 73.55h25.65V99.2H98.27z"/><path class="cls-3" d="M72.62 47.9h25.65V25.71H50.43v47.84h22.19V47.9zm0 51.31H50.43v47.84h47.84v-22.19H72.62V99.21z"/><path style="fill:none" d="M0 0h274.37v172.76H0z"/></g></svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 822 B After Width: | Height: | Size: 821 B |
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg id="layer_2" data-name="layer 2" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 111.08 53.12">
|
||||
<svg id="_图层_2" data-name="图层 2" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 111.08 53.12">
|
||||
<defs>
|
||||
<style>
|
||||
.cls-1 {
|
||||
@@ -7,7 +7,7 @@
|
||||
}
|
||||
</style>
|
||||
</defs>
|
||||
<g id="layer_1-2" data-name="layer 1">
|
||||
<g id="_图层_1-2" data-name="图层 1">
|
||||
<path class="cls-1" d="M106.25,0h-48.3c-2.67,0-4.83,2.16-4.83,4.83v14.49c0,2.67-2.16,4.83-4.83,4.83H4.83c-2.67,0-4.83,2.16-4.83,4.83v19.32c0,2.67,2.16,4.83,4.83,4.83h48.3c2.67,0,4.83-2.16,4.83-4.83v-14.49c0-2.67,2.16-4.83,4.83-4.83h43.47c2.67,0,4.83-2.16,4.83-4.83V4.83c0-2.67-2.16-4.83-4.83-4.83Z"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 589 B After Width: | Height: | Size: 595 B |
8
src/assets/svg/llm/token-pony.svg
Normal file
|
After Width: | Height: | Size: 16 KiB |
1
src/assets/svg/rerun.svg
Normal file
@@ -0,0 +1 @@
|
||||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1757483419289" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="22299" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M998.765714 523.629714c13.824 0 25.014857 11.190857 25.014857 25.014857a475.282286 475.282286 0 0 1-875.593142 256.219429l-27.574858 55.149714a25.014857 25.014857 0 1 1-44.763428-22.454857l44.178286-88.283428a24.868571 24.868571 0 0 1 26.550857-25.526858 25.014857 25.014857 0 0 1 8.265143 0.804572l99.474285 24.868571a25.014857 25.014857 0 0 1-12.068571 48.566857l-46.372572-11.556571A425.252571 425.252571 0 0 0 973.750857 548.571429c0-13.897143 11.190857-25.014857 25.014857-25.014858zM430.957714 365.714286l6.729143 0.658285c2.633143 0.438857 285.549714 160.109714 285.549714 160.109715 20.114286 17.846857 7.314286 34.523429-6.582857 45.933714-1.828571 1.462857-194.779429 113.078857-249.929143 144.969143l-10.678857 6.217143-3.876571 2.194285c-16.676571 8.923429-39.497143 8.923429-47.250286-11.995428-0.877714-2.194286-2.267429-250.221714-2.56-303.396572L402.285714 400.457143l0.731429-0.512c0.731429-18.651429 8.265143-38.034286 34.669714-33.645714z m-15.945143-273.408a475.282286 475.282286 0 0 1 533.869715 200.045714l27.501714-55.149714a25.014857 25.014857 0 1 1 44.690286 22.454857l-44.105143 88.283428a24.868571 24.868571 0 0 1-26.624 25.526858 24.868571 24.868571 0 0 1-8.192-0.804572l-99.547429-24.868571a25.014857 25.014857 0 0 1 12.068572-48.566857l46.445714 11.629714A425.252571 425.252571 0 0 0 123.245714 548.571429a25.014857 25.014857 0 0 1-50.029714 0 475.282286 475.282286 0 0 1 341.796571-456.265143z" fill="#3BA05C" p-id="22300"></path></svg>
|
||||
|
After Width: | Height: | Size: 1.8 KiB |
@@ -4,50 +4,68 @@ import type { IDocumentInfo } from './document';
|
||||
|
||||
/**
|
||||
{
|
||||
"avatar": "data:image/png;base64,iVBORw0K
|
||||
"chunk_num": 1180,
|
||||
"create_time": 1759986452748,
|
||||
"description": " 213213",
|
||||
"doc_num": 16,
|
||||
"embd_id": "",
|
||||
"id": "dcc2871aa4cd11f08d4116ac85b1de0a",
|
||||
"language": "English",
|
||||
"name": "k1123",
|
||||
"pagerank": 0,
|
||||
"parser_config": {
|
||||
"auto_keywords": 0,
|
||||
"auto_questions": 0,
|
||||
"chunk_token_num": 512,
|
||||
"delimiter": "\n",
|
||||
"graphrag": {
|
||||
"entity_types": [
|
||||
"organization",
|
||||
"person",
|
||||
"geo",
|
||||
"event",
|
||||
"category"
|
||||
],
|
||||
"method": "light",
|
||||
"use_graphrag": true
|
||||
},
|
||||
"html4excel": false,
|
||||
"layout_recognize": "Plain Text",
|
||||
"raptor": {
|
||||
"max_cluster": 64,
|
||||
"max_token": 256,
|
||||
"prompt": "\u8bf7\u603b\u7ed3\u4ee5\u4e0b\u6bb5\u843d\u3002 \u5c0f\u5fc3\u6570\u5b57\uff0c\u4e0d\u8981\u7f16\u9020\u3002 \u6bb5\u843d\u5982\u4e0b\uff1a\n {cluster_content}\n\u4ee5\u4e0a\u5c31\u662f\u4f60\u9700\u8981\u603b\u7ed3\u7684\u5185\u5bb9\u3002",
|
||||
"random_seed": 0,
|
||||
"threshold": 0.1,
|
||||
"use_raptor": false
|
||||
},
|
||||
"topn_tags": 3
|
||||
},
|
||||
"parser_id": "naive",
|
||||
"permission": "team",
|
||||
"size": 56819092,
|
||||
"token_num": 293067,
|
||||
"update_time": 1760436169574
|
||||
}
|
||||
"code": 0,
|
||||
"data": {
|
||||
"avatar": null,
|
||||
"chunk_num": 1,
|
||||
"create_date": "Mon, 03 Nov 2025 10:39:46 GMT",
|
||||
"create_time": 1762137586655,
|
||||
"created_by": "cd77706ca4d811f0876d42010a8e0002",
|
||||
"description": " ",
|
||||
"doc_num": 2,
|
||||
"embd_id": "qwen3-embedding:4b@Ollama#cd77706ca4d811f0876d42010a8e0002",
|
||||
"graphrag_task_finish_at": null,
|
||||
"graphrag_task_id": null,
|
||||
"id": "5c7b2afeb85e11f09ce242010a8e0004",
|
||||
"language": "English",
|
||||
"mindmap_task_finish_at": null,
|
||||
"mindmap_task_id": null,
|
||||
"name": "k1123",
|
||||
"pagerank": 0,
|
||||
"parser_config": {
|
||||
"auto_keywords": 0,
|
||||
"auto_questions": 0,
|
||||
"chunk_token_num": 512,
|
||||
"delimiter": "\n",
|
||||
"graphrag": {
|
||||
"entity_types": [
|
||||
"organization",
|
||||
"person",
|
||||
"geo",
|
||||
"event",
|
||||
"category"
|
||||
],
|
||||
"method": "light",
|
||||
"use_graphrag": true
|
||||
},
|
||||
"html4excel": false,
|
||||
"layout_recognize": "DeepDOC",
|
||||
"raptor": {
|
||||
"max_cluster": 64,
|
||||
"max_token": 256,
|
||||
"prompt": "Please summarize the following paragraphs. Be careful with the numbers, do not make things up. Paragraphs as following:\n {cluster_content}\nThe above is the content you need to summarize.",
|
||||
"random_seed": 0,
|
||||
"threshold": 0.1,
|
||||
"use_raptor": true
|
||||
},
|
||||
"toc_extraction": false,
|
||||
"topn_tags": 3
|
||||
},
|
||||
"parser_id": "naive",
|
||||
"permission": "me",
|
||||
"pipeline_id": "",
|
||||
"raptor_task_finish_at": null,
|
||||
"raptor_task_id": null,
|
||||
"similarity_threshold": 0.2,
|
||||
"status": "1",
|
||||
"tenant_id": "cd77706ca4d811f0876d42010a8e0002",
|
||||
"token_num": 256,
|
||||
"update_date": "Mon, 03 Nov 2025 16:30:55 GMT",
|
||||
"update_time": 1762158655195,
|
||||
"vector_similarity_weight": 0.3
|
||||
},
|
||||
"message": "success"
|
||||
}
|
||||
*/
|
||||
|
||||
|
||||
@@ -61,6 +79,8 @@ export interface IKnowledge {
|
||||
avatar?: any;
|
||||
/** 知识库中的文档块数量 */
|
||||
chunk_num: number;
|
||||
/** 知识库Pagerank值 */
|
||||
pagerank: number;
|
||||
/** 创建日期(字符串格式) */
|
||||
create_date: string;
|
||||
/** 创建时间戳 */
|
||||
@@ -119,6 +139,10 @@ export interface IKnowledge {
|
||||
mindmap_task_finish_at?: string;
|
||||
/** 思维导图任务ID,可选 */
|
||||
mindmap_task_id?: string;
|
||||
/** GraphRAG任务完成时间,可选 */
|
||||
graphrag_task_finish_at?: string;
|
||||
/** GraphRAG任务ID,可选 */
|
||||
graphrag_task_id?: string;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -213,6 +237,8 @@ export interface IParserConfig {
|
||||
topn_tags?: number;
|
||||
/** GraphRAG配置,可选 */
|
||||
graphrag?: IGraphrag;
|
||||
/** 目录提取配置,可选 */
|
||||
toc_extraction?: boolean;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -206,8 +206,10 @@ export default {
|
||||
autoQuestions: 'Auto Questions Extraction',
|
||||
enterQuestionCount: 'Enter question count',
|
||||
pdfParser: 'PDF Parser',
|
||||
plainText: 'Plain Text',
|
||||
plainText: 'Naive',
|
||||
minerU: 'MinerU',
|
||||
experimental: 'Experimental',
|
||||
tocEnhance: 'TOC Enhance',
|
||||
delimiter: 'Delimiter',
|
||||
enterDelimiter: 'Enter delimiter',
|
||||
embeddingModel: 'Embedding Model',
|
||||
|
||||
@@ -191,6 +191,8 @@ export default {
|
||||
enterQuestionCount: '输入问题数量',
|
||||
pdfParser: 'PDF解析器',
|
||||
plainText: '纯文本',
|
||||
minerU: 'MinerU',
|
||||
tocEnhance: 'TOC Enhance',
|
||||
experimental: '实验性',
|
||||
delimiter: '分隔符',
|
||||
enterDelimiter: '请输入分隔符',
|
||||
|
||||
@@ -175,9 +175,9 @@ const Home = () => {
|
||||
<CardContent>
|
||||
<CardTitle>Model Overview</CardTitle>
|
||||
<Box sx={{ display: 'flex', flexDirection: 'column', gap: '0.4rem', fontSize: '0.7rem' }}>
|
||||
<Box>Embedding Model: <strong>text-embedding-3-large</strong></Box>
|
||||
<Box>Generator: <strong>gpt-4o-mini</strong></Box>
|
||||
<Box>Reranker: <strong>cross-encoder-v2</strong></Box>
|
||||
<Box>Embedding Model: <Box component="strong" sx={{ fontWeight: 'bold' }}>text-embedding-3-large</Box></Box>
|
||||
<Box>Generator: <Box component="strong" sx={{ fontWeight: 'bold' }}>gpt-4o-mini</Box></Box>
|
||||
<Box>Reranker: <Box component="strong" sx={{ fontWeight: 'bold' }}>cross-encoder-v2</Box></Box>
|
||||
<Box>Chunking: 512 tokens</Box>
|
||||
<Box>Retriever Top-K: 8</Box>
|
||||
</Box>
|
||||
|
||||
@@ -20,7 +20,6 @@ import {
|
||||
PresentationConfiguration,
|
||||
OneConfiguration,
|
||||
TagConfiguration,
|
||||
ChunkMethodItem,
|
||||
} from '../configuration';
|
||||
|
||||
// 配置组件映射表
|
||||
|
||||
@@ -18,6 +18,8 @@ import {
|
||||
Delete as DeleteIcon,
|
||||
} from '@mui/icons-material';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import { EmbeddingModelItem } from '../configuration';
|
||||
import { PageRankItem, TagsItem } from '../configuration/common-items';
|
||||
|
||||
interface GeneralFormProps {
|
||||
form?: UseFormReturn;
|
||||
@@ -37,7 +39,7 @@ function GeneralForm({
|
||||
cancelButtonText,
|
||||
}: GeneralFormProps = {}) {
|
||||
const { t } = useTranslation();
|
||||
|
||||
|
||||
const defaultSubmitButtonText = submitButtonText || t('common.save');
|
||||
const defaultCancelButtonText = cancelButtonText || t('common.cancel');
|
||||
// 优先使用props传递的form,否则使用FormProvider的context
|
||||
@@ -47,9 +49,9 @@ function GeneralForm({
|
||||
} catch (error) {
|
||||
contextForm = null;
|
||||
}
|
||||
|
||||
|
||||
const form = propForm || contextForm;
|
||||
|
||||
|
||||
if (!form) {
|
||||
console.error('GeneralForm: No form context found. Component must be used within a FormProvider or receive a form prop.');
|
||||
return (
|
||||
@@ -60,7 +62,7 @@ function GeneralForm({
|
||||
</Box>
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
const { control, watch, setValue, handleSubmit } = form;
|
||||
const fileInputRef = useRef<HTMLInputElement>(null);
|
||||
|
||||
@@ -94,7 +96,7 @@ function GeneralForm({
|
||||
</Typography>
|
||||
|
||||
<Grid container spacing={3}>
|
||||
<Grid size={{xs:12, md:6}}>
|
||||
<Grid size={{ xs: 12, md: 6 }}>
|
||||
<Box sx={{ display: 'flex', flexDirection: 'row', alignItems: 'center', gap: 2 }}>
|
||||
<Avatar
|
||||
src={avatar}
|
||||
@@ -103,7 +105,7 @@ function GeneralForm({
|
||||
>
|
||||
{!avatar && <PhotoCameraIcon sx={{ fontSize: 40 }} />}
|
||||
</Avatar>
|
||||
|
||||
|
||||
<Box sx={{ display: 'flex', gap: 1 }}>
|
||||
<Button
|
||||
variant="outlined"
|
||||
@@ -135,9 +137,9 @@ function GeneralForm({
|
||||
</Grid>
|
||||
|
||||
{/* 表单字段 */}
|
||||
<Grid size={{xs:12,md:8}}>
|
||||
<Grid size={{ xs: 12, md: 8 }}>
|
||||
<Grid container spacing={2}>
|
||||
<Grid size={{xs:12}}>
|
||||
<Grid size={{ xs: 12 }}>
|
||||
<Controller
|
||||
name="name"
|
||||
control={control}
|
||||
@@ -155,7 +157,7 @@ function GeneralForm({
|
||||
/>
|
||||
</Grid>
|
||||
|
||||
<Grid size={{xs:12}}>
|
||||
<Grid size={{ xs: 12 }}>
|
||||
<Controller
|
||||
name="description"
|
||||
control={control}
|
||||
@@ -172,7 +174,7 @@ function GeneralForm({
|
||||
/>
|
||||
</Grid>
|
||||
|
||||
<Grid size={{xs:12}}>
|
||||
<Grid size={{ xs: 12 }}>
|
||||
<Controller
|
||||
name="permission"
|
||||
control={control}
|
||||
@@ -188,7 +190,13 @@ function GeneralForm({
|
||||
/>
|
||||
</Grid>
|
||||
</Grid>
|
||||
<Grid size={{ xs: 12 }} sx={{ mt: 2 }}>
|
||||
<EmbeddingModelItem />
|
||||
<PageRankItem />
|
||||
<TagsItem />
|
||||
</Grid>
|
||||
</Grid>
|
||||
|
||||
</Grid>
|
||||
|
||||
{/* 表单操作按钮 - 仅在有onSubmit回调时显示 */}
|
||||
|
||||
@@ -1,16 +1,72 @@
|
||||
import React from 'react';
|
||||
import { ConfigurationFormContainer } from './configuration-form-container';
|
||||
import { ChunkMethodItem, EmbeddingModelItem, PageRankItem, AutoKeywordsItem, AutoQuestionsItem, TagsItem } from './common-items';
|
||||
import {
|
||||
Box,
|
||||
Typography,
|
||||
Accordion,
|
||||
AccordionSummary,
|
||||
AccordionDetails,
|
||||
Divider,
|
||||
} from '@mui/material';
|
||||
import { ExpandMore as ExpandMoreIcon } from '@mui/icons-material';
|
||||
import { useFormContext } from 'react-hook-form';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import { ConfigurationFormContainer, MainContainer } from './configuration-form-container';
|
||||
import {
|
||||
ChunkMethodItem,
|
||||
AutoKeywordsItem,
|
||||
AutoQuestionsItem,
|
||||
RaptorConfigItems,
|
||||
KnowledgeGraphConfigItems,
|
||||
} from './common-items';
|
||||
|
||||
export function AudioConfiguration() {
|
||||
const { formState: { errors } } = useFormContext();
|
||||
const { t } = useTranslation();
|
||||
|
||||
return (
|
||||
<ConfigurationFormContainer>
|
||||
<ChunkMethodItem />
|
||||
<EmbeddingModelItem />
|
||||
<PageRankItem />
|
||||
<AutoKeywordsItem />
|
||||
<AutoQuestionsItem />
|
||||
<TagsItem />
|
||||
<MainContainer>
|
||||
{/* 第一部分:basicConfig 基础配置 */}
|
||||
<Accordion defaultExpanded>
|
||||
<AccordionSummary expandIcon={<ExpandMoreIcon />}>
|
||||
<Typography variant="h6">{t('knowledge.config.basicConfig')}</Typography>
|
||||
</AccordionSummary>
|
||||
<AccordionDetails>
|
||||
{/* 切片方法 */}
|
||||
<Box sx={{ mb: 3 }}>
|
||||
<ChunkMethodItem />
|
||||
</Box>
|
||||
<Divider />
|
||||
|
||||
<Box sx={{ display: 'flex', flexDirection: 'column', gap: 3, mt: 3 }}>
|
||||
{/* 自动关键词提取 */}
|
||||
<AutoKeywordsItem />
|
||||
{/* 自动问题提取 */}
|
||||
<AutoQuestionsItem />
|
||||
</Box>
|
||||
</AccordionDetails>
|
||||
</Accordion>
|
||||
|
||||
{/* 第二部分:RAPTOR策略 */}
|
||||
<Accordion>
|
||||
<AccordionSummary expandIcon={<ExpandMoreIcon />}>
|
||||
<Typography variant="h6">{t('knowledge.config.raptorStrategy')}</Typography>
|
||||
</AccordionSummary>
|
||||
<AccordionDetails>
|
||||
<RaptorConfigItems />
|
||||
</AccordionDetails>
|
||||
</Accordion>
|
||||
|
||||
{/* 第三部分:Knowledge Graph 知识图谱 */}
|
||||
<Accordion>
|
||||
<AccordionSummary expandIcon={<ExpandMoreIcon />}>
|
||||
<Typography variant="h6">{t('knowledge.config.knowledgeGraph')}</Typography>
|
||||
</AccordionSummary>
|
||||
<AccordionDetails>
|
||||
<KnowledgeGraphConfigItems />
|
||||
</AccordionDetails>
|
||||
</Accordion>
|
||||
</MainContainer>
|
||||
</ConfigurationFormContainer>
|
||||
);
|
||||
}
|
||||
@@ -1,61 +1,62 @@
|
||||
import React from 'react';
|
||||
import { ConfigurationFormContainer, MainContainer } from './configuration-form-container';
|
||||
import {
|
||||
import { Box, Typography, Accordion, AccordionSummary, AccordionDetails } from '@mui/material';
|
||||
import { ExpandMore as ExpandMoreIcon } from '@mui/icons-material';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import { ConfigurationFormContainer } from './configuration-form-container';
|
||||
import {
|
||||
ChunkMethodItem,
|
||||
EmbeddingModelItem,
|
||||
LayoutRecognizeItem,
|
||||
PageRankItem,
|
||||
AutoKeywordsItem,
|
||||
AutoQuestionsItem,
|
||||
UseRaptorItem,
|
||||
RaptorPromptItem,
|
||||
RaptorMaxTokenItem,
|
||||
RaptorThresholdItem,
|
||||
RaptorMaxClusterItem,
|
||||
RaptorRandomSeedItem,
|
||||
UseGraphragItem,
|
||||
EntityTypesItem,
|
||||
GraphragMethodItem,
|
||||
EntityNormalizeItem,
|
||||
CommunityReportItem,
|
||||
TagsItem
|
||||
ChunkTokenNumberItem,
|
||||
DelimiterItem,
|
||||
TOCEnhanceItem,
|
||||
RaptorConfigItems,
|
||||
KnowledgeGraphConfigItems
|
||||
} from './common-items';
|
||||
|
||||
export function BookConfiguration() {
|
||||
const { t } = useTranslation();
|
||||
|
||||
return (
|
||||
<MainContainer>
|
||||
<ConfigurationFormContainer>
|
||||
<ChunkMethodItem />
|
||||
<LayoutRecognizeItem />
|
||||
<EmbeddingModelItem />
|
||||
<PageRankItem />
|
||||
</ConfigurationFormContainer>
|
||||
<ConfigurationFormContainer>
|
||||
<Box sx={{ display: 'flex', flexDirection: 'column', gap: 3 }}>
|
||||
{/* 第一部分:基础配置 */}
|
||||
<Accordion defaultExpanded>
|
||||
<AccordionSummary expandIcon={<ExpandMoreIcon />}>
|
||||
<Typography variant="h6">{t('knowledge.config.basicConfig')}</Typography>
|
||||
</AccordionSummary>
|
||||
<AccordionDetails>
|
||||
<Box sx={{ display: 'flex', flexDirection: 'column', gap: 3 }}>
|
||||
{/* 分块方法 */}
|
||||
<ChunkMethodItem />
|
||||
{/* 分块token数 */}
|
||||
<ChunkTokenNumberItem />
|
||||
{/* 分隔符 */}
|
||||
<DelimiterItem />
|
||||
{/* 目录增强 */}
|
||||
<TOCEnhanceItem />
|
||||
</Box>
|
||||
</AccordionDetails>
|
||||
</Accordion>
|
||||
|
||||
<ConfigurationFormContainer>
|
||||
<AutoKeywordsItem />
|
||||
<AutoQuestionsItem />
|
||||
</ConfigurationFormContainer>
|
||||
{/* 第二部分:RAPTOR策略 */}
|
||||
<Accordion>
|
||||
<AccordionSummary expandIcon={<ExpandMoreIcon />}>
|
||||
<Typography variant="h6">{t('knowledge.config.raptorStrategy')}</Typography>
|
||||
</AccordionSummary>
|
||||
<AccordionDetails>
|
||||
<RaptorConfigItems />
|
||||
</AccordionDetails>
|
||||
</Accordion>
|
||||
|
||||
<ConfigurationFormContainer>
|
||||
<UseRaptorItem />
|
||||
<RaptorPromptItem />
|
||||
<RaptorMaxTokenItem />
|
||||
<RaptorThresholdItem />
|
||||
<RaptorMaxClusterItem />
|
||||
<RaptorRandomSeedItem />
|
||||
</ConfigurationFormContainer>
|
||||
|
||||
<ConfigurationFormContainer>
|
||||
<UseGraphragItem />
|
||||
<EntityTypesItem />
|
||||
<GraphragMethodItem />
|
||||
<EntityNormalizeItem />
|
||||
<CommunityReportItem />
|
||||
</ConfigurationFormContainer>
|
||||
|
||||
<ConfigurationFormContainer>
|
||||
<TagsItem />
|
||||
</ConfigurationFormContainer>
|
||||
</MainContainer>
|
||||
{/* 第三部分:Knowledge Graph 知识图谱 */}
|
||||
<Accordion>
|
||||
<AccordionSummary expandIcon={<ExpandMoreIcon />}>
|
||||
<Typography variant="h6">{t('knowledge.config.knowledgeGraph')}</Typography>
|
||||
</AccordionSummary>
|
||||
<AccordionDetails>
|
||||
<KnowledgeGraphConfigItems />
|
||||
</AccordionDetails>
|
||||
</Accordion>
|
||||
</Box>
|
||||
</ConfigurationFormContainer>
|
||||
);
|
||||
}
|
||||
@@ -46,6 +46,58 @@ const PARSER_OPTIONS = [
|
||||
{ value: DOCUMENT_PARSER_TYPES.Tag, label: 'Tag', description: translate('knowledge.config.parser.tag') },
|
||||
];
|
||||
|
||||
/* ============================================================================
|
||||
* 第一部分:基础配置 (Basic Configuration)
|
||||
* ============================================================================ */
|
||||
|
||||
/**
|
||||
* 嵌入模型选择
|
||||
*/
|
||||
export function EmbeddingModelItem() {
|
||||
const { control } = useFormContext();
|
||||
const { t } = useTranslation();
|
||||
const { options } = useEmbeddingModelOptions();
|
||||
|
||||
return (
|
||||
<Box>
|
||||
<Typography variant="subtitle1" sx={{ minWidth: 120 }}>
|
||||
{t('knowledge.config.embeddingModel')}
|
||||
</Typography>
|
||||
<Box sx={{ flex: 1 }}>
|
||||
<Controller
|
||||
name="embd_id"
|
||||
control={control}
|
||||
render={({ field }) => (
|
||||
<FormControl fullWidth variant="outlined">
|
||||
<Select
|
||||
{...field}
|
||||
>
|
||||
{options.map((group) => [
|
||||
<ListSubheader key={group.label}>{group.label}</ListSubheader>,
|
||||
...group.options.map((option) => (
|
||||
<MenuItem key={option.value} value={option.value} disabled={option.disabled}>
|
||||
<Box sx={{ display: 'flex', alignItems: 'center', gap: 1 }}>
|
||||
<LlmSvgIcon
|
||||
name={getFactoryIconName(group.label as LLMFactory)}
|
||||
sx={{ width: 20, height: 20, color: 'primary.main' }}
|
||||
/>
|
||||
{option.label}
|
||||
</Box>
|
||||
</MenuItem>
|
||||
))
|
||||
])}
|
||||
</Select>
|
||||
</FormControl>
|
||||
)}
|
||||
/>
|
||||
</Box>
|
||||
</Box>
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 分块方法选择
|
||||
*/
|
||||
export function ChunkMethodItem() {
|
||||
const { control, formState: { errors } } = useFormContext();
|
||||
const parserIds = useSelectChunkMethodList();
|
||||
@@ -97,78 +149,6 @@ export function ChunkMethodItem() {
|
||||
);
|
||||
}
|
||||
|
||||
// 基于基础FormField组件的业务组合组件
|
||||
|
||||
// 分块token数量配置
|
||||
export function ChunkTokenNumberItem() {
|
||||
const { t } = useTranslation();
|
||||
return (
|
||||
<SliderInputFormField
|
||||
name="parser_config.chunk_token_num"
|
||||
label={t('knowledge.config.chunkTokenSize')}
|
||||
min={64}
|
||||
max={2048}
|
||||
step={64}
|
||||
defaultValue={512}
|
||||
layout="horizontal"
|
||||
/>
|
||||
);
|
||||
}
|
||||
|
||||
// 页面排名配置
|
||||
export function PageRankItem() {
|
||||
const { t } = useTranslation();
|
||||
return (
|
||||
<NumberInputFormField
|
||||
name="parser_config.page_rank"
|
||||
label={t('knowledge.config.pageRank')}
|
||||
defaultValue={0}
|
||||
min={0}
|
||||
placeholder={t('knowledge.config.enterPageRank')}
|
||||
/>
|
||||
);
|
||||
}
|
||||
|
||||
// 自动关键词数量配置
|
||||
export function AutoKeywordsItem() {
|
||||
const { t } = useTranslation();
|
||||
return (
|
||||
<NumberInputFormField
|
||||
name="parser_config.auto_keywords"
|
||||
label={t('knowledge.config.autoKeywords')}
|
||||
defaultValue={0}
|
||||
min={0}
|
||||
placeholder={t('knowledge.config.enterKeywordCount')}
|
||||
/>
|
||||
);
|
||||
}
|
||||
|
||||
// 自动问题数量配置
|
||||
export function AutoQuestionsItem() {
|
||||
const { t } = useTranslation();
|
||||
return (
|
||||
<NumberInputFormField
|
||||
name="parser_config.auto_questions"
|
||||
label={t('knowledge.config.autoQuestions')}
|
||||
defaultValue={0}
|
||||
min={0}
|
||||
placeholder={t('knowledge.config.enterQuestionCount')}
|
||||
/>
|
||||
);
|
||||
}
|
||||
|
||||
// 表格转HTML开关
|
||||
export function HtmlForExcelItem() {
|
||||
const { t } = useTranslation();
|
||||
return (
|
||||
<SwitchFormField
|
||||
name="parser_config.html4excel"
|
||||
label={t('knowledge.config.htmlForExcel')}
|
||||
defaultValue={false}
|
||||
/>
|
||||
);
|
||||
}
|
||||
|
||||
// 标签集选择
|
||||
export function TagsItem() {
|
||||
const { t } = useTranslation();
|
||||
@@ -188,6 +168,183 @@ export function TagsItem() {
|
||||
);
|
||||
}
|
||||
|
||||
// 页面排名配置
|
||||
export function PageRankItem() {
|
||||
const { t } = useTranslation();
|
||||
return (
|
||||
<NumberInputFormField
|
||||
name="pagerank"
|
||||
label={t('knowledge.config.pageRank')}
|
||||
defaultValue={0}
|
||||
min={0}
|
||||
placeholder={t('knowledge.config.enterPageRank')}
|
||||
/>
|
||||
);
|
||||
}
|
||||
|
||||
// PDF解析器配置
|
||||
export function LayoutRecognizeItem() {
|
||||
const { control, setValue, formState } = useFormContext();
|
||||
const { t } = useTranslation();
|
||||
const { getOptionsByModelType } = useLlmOptionsByModelType();
|
||||
|
||||
const { basicOptions, image2TextOptions } = useMemo(() => {
|
||||
// 基础选项
|
||||
const basicOptions = [
|
||||
{ value: 'DeepDOC', label: 'DeepDOC' },
|
||||
{ value: 'Plain Text', label: t('knowledge.config.plainText') },
|
||||
{ value: 'MinerU', label: t('knowledge.config.minerU') }
|
||||
];
|
||||
|
||||
// 获取图像转文本模型选项
|
||||
const image2TextOptions = getOptionsByModelType(LLM_MODEL_TYPES.Image2text);
|
||||
|
||||
return { basicOptions, image2TextOptions };
|
||||
}, [getOptionsByModelType, t]);
|
||||
|
||||
return (
|
||||
<Box>
|
||||
<Typography variant="subtitle1" sx={{ minWidth: 120 }}>
|
||||
{t('knowledge.config.pdfParser')}
|
||||
</Typography>
|
||||
<Box sx={{ flex: 1 }}>
|
||||
<Controller
|
||||
name="parser_config.layout_recognize"
|
||||
control={control}
|
||||
render={({ field }) => {
|
||||
// 设置默认值
|
||||
if (typeof field.value === 'undefined') {
|
||||
const defaultValue = formState.defaultValues?.parser_config?.layout_recognize ?? 'DeepDOC';
|
||||
setValue('parser_config.layout_recognize', defaultValue);
|
||||
}
|
||||
|
||||
return (
|
||||
<FormControl fullWidth variant="outlined">
|
||||
<Select {...field}>
|
||||
{/* 基础选项 */}
|
||||
{basicOptions.map((option) => (
|
||||
<MenuItem key={option.value} value={option.value}>
|
||||
{option.label}
|
||||
</MenuItem>
|
||||
))}
|
||||
|
||||
{/* 图像转文本模型选项 - 带分组和图标 */}
|
||||
{image2TextOptions.map((group) => [
|
||||
<ListSubheader key={group.label}>{group.label}</ListSubheader>,
|
||||
...group.options.map((option) => (
|
||||
<MenuItem key={option.value} value={option.value} disabled={option.disabled}>
|
||||
<Box sx={{ display: 'flex', alignItems: 'center', gap: 1 }}>
|
||||
<LlmSvgIcon
|
||||
name={getFactoryIconName(group.label as LLMFactory)}
|
||||
sx={{ width: 20, height: 20, color: 'primary.main' }}
|
||||
/>
|
||||
{option.label}
|
||||
<Typography variant="caption" color="error.main">
|
||||
{t('knowledge.config.experimental')}
|
||||
</Typography>
|
||||
</Box>
|
||||
</MenuItem>
|
||||
))
|
||||
])}
|
||||
</Select>
|
||||
</FormControl>
|
||||
);
|
||||
}}
|
||||
/>
|
||||
</Box>
|
||||
</Box>
|
||||
);
|
||||
}
|
||||
|
||||
// 文本分段标识符配置
|
||||
export function DelimiterItem() {
|
||||
const { t } = useTranslation();
|
||||
return (
|
||||
<TextFormField
|
||||
name="parser_config.delimiter"
|
||||
label={t('knowledge.config.delimiter')}
|
||||
placeholder={t('knowledge.config.enterDelimiter')}
|
||||
defaultValue="\n"
|
||||
/>
|
||||
);
|
||||
}
|
||||
|
||||
// 分块token数量配置
|
||||
export function ChunkTokenNumberItem() {
|
||||
const { t } = useTranslation();
|
||||
return (
|
||||
<SliderInputFormField
|
||||
name="parser_config.chunk_token_num"
|
||||
label={t('knowledge.config.chunkTokenSize')}
|
||||
min={64}
|
||||
max={2048}
|
||||
step={64}
|
||||
defaultValue={512}
|
||||
layout="horizontal"
|
||||
/>
|
||||
);
|
||||
}
|
||||
|
||||
// 自动关键词数量配置
|
||||
export function AutoKeywordsItem() {
|
||||
const { t } = useTranslation();
|
||||
return (
|
||||
<SliderInputFormField
|
||||
name="parser_config.auto_keywords"
|
||||
label={t('knowledge.config.autoKeywords')}
|
||||
defaultValue={0}
|
||||
step={1}
|
||||
max={30}
|
||||
min={0}
|
||||
/>
|
||||
);
|
||||
}
|
||||
|
||||
// 自动问题数量配置
|
||||
export function AutoQuestionsItem() {
|
||||
const { t } = useTranslation();
|
||||
return (
|
||||
<SliderInputFormField
|
||||
name="parser_config.auto_questions"
|
||||
label={t('knowledge.config.autoQuestions')}
|
||||
defaultValue={0}
|
||||
step={1}
|
||||
max={30}
|
||||
min={0}
|
||||
/>
|
||||
);
|
||||
}
|
||||
|
||||
// 表格转HTML开关
|
||||
export function HtmlForExcelItem() {
|
||||
const { t } = useTranslation();
|
||||
return (
|
||||
<SwitchFormField
|
||||
name="parser_config.html4excel"
|
||||
label={t('knowledge.config.htmlForExcel')}
|
||||
defaultValue={false}
|
||||
/>
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 目录增强开关
|
||||
*/
|
||||
export function TOCEnhanceItem() {
|
||||
const { t } = useTranslation();
|
||||
return (
|
||||
<SwitchFormField
|
||||
name="parser_config.toc_extraction"
|
||||
label={t('knowledge.config.tocEnhance')}
|
||||
defaultValue={false}
|
||||
/>
|
||||
);
|
||||
}
|
||||
|
||||
/* ============================================================================
|
||||
* 第二部分:RAPTOR策略 (RAPTOR Strategy)
|
||||
* ============================================================================ */
|
||||
|
||||
// RAPTOR策略开关
|
||||
export function UseRaptorItem() {
|
||||
const { t } = useTranslation();
|
||||
@@ -221,7 +378,7 @@ export function RaptorMaxTokenItem() {
|
||||
name="parser_config.raptor.max_token"
|
||||
label={t('knowledge.config.maxTokens')}
|
||||
min={64}
|
||||
max={512}
|
||||
max={2048}
|
||||
step={32}
|
||||
defaultValue={256}
|
||||
layout="horizontal"
|
||||
@@ -253,7 +410,7 @@ export function RaptorMaxClusterItem() {
|
||||
name="parser_config.raptor.max_cluster"
|
||||
label={t('knowledge.config.maxClusterCount')}
|
||||
min={16}
|
||||
max={128}
|
||||
max={1024}
|
||||
step={16}
|
||||
defaultValue={64}
|
||||
layout="horizontal"
|
||||
@@ -274,6 +431,10 @@ export function RaptorRandomSeedItem() {
|
||||
);
|
||||
}
|
||||
|
||||
/* ============================================================================
|
||||
* 第三部分:知识图谱 (Knowledge Graph)
|
||||
* ============================================================================ */
|
||||
|
||||
// 知识图谱开关
|
||||
export function UseGraphragItem() {
|
||||
const { t } = useTranslation();
|
||||
@@ -345,108 +506,44 @@ export function CommunityReportItem() {
|
||||
);
|
||||
}
|
||||
|
||||
export function EmbeddingModelItem() {
|
||||
const { control } = useFormContext();
|
||||
const { t } = useTranslation();
|
||||
const { options } = useEmbeddingModelOptions();
|
||||
/* ============================================================================
|
||||
* 组合配置组件 (Composite Configuration Components)
|
||||
* ============================================================================ */
|
||||
|
||||
// RAPTOR策略配置项组合
|
||||
export function RaptorConfigItems() {
|
||||
return (
|
||||
<Box>
|
||||
<Typography variant="subtitle1" sx={{ minWidth: 120 }}>
|
||||
{t('knowledge.config.embeddingModel')}
|
||||
</Typography>
|
||||
<Box sx={{ flex: 1 }}>
|
||||
<Controller
|
||||
name="embd_id"
|
||||
control={control}
|
||||
render={({ field }) => (
|
||||
<FormControl fullWidth variant="outlined">
|
||||
<Select
|
||||
{...field}
|
||||
>
|
||||
{options.map((group) => [
|
||||
<ListSubheader key={group.label}>{group.label}</ListSubheader>,
|
||||
...group.options.map((option) => (
|
||||
<MenuItem key={option.value} value={option.value} disabled={option.disabled}>
|
||||
<Box sx={{ display: 'flex', alignItems: 'center', gap: 1 }}>
|
||||
<LlmSvgIcon
|
||||
name={getFactoryIconName(group.label as LLMFactory)}
|
||||
sx={{ width: 20, height: 20, color: 'primary.main' }}
|
||||
/>
|
||||
{option.label}
|
||||
</Box>
|
||||
</MenuItem>
|
||||
))
|
||||
])}
|
||||
</Select>
|
||||
</FormControl>
|
||||
)}
|
||||
/>
|
||||
</Box>
|
||||
<Box sx={{ display: 'flex', flexDirection: 'column', gap: 3 }}>
|
||||
{/* 使用召回增强RAPTOR策略 */}
|
||||
<UseRaptorItem />
|
||||
{/* 提示词 */}
|
||||
<RaptorPromptItem />
|
||||
{/* 最大token数 */}
|
||||
<RaptorMaxTokenItem />
|
||||
{/* 阈值 */}
|
||||
<RaptorThresholdItem />
|
||||
{/* 最大聚类数 */}
|
||||
<RaptorMaxClusterItem />
|
||||
{/* 随机种子 */}
|
||||
<RaptorRandomSeedItem />
|
||||
</Box>
|
||||
);
|
||||
}
|
||||
|
||||
// PDF解析器配置
|
||||
export function LayoutRecognizeItem() {
|
||||
const { control, setValue, formState } = useFormContext();
|
||||
const { t } = useTranslation();
|
||||
const { getOptionsByModelType } = useLlmOptionsByModelType();
|
||||
|
||||
const options = useMemo(() => {
|
||||
// 基础选项
|
||||
const basicOptions = [
|
||||
{ value: 'DeepDOC', label: 'DeepDOC' },
|
||||
{ value: 'Plain Text', label: t('knowledge.config.plainText') }
|
||||
];
|
||||
|
||||
// 获取图像转文本模型选项
|
||||
const image2TextOptions = getOptionsByModelType(LLM_MODEL_TYPES.Image2text);
|
||||
|
||||
// 将图像转文本模型选项转换为SelectOption格式
|
||||
const image2TextSelectOptions = image2TextOptions.flatMap(group =>
|
||||
group.options.map(option => ({
|
||||
value: option.value,
|
||||
label: `${option.label} (${t('knowledge.config.experimental')})`
|
||||
}))
|
||||
);
|
||||
|
||||
return [...basicOptions, ...image2TextSelectOptions];
|
||||
}, [getOptionsByModelType, t]);
|
||||
|
||||
// 知识图谱配置项组合
|
||||
export function KnowledgeGraphConfigItems() {
|
||||
return (
|
||||
<Controller
|
||||
name="parser_config.layout_recognize"
|
||||
control={control}
|
||||
render={({ field }) => {
|
||||
// 设置默认值
|
||||
if (typeof field.value === 'undefined') {
|
||||
const defaultValue = formState.defaultValues?.parser_config?.layout_recognize ?? 'DeepDOC';
|
||||
setValue('parser_config.layout_recognize', defaultValue);
|
||||
}
|
||||
|
||||
return (
|
||||
<SelectFormField
|
||||
name="parser_config.layout_recognize"
|
||||
label={t('knowledge.config.pdfParser')}
|
||||
options={options}
|
||||
defaultValue="DeepDOC"
|
||||
/>
|
||||
);
|
||||
}}
|
||||
/>
|
||||
<Box sx={{ display: 'flex', flexDirection: 'column', gap: 3 }}>
|
||||
{/* 提取知识图谱 */}
|
||||
<UseGraphragItem />
|
||||
{/* 实体类型 */}
|
||||
<EntityTypesItem />
|
||||
{/* 方法 */}
|
||||
<GraphragMethodItem />
|
||||
{/* 实体归一化 */}
|
||||
<EntityNormalizeItem />
|
||||
{/* 社区报告生成 */}
|
||||
<CommunityReportItem />
|
||||
</Box>
|
||||
);
|
||||
}
|
||||
|
||||
// 文本分段标识符配置
|
||||
export function DelimiterItem() {
|
||||
const { t } = useTranslation();
|
||||
return (
|
||||
<TextFormField
|
||||
name="parser_config.delimiter"
|
||||
label={t('knowledge.config.delimiter')}
|
||||
placeholder={t('knowledge.config.enterDelimiter')}
|
||||
defaultValue="\n!?。;!?"
|
||||
/>
|
||||
);
|
||||
}
|
||||
@@ -5,10 +5,7 @@ interface ConfigurationFormContainerProps extends PropsWithChildren {
|
||||
className?: string;
|
||||
}
|
||||
|
||||
export function ConfigurationFormContainer({
|
||||
children,
|
||||
className,
|
||||
}: ConfigurationFormContainerProps) {
|
||||
export function ConfigurationFormContainer({ children, className }: ConfigurationFormContainerProps) {
|
||||
return (
|
||||
<Paper
|
||||
elevation={0}
|
||||
|
||||
@@ -1,16 +1,53 @@
|
||||
import React from 'react';
|
||||
import { Box, Typography, Accordion, AccordionSummary, AccordionDetails } from '@mui/material';
|
||||
import { ExpandMore as ExpandMoreIcon } from '@mui/icons-material';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import { ConfigurationFormContainer } from './configuration-form-container';
|
||||
import { ChunkMethodItem, EmbeddingModelItem, PageRankItem, AutoKeywordsItem, AutoQuestionsItem, TagsItem } from './common-items';
|
||||
import {
|
||||
ChunkMethodItem,
|
||||
RaptorConfigItems,
|
||||
KnowledgeGraphConfigItems
|
||||
} from './common-items';
|
||||
|
||||
export function EmailConfiguration() {
|
||||
const { t } = useTranslation();
|
||||
|
||||
return (
|
||||
<ConfigurationFormContainer>
|
||||
<ChunkMethodItem />
|
||||
<EmbeddingModelItem />
|
||||
<PageRankItem />
|
||||
<AutoKeywordsItem />
|
||||
<AutoQuestionsItem />
|
||||
<TagsItem />
|
||||
<Box sx={{ display: 'flex', flexDirection: 'column', gap: 3 }}>
|
||||
{/* 第一部分:基础配置 */}
|
||||
<Accordion defaultExpanded>
|
||||
<AccordionSummary expandIcon={<ExpandMoreIcon />}>
|
||||
<Typography variant="h6">{t('knowledge.config.basicConfig')}</Typography>
|
||||
</AccordionSummary>
|
||||
<AccordionDetails>
|
||||
<Box sx={{ display: 'flex', flexDirection: 'column', gap: 3 }}>
|
||||
{/* 分块方法 */}
|
||||
<ChunkMethodItem />
|
||||
</Box>
|
||||
</AccordionDetails>
|
||||
</Accordion>
|
||||
|
||||
{/* 第二部分:RAPTOR策略 */}
|
||||
<Accordion>
|
||||
<AccordionSummary expandIcon={<ExpandMoreIcon />}>
|
||||
<Typography variant="h6">{t('knowledge.config.raptorStrategy')}</Typography>
|
||||
</AccordionSummary>
|
||||
<AccordionDetails>
|
||||
<RaptorConfigItems />
|
||||
</AccordionDetails>
|
||||
</Accordion>
|
||||
|
||||
{/* 第三部分:Knowledge Graph 知识图谱 */}
|
||||
<Accordion>
|
||||
<AccordionSummary expandIcon={<ExpandMoreIcon />}>
|
||||
<Typography variant="h6">{t('knowledge.config.knowledgeGraph')}</Typography>
|
||||
</AccordionSummary>
|
||||
<AccordionDetails>
|
||||
<KnowledgeGraphConfigItems />
|
||||
</AccordionDetails>
|
||||
</Accordion>
|
||||
</Box>
|
||||
</ConfigurationFormContainer>
|
||||
);
|
||||
}
|
||||
@@ -1,11 +1,11 @@
|
||||
// 配置组件统一导出
|
||||
export { NaiveConfiguration } from './naive';
|
||||
export { QAConfiguration } from './qa';
|
||||
export { PaperConfiguration } from './paper';
|
||||
export { ChunkMethodItem, EmbeddingModelItem } from './common-items';
|
||||
export { ConfigurationFormContainer, MainContainer } from './configuration-form-container';
|
||||
|
||||
// 所有解析器配置组件
|
||||
export { NaiveConfiguration } from './naive';
|
||||
export { QAConfiguration } from './qa';
|
||||
export { PaperConfiguration } from './paper';
|
||||
export { AudioConfiguration } from './audio';
|
||||
export { BookConfiguration } from './book';
|
||||
export { EmailConfiguration } from './email';
|
||||
|
||||
@@ -1,39 +1,108 @@
|
||||
import React from 'react';
|
||||
import {
|
||||
Box,
|
||||
Typography,
|
||||
Accordion,
|
||||
AccordionSummary,
|
||||
AccordionDetails,
|
||||
Divider,
|
||||
} from '@mui/material';
|
||||
import { ExpandMore as ExpandMoreIcon } from '@mui/icons-material';
|
||||
import { useFormContext } from 'react-hook-form';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import { ChunkMethodItem, EmbeddingModelItem } from './common-items';
|
||||
import { Box, Typography } from '@mui/material';
|
||||
import { ConfigurationFormContainer, MainContainer } from './configuration-form-container';
|
||||
import {
|
||||
ChunkMethodItem,
|
||||
EmbeddingModelItem,
|
||||
AutoKeywordsItem,
|
||||
AutoQuestionsItem,
|
||||
UseRaptorItem,
|
||||
RaptorPromptItem,
|
||||
RaptorMaxTokenItem,
|
||||
RaptorThresholdItem,
|
||||
RaptorMaxClusterItem,
|
||||
RaptorRandomSeedItem,
|
||||
UseGraphragItem,
|
||||
EntityTypesItem,
|
||||
GraphragMethodItem,
|
||||
EntityNormalizeItem,
|
||||
CommunityReportItem,
|
||||
} from './common-items';
|
||||
|
||||
export function KnowledgeGraphConfiguration() {
|
||||
const { formState: { errors } } = useFormContext();
|
||||
const { t } = useTranslation();
|
||||
|
||||
|
||||
return (
|
||||
<>
|
||||
<ChunkMethodItem />
|
||||
<EmbeddingModelItem />
|
||||
<ConfigurationFormContainer>
|
||||
<MainContainer>
|
||||
{/* 第一部分:basicConfig 基础配置 */}
|
||||
<Accordion defaultExpanded>
|
||||
<AccordionSummary expandIcon={<ExpandMoreIcon />}>
|
||||
<Typography variant="h6">{t('knowledge.config.basicConfig')}</Typography>
|
||||
</AccordionSummary>
|
||||
<AccordionDetails>
|
||||
{/* 切片方法 */}
|
||||
<Box sx={{ mb: 3 }}>
|
||||
<ChunkMethodItem />
|
||||
</Box>
|
||||
<Divider />
|
||||
|
||||
<Box sx={{ mb: 2 }}>
|
||||
<Typography variant="body2" color="text.secondary">
|
||||
{t('knowledge.config.pageRankConfigTodo')}
|
||||
</Typography>
|
||||
</Box>
|
||||
<Box sx={{ display: 'flex', flexDirection: 'column', gap: 3, mt: 3 }}>
|
||||
{/* 嵌入模型 */}
|
||||
<EmbeddingModelItem />
|
||||
{/* 自动关键词提取 */}
|
||||
<AutoKeywordsItem />
|
||||
{/* 自动问题提取 */}
|
||||
<AutoQuestionsItem />
|
||||
</Box>
|
||||
</AccordionDetails>
|
||||
</Accordion>
|
||||
|
||||
<Box sx={{ mb: 2 }}>
|
||||
<Typography variant="body2" color="text.secondary">
|
||||
{t('knowledge.config.entityTypeConfigTodo')}
|
||||
</Typography>
|
||||
</Box>
|
||||
{/* 第二部分:RAPTOR策略 */}
|
||||
<Accordion>
|
||||
<AccordionSummary expandIcon={<ExpandMoreIcon />}>
|
||||
<Typography variant="h6">{t('knowledge.config.raptorStrategy')}</Typography>
|
||||
</AccordionSummary>
|
||||
<AccordionDetails>
|
||||
<Box sx={{ display: 'flex', flexDirection: 'column', gap: 3 }}>
|
||||
{/* 使用召回增强RAPTOR策略 */}
|
||||
<UseRaptorItem />
|
||||
{/* 提示词 */}
|
||||
<RaptorPromptItem />
|
||||
{/* 最大token数 */}
|
||||
<RaptorMaxTokenItem />
|
||||
{/* 阈值 */}
|
||||
<RaptorThresholdItem />
|
||||
{/* 最大聚类数 */}
|
||||
<RaptorMaxClusterItem />
|
||||
{/* 随机种子 */}
|
||||
<RaptorRandomSeedItem />
|
||||
</Box>
|
||||
</AccordionDetails>
|
||||
</Accordion>
|
||||
|
||||
<Box sx={{ mb: 2 }}>
|
||||
<Typography variant="body2" color="text.secondary">
|
||||
{t('knowledge.config.maxTokenConfigTodo')}
|
||||
</Typography>
|
||||
</Box>
|
||||
|
||||
<Box sx={{ mb: 2 }}>
|
||||
<Typography variant="body2" color="text.secondary">
|
||||
{t('knowledge.config.delimiterConfigTodo')}
|
||||
</Typography>
|
||||
</Box>
|
||||
</>
|
||||
{/* 第三部分:Knowledge Graph 知识图谱 */}
|
||||
<Accordion>
|
||||
<AccordionSummary expandIcon={<ExpandMoreIcon />}>
|
||||
<Typography variant="h6">{t('knowledge.config.knowledgeGraph')}</Typography>
|
||||
</AccordionSummary>
|
||||
<AccordionDetails>
|
||||
<Box sx={{ display: 'flex', flexDirection: 'column', gap: 3 }}>
|
||||
{/* 提取知识图谱 */}
|
||||
<UseGraphragItem />
|
||||
{/* 实体类型 */}
|
||||
<EntityTypesItem />
|
||||
{/* 方法 */}
|
||||
<GraphragMethodItem />
|
||||
{/* 实体归一化 */}
|
||||
<EntityNormalizeItem />
|
||||
{/* 社区报告生成 */}
|
||||
<CommunityReportItem />
|
||||
</Box>
|
||||
</AccordionDetails>
|
||||
</Accordion>
|
||||
</MainContainer>
|
||||
</ConfigurationFormContainer>
|
||||
);
|
||||
}
|
||||
@@ -1,16 +1,53 @@
|
||||
import React from 'react';
|
||||
import { Box, Typography, Accordion, AccordionSummary, AccordionDetails } from '@mui/material';
|
||||
import { ExpandMore as ExpandMoreIcon } from '@mui/icons-material';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import { ConfigurationFormContainer } from './configuration-form-container';
|
||||
import { ChunkMethodItem, EmbeddingModelItem, PageRankItem, AutoKeywordsItem, AutoQuestionsItem, TagsItem } from './common-items';
|
||||
import {
|
||||
ChunkMethodItem,
|
||||
RaptorConfigItems,
|
||||
KnowledgeGraphConfigItems
|
||||
} from './common-items';
|
||||
|
||||
export function LawsConfiguration() {
|
||||
const { t } = useTranslation();
|
||||
|
||||
return (
|
||||
<ConfigurationFormContainer>
|
||||
<ChunkMethodItem />
|
||||
<EmbeddingModelItem />
|
||||
<PageRankItem />
|
||||
<AutoKeywordsItem />
|
||||
<AutoQuestionsItem />
|
||||
<TagsItem />
|
||||
<Box sx={{ display: 'flex', flexDirection: 'column', gap: 3 }}>
|
||||
{/* 第一部分:基础配置 */}
|
||||
<Accordion defaultExpanded>
|
||||
<AccordionSummary expandIcon={<ExpandMoreIcon />}>
|
||||
<Typography variant="h6">{t('knowledge.config.basicConfig')}</Typography>
|
||||
</AccordionSummary>
|
||||
<AccordionDetails>
|
||||
<Box sx={{ display: 'flex', flexDirection: 'column', gap: 3 }}>
|
||||
{/* 分块方法 */}
|
||||
<ChunkMethodItem />
|
||||
</Box>
|
||||
</AccordionDetails>
|
||||
</Accordion>
|
||||
|
||||
{/* 第二部分:RAPTOR策略 */}
|
||||
<Accordion>
|
||||
<AccordionSummary expandIcon={<ExpandMoreIcon />}>
|
||||
<Typography variant="h6">{t('knowledge.config.raptorStrategy')}</Typography>
|
||||
</AccordionSummary>
|
||||
<AccordionDetails>
|
||||
<RaptorConfigItems />
|
||||
</AccordionDetails>
|
||||
</Accordion>
|
||||
|
||||
{/* 第三部分:Knowledge Graph 知识图谱 */}
|
||||
<Accordion>
|
||||
<AccordionSummary expandIcon={<ExpandMoreIcon />}>
|
||||
<Typography variant="h6">{t('knowledge.config.knowledgeGraph')}</Typography>
|
||||
</AccordionSummary>
|
||||
<AccordionDetails>
|
||||
<KnowledgeGraphConfigItems />
|
||||
</AccordionDetails>
|
||||
</Accordion>
|
||||
</Box>
|
||||
</ConfigurationFormContainer>
|
||||
);
|
||||
}
|
||||
@@ -1,12 +1,21 @@
|
||||
import React from 'react';
|
||||
import {
|
||||
Box,
|
||||
Typography,
|
||||
Accordion,
|
||||
AccordionSummary,
|
||||
AccordionDetails,
|
||||
Divider,
|
||||
} from '@mui/material';
|
||||
import { ExpandMore as ExpandMoreIcon } from '@mui/icons-material';
|
||||
import { useFormContext } from 'react-hook-form';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import { ConfigurationFormContainer, MainContainer } from './configuration-form-container';
|
||||
import {
|
||||
ChunkMethodItem,
|
||||
EmbeddingModelItem,
|
||||
ChunkTokenNumberItem,
|
||||
DelimiterItem,
|
||||
LayoutRecognizeItem,
|
||||
PageRankItem,
|
||||
AutoKeywordsItem,
|
||||
AutoQuestionsItem,
|
||||
HtmlForExcelItem,
|
||||
@@ -21,47 +30,60 @@ import {
|
||||
GraphragMethodItem,
|
||||
EntityNormalizeItem,
|
||||
CommunityReportItem,
|
||||
TagsItem
|
||||
RaptorConfigItems,
|
||||
KnowledgeGraphConfigItems,
|
||||
} from './common-items';
|
||||
|
||||
export function ManualConfiguration() {
|
||||
const { formState: { errors } } = useFormContext();
|
||||
const { t } = useTranslation();
|
||||
|
||||
return (
|
||||
<MainContainer>
|
||||
<ConfigurationFormContainer>
|
||||
<ChunkMethodItem />
|
||||
<ChunkTokenNumberItem />
|
||||
<DelimiterItem />
|
||||
<LayoutRecognizeItem />
|
||||
<EmbeddingModelItem />
|
||||
</ConfigurationFormContainer>
|
||||
<ConfigurationFormContainer>
|
||||
<MainContainer>
|
||||
{/* 第一部分:basicConfig 基础配置 */}
|
||||
<Accordion defaultExpanded>
|
||||
<AccordionSummary expandIcon={<ExpandMoreIcon />}>
|
||||
<Typography variant="h6">{t('knowledge.config.basicConfig')}</Typography>
|
||||
</AccordionSummary>
|
||||
<AccordionDetails>
|
||||
{/* 切片方法 */}
|
||||
<Box sx={{ mb: 3 }}>
|
||||
<ChunkMethodItem />
|
||||
</Box>
|
||||
<Divider />
|
||||
|
||||
<ConfigurationFormContainer>
|
||||
<PageRankItem />
|
||||
<AutoKeywordsItem />
|
||||
<AutoQuestionsItem />
|
||||
<HtmlForExcelItem />
|
||||
</ConfigurationFormContainer>
|
||||
<Box sx={{ display: 'flex', flexDirection: 'column', gap: 3, mt: 3 }}>
|
||||
{/* 版面识别 */}
|
||||
<LayoutRecognizeItem />
|
||||
{/* 自动关键词提取 */}
|
||||
<AutoKeywordsItem />
|
||||
{/* 自动问题提取 */}
|
||||
<AutoQuestionsItem />
|
||||
</Box>
|
||||
</AccordionDetails>
|
||||
</Accordion>
|
||||
|
||||
<ConfigurationFormContainer>
|
||||
<UseRaptorItem />
|
||||
<RaptorPromptItem />
|
||||
<RaptorMaxTokenItem />
|
||||
<RaptorThresholdItem />
|
||||
<RaptorMaxClusterItem />
|
||||
<RaptorRandomSeedItem />
|
||||
</ConfigurationFormContainer>
|
||||
{/* 第二部分:RAPTOR策略 */}
|
||||
<Accordion>
|
||||
<AccordionSummary expandIcon={<ExpandMoreIcon />}>
|
||||
<Typography variant="h6">{t('knowledge.config.raptorStrategy')}</Typography>
|
||||
</AccordionSummary>
|
||||
<AccordionDetails>
|
||||
<RaptorConfigItems />
|
||||
</AccordionDetails>
|
||||
</Accordion>
|
||||
|
||||
<ConfigurationFormContainer>
|
||||
<UseGraphragItem />
|
||||
<EntityTypesItem />
|
||||
<GraphragMethodItem />
|
||||
<EntityNormalizeItem />
|
||||
<CommunityReportItem />
|
||||
</ConfigurationFormContainer>
|
||||
|
||||
<ConfigurationFormContainer>
|
||||
<TagsItem />
|
||||
</ConfigurationFormContainer>
|
||||
</MainContainer>
|
||||
{/* 第三部分:Knowledge Graph 知识图谱 */}
|
||||
<Accordion>
|
||||
<AccordionSummary expandIcon={<ExpandMoreIcon />}>
|
||||
<Typography variant="h6">{t('knowledge.config.knowledgeGraph')}</Typography>
|
||||
</AccordionSummary>
|
||||
<AccordionDetails>
|
||||
<KnowledgeGraphConfigItems />
|
||||
</AccordionDetails>
|
||||
</Accordion>
|
||||
</MainContainer>
|
||||
</ConfigurationFormContainer>
|
||||
);
|
||||
}
|
||||
@@ -5,6 +5,7 @@ import {
|
||||
Accordion,
|
||||
AccordionSummary,
|
||||
AccordionDetails,
|
||||
Divider,
|
||||
} from '@mui/material';
|
||||
import { ExpandMore as ExpandMoreIcon } from '@mui/icons-material';
|
||||
import { useFormContext } from 'react-hook-form';
|
||||
@@ -12,26 +13,15 @@ import { useTranslation } from 'react-i18next';
|
||||
import { ConfigurationFormContainer, MainContainer } from './configuration-form-container';
|
||||
import {
|
||||
ChunkMethodItem,
|
||||
EmbeddingModelItem,
|
||||
ChunkTokenNumberItem,
|
||||
PageRankItem,
|
||||
AutoKeywordsItem,
|
||||
AutoQuestionsItem,
|
||||
HtmlForExcelItem,
|
||||
TagsItem,
|
||||
UseRaptorItem,
|
||||
RaptorPromptItem,
|
||||
RaptorMaxTokenItem,
|
||||
RaptorThresholdItem,
|
||||
RaptorMaxClusterItem,
|
||||
RaptorRandomSeedItem,
|
||||
UseGraphragItem,
|
||||
EntityTypesItem,
|
||||
GraphragMethodItem,
|
||||
EntityNormalizeItem,
|
||||
CommunityReportItem,
|
||||
LayoutRecognizeItem,
|
||||
DelimiterItem
|
||||
DelimiterItem,
|
||||
TOCEnhanceItem,
|
||||
RaptorConfigItems,
|
||||
KnowledgeGraphConfigItems
|
||||
} from './common-items';
|
||||
|
||||
export function NaiveConfiguration() {
|
||||
@@ -41,105 +31,58 @@ export function NaiveConfiguration() {
|
||||
return (
|
||||
<ConfigurationFormContainer>
|
||||
<MainContainer>
|
||||
{/* 第一部分:基础配置 */}
|
||||
{/* 第一部分:basicConfig 基础配置 */}
|
||||
<Accordion defaultExpanded>
|
||||
<AccordionSummary expandIcon={<ExpandMoreIcon />}>
|
||||
<Typography variant="h6">{t('knowledge.config.basicConfig')}</Typography>
|
||||
</AccordionSummary>
|
||||
<AccordionDetails>
|
||||
<Box sx={{ display: 'flex', flexDirection: 'column', gap: 3 }}>
|
||||
{/* 切片方法 */}
|
||||
{/* 切片方法 */}
|
||||
<Box sx={{ mb: 3 }}>
|
||||
<ChunkMethodItem />
|
||||
</Box>
|
||||
<Divider />
|
||||
|
||||
<Box sx={{ display: 'flex', flexDirection: 'column', gap: 3, mt: 3 }}>
|
||||
{/* PDF解析器 */}
|
||||
<LayoutRecognizeItem />
|
||||
|
||||
{/* 嵌入模型 */}
|
||||
<EmbeddingModelItem />
|
||||
|
||||
{/* 建议文本块大小 */}
|
||||
<ChunkTokenNumberItem />
|
||||
|
||||
{/* 文本分段标识符 */}
|
||||
<DelimiterItem />
|
||||
</Box>
|
||||
</AccordionDetails>
|
||||
</Accordion>
|
||||
|
||||
{/* 第二部分:页面排名和自动提取 */}
|
||||
<Accordion defaultExpanded>
|
||||
<AccordionSummary expandIcon={<ExpandMoreIcon />}>
|
||||
<Typography variant="h6">{t('knowledge.config.pageRankAndAutoExtract')}</Typography>
|
||||
</AccordionSummary>
|
||||
<AccordionDetails>
|
||||
<Box sx={{ display: 'flex', flexDirection: 'column', gap: 3 }}>
|
||||
{/* 页面排名 */}
|
||||
<PageRankItem />
|
||||
|
||||
{/* 目录增强 */}
|
||||
<TOCEnhanceItem />
|
||||
{/* 自动关键词提取 */}
|
||||
<AutoKeywordsItem />
|
||||
|
||||
{/* 自动问题提取 */}
|
||||
<AutoQuestionsItem />
|
||||
|
||||
{/* 表格转HTML */}
|
||||
<HtmlForExcelItem />
|
||||
|
||||
{/* 标签集 */}
|
||||
<TagsItem />
|
||||
</Box>
|
||||
</AccordionDetails>
|
||||
</Accordion>
|
||||
|
||||
{/* 第三部分:RAPTOR策略 */}
|
||||
{/* 第二部分:RAPTOR策略 */}
|
||||
<Accordion>
|
||||
<AccordionSummary expandIcon={<ExpandMoreIcon />}>
|
||||
<Typography variant="h6">{t('knowledge.config.raptorStrategy')}</Typography>
|
||||
</AccordionSummary>
|
||||
<AccordionDetails>
|
||||
<Box sx={{ display: 'flex', flexDirection: 'column', gap: 3 }}>
|
||||
{/* 使用召回增强RAPTOR策略 */}
|
||||
<UseRaptorItem />
|
||||
|
||||
{/* 提示词 */}
|
||||
<RaptorPromptItem />
|
||||
|
||||
{/* 最大token数 */}
|
||||
<RaptorMaxTokenItem />
|
||||
|
||||
{/* 阈值 */}
|
||||
<RaptorThresholdItem />
|
||||
|
||||
{/* 最大聚类数 */}
|
||||
<RaptorMaxClusterItem />
|
||||
|
||||
{/* 随机种子 */}
|
||||
<RaptorRandomSeedItem />
|
||||
<RaptorConfigItems />
|
||||
</Box>
|
||||
</AccordionDetails>
|
||||
</Accordion>
|
||||
|
||||
{/* 第四部分:知识图谱 */}
|
||||
{/* 第三部分:Knowledge Graph 知识图谱 */}
|
||||
<Accordion>
|
||||
<AccordionSummary expandIcon={<ExpandMoreIcon />}>
|
||||
<Typography variant="h6">{t('knowledge.config.knowledgeGraph')}</Typography>
|
||||
</AccordionSummary>
|
||||
<AccordionDetails>
|
||||
<Box sx={{ display: 'flex', flexDirection: 'column', gap: 3 }}>
|
||||
{/* 提取知识图谱 */}
|
||||
<UseGraphragItem />
|
||||
|
||||
{/* 实体类型 */}
|
||||
<EntityTypesItem />
|
||||
|
||||
{/* 方法 */}
|
||||
<GraphragMethodItem />
|
||||
|
||||
{/* 实体归一化 */}
|
||||
<EntityNormalizeItem />
|
||||
|
||||
{/* 社区报告生成 */}
|
||||
<CommunityReportItem />
|
||||
<KnowledgeGraphConfigItems />
|
||||
</Box>
|
||||
</AccordionDetails>
|
||||
</Accordion>
|
||||
|
||||
@@ -1,67 +1,78 @@
|
||||
import React from 'react';
|
||||
import {
|
||||
Box,
|
||||
Typography,
|
||||
Accordion,
|
||||
AccordionSummary,
|
||||
AccordionDetails,
|
||||
Divider,
|
||||
} from '@mui/material';
|
||||
import { ExpandMore as ExpandMoreIcon } from '@mui/icons-material';
|
||||
import { useFormContext } from 'react-hook-form';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import { ConfigurationFormContainer, MainContainer } from './configuration-form-container';
|
||||
import {
|
||||
ChunkMethodItem,
|
||||
EmbeddingModelItem,
|
||||
ChunkTokenNumberItem,
|
||||
DelimiterItem,
|
||||
LayoutRecognizeItem,
|
||||
PageRankItem,
|
||||
AutoKeywordsItem,
|
||||
AutoQuestionsItem,
|
||||
HtmlForExcelItem,
|
||||
UseRaptorItem,
|
||||
RaptorPromptItem,
|
||||
RaptorMaxTokenItem,
|
||||
RaptorThresholdItem,
|
||||
RaptorMaxClusterItem,
|
||||
RaptorRandomSeedItem,
|
||||
UseGraphragItem,
|
||||
EntityTypesItem,
|
||||
GraphragMethodItem,
|
||||
EntityNormalizeItem,
|
||||
CommunityReportItem,
|
||||
TagsItem
|
||||
RaptorConfigItems,
|
||||
KnowledgeGraphConfigItems,
|
||||
} from './common-items';
|
||||
|
||||
export function OneConfiguration() {
|
||||
const { formState: { errors } } = useFormContext();
|
||||
const { t } = useTranslation();
|
||||
|
||||
return (
|
||||
<MainContainer>
|
||||
<ConfigurationFormContainer>
|
||||
<ChunkMethodItem />
|
||||
<ChunkTokenNumberItem />
|
||||
<DelimiterItem />
|
||||
<LayoutRecognizeItem />
|
||||
<EmbeddingModelItem />
|
||||
</ConfigurationFormContainer>
|
||||
<ConfigurationFormContainer>
|
||||
<MainContainer>
|
||||
{/* 第一部分:basicConfig 基础配置 */}
|
||||
<Accordion defaultExpanded>
|
||||
<AccordionSummary expandIcon={<ExpandMoreIcon />}>
|
||||
<Typography variant="h6">{t('knowledge.config.basicConfig')}</Typography>
|
||||
</AccordionSummary>
|
||||
<AccordionDetails>
|
||||
{/* 切片方法 */}
|
||||
<Box sx={{ mb: 3 }}>
|
||||
<ChunkMethodItem />
|
||||
</Box>
|
||||
<Divider />
|
||||
|
||||
<ConfigurationFormContainer>
|
||||
<PageRankItem />
|
||||
<AutoKeywordsItem />
|
||||
<AutoQuestionsItem />
|
||||
<HtmlForExcelItem />
|
||||
</ConfigurationFormContainer>
|
||||
<Box sx={{ display: 'flex', flexDirection: 'column', gap: 3, mt: 3 }}>
|
||||
{/* 版面识别 */}
|
||||
<LayoutRecognizeItem />
|
||||
{/* 自动关键词提取 */}
|
||||
<AutoKeywordsItem />
|
||||
{/* 自动问题提取 */}
|
||||
<AutoQuestionsItem />
|
||||
</Box>
|
||||
</AccordionDetails>
|
||||
</Accordion>
|
||||
|
||||
<ConfigurationFormContainer>
|
||||
<UseRaptorItem />
|
||||
<RaptorPromptItem />
|
||||
<RaptorMaxTokenItem />
|
||||
<RaptorThresholdItem />
|
||||
<RaptorMaxClusterItem />
|
||||
<RaptorRandomSeedItem />
|
||||
</ConfigurationFormContainer>
|
||||
{/* 第二部分:RAPTOR策略 */}
|
||||
<Accordion>
|
||||
<AccordionSummary expandIcon={<ExpandMoreIcon />}>
|
||||
<Typography variant="h6">{t('knowledge.config.raptorStrategy')}</Typography>
|
||||
</AccordionSummary>
|
||||
<AccordionDetails>
|
||||
<RaptorConfigItems />
|
||||
</AccordionDetails>
|
||||
</Accordion>
|
||||
|
||||
<ConfigurationFormContainer>
|
||||
<UseGraphragItem />
|
||||
<EntityTypesItem />
|
||||
<GraphragMethodItem />
|
||||
<EntityNormalizeItem />
|
||||
<CommunityReportItem />
|
||||
</ConfigurationFormContainer>
|
||||
|
||||
<ConfigurationFormContainer>
|
||||
<TagsItem />
|
||||
</ConfigurationFormContainer>
|
||||
</MainContainer>
|
||||
{/* 第三部分:Knowledge Graph 知识图谱 */}
|
||||
<Accordion>
|
||||
<AccordionSummary expandIcon={<ExpandMoreIcon />}>
|
||||
<Typography variant="h6">{t('knowledge.config.knowledgeGraph')}</Typography>
|
||||
</AccordionSummary>
|
||||
<AccordionDetails>
|
||||
<KnowledgeGraphConfigItems />
|
||||
</AccordionDetails>
|
||||
</Accordion>
|
||||
</MainContainer>
|
||||
</ConfigurationFormContainer>
|
||||
);
|
||||
}
|
||||
@@ -1,61 +1,75 @@
|
||||
import React from 'react';
|
||||
import {
|
||||
Box,
|
||||
Typography,
|
||||
Accordion,
|
||||
AccordionSummary,
|
||||
AccordionDetails,
|
||||
Divider,
|
||||
} from '@mui/material';
|
||||
import { ExpandMore as ExpandMoreIcon } from '@mui/icons-material';
|
||||
import { useFormContext } from 'react-hook-form';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import { ConfigurationFormContainer, MainContainer } from './configuration-form-container';
|
||||
import {
|
||||
ChunkMethodItem,
|
||||
EmbeddingModelItem,
|
||||
LayoutRecognizeItem,
|
||||
PageRankItem,
|
||||
AutoKeywordsItem,
|
||||
AutoQuestionsItem,
|
||||
UseRaptorItem,
|
||||
RaptorPromptItem,
|
||||
RaptorMaxTokenItem,
|
||||
RaptorThresholdItem,
|
||||
RaptorMaxClusterItem,
|
||||
RaptorRandomSeedItem,
|
||||
UseGraphragItem,
|
||||
EntityTypesItem,
|
||||
GraphragMethodItem,
|
||||
EntityNormalizeItem,
|
||||
CommunityReportItem,
|
||||
TagsItem
|
||||
RaptorConfigItems,
|
||||
KnowledgeGraphConfigItems,
|
||||
} from './common-items';
|
||||
|
||||
export function PaperConfiguration() {
|
||||
const { formState: { errors } } = useFormContext();
|
||||
const { t } = useTranslation();
|
||||
|
||||
return (
|
||||
<MainContainer>
|
||||
<ConfigurationFormContainer>
|
||||
<ChunkMethodItem />
|
||||
<LayoutRecognizeItem />
|
||||
<EmbeddingModelItem />
|
||||
<PageRankItem />
|
||||
</ConfigurationFormContainer>
|
||||
<ConfigurationFormContainer>
|
||||
<MainContainer>
|
||||
{/* 第一部分:basicConfig 基础配置 */}
|
||||
<Accordion defaultExpanded>
|
||||
<AccordionSummary expandIcon={<ExpandMoreIcon />}>
|
||||
<Typography variant="h6">{t('knowledge.config.basicConfig')}</Typography>
|
||||
</AccordionSummary>
|
||||
<AccordionDetails>
|
||||
{/* 切片方法 */}
|
||||
<Box sx={{ mb: 3 }}>
|
||||
<ChunkMethodItem />
|
||||
</Box>
|
||||
<Divider />
|
||||
|
||||
<ConfigurationFormContainer>
|
||||
<AutoKeywordsItem />
|
||||
<AutoQuestionsItem />
|
||||
</ConfigurationFormContainer>
|
||||
<Box sx={{ display: 'flex', flexDirection: 'column', gap: 3, mt: 3 }}>
|
||||
{/* 版面识别 */}
|
||||
<LayoutRecognizeItem />
|
||||
{/* 自动关键词提取 */}
|
||||
<AutoKeywordsItem />
|
||||
{/* 自动问题提取 */}
|
||||
<AutoQuestionsItem />
|
||||
</Box>
|
||||
</AccordionDetails>
|
||||
</Accordion>
|
||||
|
||||
<ConfigurationFormContainer>
|
||||
<UseRaptorItem />
|
||||
<RaptorPromptItem />
|
||||
<RaptorMaxTokenItem />
|
||||
<RaptorThresholdItem />
|
||||
<RaptorMaxClusterItem />
|
||||
<RaptorRandomSeedItem />
|
||||
</ConfigurationFormContainer>
|
||||
{/* 第二部分:RAPTOR策略 */}
|
||||
<Accordion>
|
||||
<AccordionSummary expandIcon={<ExpandMoreIcon />}>
|
||||
<Typography variant="h6">{t('knowledge.config.raptorStrategy')}</Typography>
|
||||
</AccordionSummary>
|
||||
<AccordionDetails>
|
||||
<RaptorConfigItems />
|
||||
</AccordionDetails>
|
||||
</Accordion>
|
||||
|
||||
<ConfigurationFormContainer>
|
||||
<UseGraphragItem />
|
||||
<EntityTypesItem />
|
||||
<GraphragMethodItem />
|
||||
<EntityNormalizeItem />
|
||||
<CommunityReportItem />
|
||||
</ConfigurationFormContainer>
|
||||
|
||||
<ConfigurationFormContainer>
|
||||
<TagsItem />
|
||||
</ConfigurationFormContainer>
|
||||
</MainContainer>
|
||||
{/* 第三部分:Knowledge Graph 知识图谱 */}
|
||||
<Accordion>
|
||||
<AccordionSummary expandIcon={<ExpandMoreIcon />}>
|
||||
<Typography variant="h6">{t('knowledge.config.knowledgeGraph')}</Typography>
|
||||
</AccordionSummary>
|
||||
<AccordionDetails>
|
||||
<KnowledgeGraphConfigItems />
|
||||
</AccordionDetails>
|
||||
</Accordion>
|
||||
</MainContainer>
|
||||
</ConfigurationFormContainer>
|
||||
);
|
||||
}
|
||||
@@ -1,16 +1,53 @@
|
||||
import React from 'react';
|
||||
import { Box, Typography, Accordion, AccordionSummary, AccordionDetails } from '@mui/material';
|
||||
import { ExpandMore as ExpandMoreIcon } from '@mui/icons-material';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import { ConfigurationFormContainer } from './configuration-form-container';
|
||||
import { ChunkMethodItem, EmbeddingModelItem, PageRankItem, AutoKeywordsItem, AutoQuestionsItem, TagsItem } from './common-items';
|
||||
import {
|
||||
ChunkMethodItem,
|
||||
RaptorConfigItems,
|
||||
KnowledgeGraphConfigItems
|
||||
} from './common-items';
|
||||
|
||||
export function PictureConfiguration() {
|
||||
const { t } = useTranslation();
|
||||
|
||||
return (
|
||||
<ConfigurationFormContainer>
|
||||
<ChunkMethodItem />
|
||||
<EmbeddingModelItem />
|
||||
<PageRankItem />
|
||||
<AutoKeywordsItem />
|
||||
<AutoQuestionsItem />
|
||||
<TagsItem />
|
||||
<Box sx={{ display: 'flex', flexDirection: 'column', gap: 3 }}>
|
||||
{/* 第一部分:基础配置 */}
|
||||
<Accordion defaultExpanded>
|
||||
<AccordionSummary expandIcon={<ExpandMoreIcon />}>
|
||||
<Typography variant="h6">{t('knowledge.config.basicConfig')}</Typography>
|
||||
</AccordionSummary>
|
||||
<AccordionDetails>
|
||||
<Box sx={{ display: 'flex', flexDirection: 'column', gap: 3 }}>
|
||||
{/* 分块方法 */}
|
||||
<ChunkMethodItem />
|
||||
</Box>
|
||||
</AccordionDetails>
|
||||
</Accordion>
|
||||
|
||||
{/* 第二部分:RAPTOR策略 */}
|
||||
<Accordion>
|
||||
<AccordionSummary expandIcon={<ExpandMoreIcon />}>
|
||||
<Typography variant="h6">{t('knowledge.config.raptorStrategy')}</Typography>
|
||||
</AccordionSummary>
|
||||
<AccordionDetails>
|
||||
<RaptorConfigItems />
|
||||
</AccordionDetails>
|
||||
</Accordion>
|
||||
|
||||
{/* 第三部分:Knowledge Graph 知识图谱 */}
|
||||
<Accordion>
|
||||
<AccordionSummary expandIcon={<ExpandMoreIcon />}>
|
||||
<Typography variant="h6">{t('knowledge.config.knowledgeGraph')}</Typography>
|
||||
</AccordionSummary>
|
||||
<AccordionDetails>
|
||||
<KnowledgeGraphConfigItems />
|
||||
</AccordionDetails>
|
||||
</Accordion>
|
||||
</Box>
|
||||
</ConfigurationFormContainer>
|
||||
);
|
||||
}
|
||||
@@ -1,16 +1,66 @@
|
||||
import React from 'react';
|
||||
import { Box, Typography, Accordion, AccordionSummary, AccordionDetails, Divider } from '@mui/material';
|
||||
import { ExpandMore as ExpandMoreIcon } from '@mui/icons-material';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import { ConfigurationFormContainer } from './configuration-form-container';
|
||||
import { ChunkMethodItem, EmbeddingModelItem, PageRankItem, AutoKeywordsItem, AutoQuestionsItem, TagsItem } from './common-items';
|
||||
import {
|
||||
ChunkMethodItem,
|
||||
RaptorConfigItems,
|
||||
KnowledgeGraphConfigItems,
|
||||
LayoutRecognizeItem,
|
||||
AutoKeywordsItem,
|
||||
AutoQuestionsItem
|
||||
} from './common-items';
|
||||
|
||||
export function PresentationConfiguration() {
|
||||
const { t } = useTranslation();
|
||||
|
||||
return (
|
||||
<ConfigurationFormContainer>
|
||||
<ChunkMethodItem />
|
||||
<EmbeddingModelItem />
|
||||
<PageRankItem />
|
||||
<AutoKeywordsItem />
|
||||
<AutoQuestionsItem />
|
||||
<TagsItem />
|
||||
<Box sx={{ display: 'flex', flexDirection: 'column', gap: 3 }}>
|
||||
{/* 第一部分:基础配置 */}
|
||||
<Accordion defaultExpanded>
|
||||
<AccordionSummary expandIcon={<ExpandMoreIcon />}>
|
||||
<Typography variant="h6">{t('knowledge.config.basicConfig')}</Typography>
|
||||
</AccordionSummary>
|
||||
<AccordionDetails>
|
||||
{/* 切片方法 */}
|
||||
<Box sx={{ mb: 3 }}>
|
||||
<ChunkMethodItem />
|
||||
</Box>
|
||||
<Divider />
|
||||
|
||||
<Box sx={{ display: 'flex', flexDirection: 'column', gap: 3, mt: 3 }}>
|
||||
{/* 版面识别 */}
|
||||
<LayoutRecognizeItem />
|
||||
{/* 自动关键词提取 */}
|
||||
<AutoKeywordsItem />
|
||||
{/* 自动问题提取 */}
|
||||
<AutoQuestionsItem />
|
||||
</Box>
|
||||
</AccordionDetails>
|
||||
</Accordion>
|
||||
|
||||
{/* 第二部分:RAPTOR策略 */}
|
||||
<Accordion>
|
||||
<AccordionSummary expandIcon={<ExpandMoreIcon />}>
|
||||
<Typography variant="h6">{t('knowledge.config.raptorStrategy')}</Typography>
|
||||
</AccordionSummary>
|
||||
<AccordionDetails>
|
||||
<RaptorConfigItems />
|
||||
</AccordionDetails>
|
||||
</Accordion>
|
||||
|
||||
{/* 第三部分:Knowledge Graph 知识图谱 */}
|
||||
<Accordion>
|
||||
<AccordionSummary expandIcon={<ExpandMoreIcon />}>
|
||||
<Typography variant="h6">{t('knowledge.config.knowledgeGraph')}</Typography>
|
||||
</AccordionSummary>
|
||||
<AccordionDetails>
|
||||
<KnowledgeGraphConfigItems />
|
||||
</AccordionDetails>
|
||||
</Accordion>
|
||||
</Box>
|
||||
</ConfigurationFormContainer>
|
||||
);
|
||||
}
|
||||
@@ -1,14 +1,53 @@
|
||||
import React from 'react';
|
||||
import { Box, Typography, Accordion, AccordionSummary, AccordionDetails } from '@mui/material';
|
||||
import { ExpandMore as ExpandMoreIcon } from '@mui/icons-material';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import { ConfigurationFormContainer } from './configuration-form-container';
|
||||
import { ChunkMethodItem, EmbeddingModelItem, PageRankItem, TagsItem } from './common-items';
|
||||
import {
|
||||
ChunkMethodItem,
|
||||
RaptorConfigItems,
|
||||
KnowledgeGraphConfigItems
|
||||
} from './common-items';
|
||||
|
||||
export function QAConfiguration() {
|
||||
const { t } = useTranslation();
|
||||
|
||||
return (
|
||||
<ConfigurationFormContainer>
|
||||
<ChunkMethodItem />
|
||||
<EmbeddingModelItem />
|
||||
<PageRankItem />
|
||||
<TagsItem />
|
||||
<Box sx={{ display: 'flex', flexDirection: 'column', gap: 3 }}>
|
||||
{/* 第一部分:基础配置 */}
|
||||
<Accordion defaultExpanded>
|
||||
<AccordionSummary expandIcon={<ExpandMoreIcon />}>
|
||||
<Typography variant="h6">{t('knowledge.config.basicConfig')}</Typography>
|
||||
</AccordionSummary>
|
||||
<AccordionDetails>
|
||||
<Box sx={{ display: 'flex', flexDirection: 'column', gap: 3 }}>
|
||||
{/* 分块方法 */}
|
||||
<ChunkMethodItem />
|
||||
</Box>
|
||||
</AccordionDetails>
|
||||
</Accordion>
|
||||
|
||||
{/* 第二部分:RAPTOR策略 */}
|
||||
<Accordion>
|
||||
<AccordionSummary expandIcon={<ExpandMoreIcon />}>
|
||||
<Typography variant="h6">{t('knowledge.config.raptorStrategy')}</Typography>
|
||||
</AccordionSummary>
|
||||
<AccordionDetails>
|
||||
<RaptorConfigItems />
|
||||
</AccordionDetails>
|
||||
</Accordion>
|
||||
|
||||
{/* 第三部分:Knowledge Graph 知识图谱 */}
|
||||
<Accordion>
|
||||
<AccordionSummary expandIcon={<ExpandMoreIcon />}>
|
||||
<Typography variant="h6">{t('knowledge.config.knowledgeGraph')}</Typography>
|
||||
</AccordionSummary>
|
||||
<AccordionDetails>
|
||||
<KnowledgeGraphConfigItems />
|
||||
</AccordionDetails>
|
||||
</Accordion>
|
||||
</Box>
|
||||
</ConfigurationFormContainer>
|
||||
);
|
||||
}
|
||||
@@ -1,16 +1,53 @@
|
||||
import React from 'react';
|
||||
import { Box, Typography, Accordion, AccordionSummary, AccordionDetails } from '@mui/material';
|
||||
import { ExpandMore as ExpandMoreIcon } from '@mui/icons-material';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import { ConfigurationFormContainer } from './configuration-form-container';
|
||||
import { ChunkMethodItem, EmbeddingModelItem, PageRankItem, AutoKeywordsItem, AutoQuestionsItem, TagsItem } from './common-items';
|
||||
import {
|
||||
ChunkMethodItem,
|
||||
RaptorConfigItems,
|
||||
KnowledgeGraphConfigItems
|
||||
} from './common-items';
|
||||
|
||||
export function ResumeConfiguration() {
|
||||
const { t } = useTranslation();
|
||||
|
||||
return (
|
||||
<ConfigurationFormContainer>
|
||||
<ChunkMethodItem />
|
||||
<EmbeddingModelItem />
|
||||
<PageRankItem />
|
||||
<AutoKeywordsItem />
|
||||
<AutoQuestionsItem />
|
||||
<TagsItem />
|
||||
<Box sx={{ display: 'flex', flexDirection: 'column', gap: 3 }}>
|
||||
{/* 第一部分:基础配置 */}
|
||||
<Accordion defaultExpanded>
|
||||
<AccordionSummary expandIcon={<ExpandMoreIcon />}>
|
||||
<Typography variant="h6">{t('knowledge.config.basicConfig')}</Typography>
|
||||
</AccordionSummary>
|
||||
<AccordionDetails>
|
||||
<Box sx={{ display: 'flex', flexDirection: 'column', gap: 3 }}>
|
||||
{/* 分块方法 */}
|
||||
<ChunkMethodItem />
|
||||
</Box>
|
||||
</AccordionDetails>
|
||||
</Accordion>
|
||||
|
||||
{/* 第二部分:RAPTOR策略 */}
|
||||
<Accordion>
|
||||
<AccordionSummary expandIcon={<ExpandMoreIcon />}>
|
||||
<Typography variant="h6">{t('knowledge.config.raptorStrategy')}</Typography>
|
||||
</AccordionSummary>
|
||||
<AccordionDetails>
|
||||
<RaptorConfigItems />
|
||||
</AccordionDetails>
|
||||
</Accordion>
|
||||
|
||||
{/* 第三部分:Knowledge Graph 知识图谱 */}
|
||||
<Accordion>
|
||||
<AccordionSummary expandIcon={<ExpandMoreIcon />}>
|
||||
<Typography variant="h6">{t('knowledge.config.knowledgeGraph')}</Typography>
|
||||
</AccordionSummary>
|
||||
<AccordionDetails>
|
||||
<KnowledgeGraphConfigItems />
|
||||
</AccordionDetails>
|
||||
</Accordion>
|
||||
</Box>
|
||||
</ConfigurationFormContainer>
|
||||
);
|
||||
}
|
||||
@@ -1,16 +1,53 @@
|
||||
import React from 'react';
|
||||
import { Box, Typography, Accordion, AccordionSummary, AccordionDetails } from '@mui/material';
|
||||
import { ExpandMore as ExpandMoreIcon } from '@mui/icons-material';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import { ConfigurationFormContainer } from './configuration-form-container';
|
||||
import { ChunkMethodItem, EmbeddingModelItem, PageRankItem, AutoKeywordsItem, AutoQuestionsItem, TagsItem } from './common-items';
|
||||
import {
|
||||
ChunkMethodItem,
|
||||
RaptorConfigItems,
|
||||
KnowledgeGraphConfigItems
|
||||
} from './common-items';
|
||||
|
||||
export function TableConfiguration() {
|
||||
const { t } = useTranslation();
|
||||
|
||||
return (
|
||||
<ConfigurationFormContainer>
|
||||
<ChunkMethodItem />
|
||||
<EmbeddingModelItem />
|
||||
<PageRankItem />
|
||||
<AutoKeywordsItem />
|
||||
<AutoQuestionsItem />
|
||||
<TagsItem />
|
||||
<Box sx={{ display: 'flex', flexDirection: 'column', gap: 3 }}>
|
||||
{/* 第一部分:基础配置 */}
|
||||
<Accordion defaultExpanded>
|
||||
<AccordionSummary expandIcon={<ExpandMoreIcon />}>
|
||||
<Typography variant="h6">{t('knowledge.config.basicConfig')}</Typography>
|
||||
</AccordionSummary>
|
||||
<AccordionDetails>
|
||||
<Box sx={{ display: 'flex', flexDirection: 'column', gap: 3 }}>
|
||||
{/* 分块方法 */}
|
||||
<ChunkMethodItem />
|
||||
</Box>
|
||||
</AccordionDetails>
|
||||
</Accordion>
|
||||
|
||||
{/* 第二部分:RAPTOR策略 */}
|
||||
<Accordion>
|
||||
<AccordionSummary expandIcon={<ExpandMoreIcon />}>
|
||||
<Typography variant="h6">{t('knowledge.config.raptorStrategy')}</Typography>
|
||||
</AccordionSummary>
|
||||
<AccordionDetails>
|
||||
<RaptorConfigItems />
|
||||
</AccordionDetails>
|
||||
</Accordion>
|
||||
|
||||
{/* 第三部分:Knowledge Graph 知识图谱 */}
|
||||
<Accordion>
|
||||
<AccordionSummary expandIcon={<ExpandMoreIcon />}>
|
||||
<Typography variant="h6">{t('knowledge.config.knowledgeGraph')}</Typography>
|
||||
</AccordionSummary>
|
||||
<AccordionDetails>
|
||||
<KnowledgeGraphConfigItems />
|
||||
</AccordionDetails>
|
||||
</Accordion>
|
||||
</Box>
|
||||
</ConfigurationFormContainer>
|
||||
);
|
||||
}
|
||||
@@ -1,21 +1,56 @@
|
||||
import React from 'react';
|
||||
import { Box, Typography, Accordion, AccordionSummary, AccordionDetails, Divider } from '@mui/material';
|
||||
import { ExpandMore as ExpandMoreIcon } from '@mui/icons-material';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import { ConfigurationFormContainer } from './configuration-form-container';
|
||||
import { ChunkMethodItem, EmbeddingModelItem } from './common-items';
|
||||
import { Box, Typography } from '@mui/material';
|
||||
import {
|
||||
RaptorConfigItems,
|
||||
KnowledgeGraphConfigItems,
|
||||
ChunkMethodItem,
|
||||
LayoutRecognizeItem,
|
||||
AutoKeywordsItem,
|
||||
AutoQuestionsItem
|
||||
} from './common-items';
|
||||
|
||||
export function TagConfiguration() {
|
||||
const { t } = useTranslation();
|
||||
|
||||
|
||||
return (
|
||||
<ConfigurationFormContainer>
|
||||
<ChunkMethodItem />
|
||||
<EmbeddingModelItem />
|
||||
<Box sx={{ display: 'flex', flexDirection: 'column', gap: 3 }}>
|
||||
{/* 第一部分:基础配置 */}
|
||||
<Accordion defaultExpanded>
|
||||
<AccordionSummary expandIcon={<ExpandMoreIcon />}>
|
||||
<Typography variant="h6">{t('knowledge.config.basicConfig')}</Typography>
|
||||
</AccordionSummary>
|
||||
<AccordionDetails>
|
||||
{/* 切片方法 */}
|
||||
<Box sx={{ mb: 3 }}>
|
||||
<ChunkMethodItem />
|
||||
</Box>
|
||||
<Divider />
|
||||
</AccordionDetails>
|
||||
</Accordion>
|
||||
|
||||
<Box sx={{ mb: 2 }}>
|
||||
<Typography variant="body2" color="text.secondary">
|
||||
{t('knowledge.config.pageRankConfigTodo')}
|
||||
</Typography>
|
||||
{/* 第二部分:RAPTOR策略 */}
|
||||
<Accordion>
|
||||
<AccordionSummary expandIcon={<ExpandMoreIcon />}>
|
||||
<Typography variant="h6">{t('knowledge.config.raptorStrategy')}</Typography>
|
||||
</AccordionSummary>
|
||||
<AccordionDetails>
|
||||
<RaptorConfigItems />
|
||||
</AccordionDetails>
|
||||
</Accordion>
|
||||
|
||||
{/* 第三部分:Knowledge Graph 知识图谱 */}
|
||||
<Accordion>
|
||||
<AccordionSummary expandIcon={<ExpandMoreIcon />}>
|
||||
<Typography variant="h6">{t('knowledge.config.knowledgeGraph')}</Typography>
|
||||
</AccordionSummary>
|
||||
<AccordionDetails>
|
||||
<KnowledgeGraphConfigItems />
|
||||
</AccordionDetails>
|
||||
</Accordion>
|
||||
</Box>
|
||||
</ConfigurationFormContainer>
|
||||
);
|
||||
|
||||
@@ -25,14 +25,7 @@ import GeneralForm from './components/GeneralForm';
|
||||
import ChunkMethodForm from './components/ChunkMethodForm';
|
||||
import { useSnackbar } from '@/components/Provider/SnackbarProvider';
|
||||
import { DOCUMENT_PARSER_TYPES } from '@/constants/knowledge';
|
||||
|
||||
// 统一表单数据类型
|
||||
interface BaseFormData {
|
||||
name: string;
|
||||
description: string;
|
||||
permission: string;
|
||||
avatar?: string;
|
||||
}
|
||||
import logger from '@/utils/logger';
|
||||
|
||||
function KnowledgeBaseCreate() {
|
||||
const navigate = useNavigate();
|
||||
@@ -63,11 +56,12 @@ function KnowledgeBaseCreate() {
|
||||
description: '',
|
||||
permission: 'me',
|
||||
avatar: undefined,
|
||||
pagerank: 0,
|
||||
parser_id: DOCUMENT_PARSER_TYPES.Naive,
|
||||
embd_id: 'text-embedding-v3@Tongyi-Qianwen',
|
||||
embd_id: '',
|
||||
parser_config: {
|
||||
chunk_token_num: 512,
|
||||
delimiter: '\n',
|
||||
delimiter: '\\n',
|
||||
auto_keywords: 0,
|
||||
auto_questions: 0,
|
||||
html4excel: false,
|
||||
@@ -91,6 +85,7 @@ function KnowledgeBaseCreate() {
|
||||
|
||||
// 处理表单提交
|
||||
const handleSubmit = async ({ data }: { data: any }) => {
|
||||
logger.info('提交表单数据:', data);
|
||||
clearError();
|
||||
try {
|
||||
if (activeStep === 0) {
|
||||
@@ -100,6 +95,8 @@ function KnowledgeBaseCreate() {
|
||||
description: data.description,
|
||||
permission: data.permission,
|
||||
avatar: data.avatar,
|
||||
pagerank: data.pagerank,
|
||||
embd_id: data.embd_id,
|
||||
};
|
||||
|
||||
const result = await createKnowledge(basicData);
|
||||
@@ -126,6 +123,7 @@ function KnowledgeBaseCreate() {
|
||||
permission: data.permission,
|
||||
avatar: data.avatar,
|
||||
parser_id: data.parser_id,
|
||||
pagerank: data.pagerank,
|
||||
embd_id: data.embd_id,
|
||||
parser_config: data.parser_config,
|
||||
};
|
||||
|
||||
@@ -55,6 +55,8 @@ function KnowledgeBaseSetting() {
|
||||
description: '',
|
||||
permission: 'me',
|
||||
avatar: undefined,
|
||||
embd_id: '',
|
||||
pagerank: 0,
|
||||
}
|
||||
});
|
||||
|
||||
@@ -74,6 +76,7 @@ function KnowledgeBaseSetting() {
|
||||
avatar: knowledge.avatar,
|
||||
parser_id: knowledge.parser_id || DOCUMENT_PARSER_TYPES.Naive,
|
||||
embd_id: knowledge.embd_id || '',
|
||||
pagerank: knowledge.pagerank || 0,
|
||||
parser_config: {
|
||||
chunk_token_num: knowledge.parser_config?.chunk_token_num || 512,
|
||||
delimiter: knowledge.parser_config?.delimiter || '\n',
|
||||
@@ -117,6 +120,8 @@ function KnowledgeBaseSetting() {
|
||||
avatar: data.avatar,
|
||||
kb_id: knowledge.id,
|
||||
parser_id: knowledge.parser_id,
|
||||
pagerank: data.pagerank,
|
||||
embd_id: data.embd_id,
|
||||
} as any;
|
||||
|
||||
await updateKnowledgeBasicInfo(basicData);
|
||||
|
||||
@@ -135,18 +135,7 @@ request.interceptors.response.use(
|
||||
responseType: response.config.responseType,
|
||||
hasData: !!response.data
|
||||
});
|
||||
|
||||
const { status } = response;
|
||||
// 处理特定状态码
|
||||
if (status == 413 || status == 504) {
|
||||
logger.info('⚠️ Handling HTTP error status:', status);
|
||||
snackbar.error(RetcodeMessage[status as ResultCode]);
|
||||
}
|
||||
if (status == 401) {
|
||||
logger.info('⚠️ Handling HTTP 401 unauthorized');
|
||||
notification.error(i18n.t('message.401'));
|
||||
redirectToLogin();
|
||||
}
|
||||
|
||||
// 处理blob类型响应
|
||||
if (response.config.responseType === 'blob') {
|
||||
logger.info('📁 Blob response detected, skipping data processing');
|
||||
@@ -158,7 +147,7 @@ request.interceptors.response.use(
|
||||
// 处理业务错误码
|
||||
if (data?.code == 401) {
|
||||
logger.info('⚠️ Handling business code 401 unauthorized');
|
||||
notification.error(data?.message, i18n.t('message.401'));
|
||||
snackbar.error(data?.message ?? i18n.t('message.401'));
|
||||
redirectToLogin();
|
||||
} else if (data?.code !== 0) {
|
||||
// 处理其他业务错误
|
||||
@@ -180,11 +169,26 @@ request.interceptors.response.use(
|
||||
hasResponse: !!error.response
|
||||
});
|
||||
|
||||
const { status } = error.response || {};
|
||||
if (status == 401) {
|
||||
redirectToLogin();
|
||||
const { status, data } = error.response || {};
|
||||
if (status == 401) {
|
||||
logger.info('401', data)
|
||||
const detail = data['detail']
|
||||
if (detail) {
|
||||
const error = new CustomError(detail || i18n.t('message.requestError'));
|
||||
if (detail.includes('not registered')) {
|
||||
error.code = data?.code || -1;
|
||||
error.response = data;
|
||||
snackbar.error(detail);
|
||||
} else {
|
||||
redirectToLogin();
|
||||
}
|
||||
return Promise.reject(error);
|
||||
}
|
||||
} else if (status == 413 || status == 504) {
|
||||
logger.info('⚠️ Handling HTTP error status:', status);
|
||||
snackbar.error(RetcodeMessage[status as ResultCode]);
|
||||
}
|
||||
|
||||
|
||||
// 处理网络错误
|
||||
if (error.message === FAILED_TO_FETCH || !error.response) {
|
||||
logger.info('🌐 Network error detected:', error.message);
|
||||
@@ -192,10 +196,8 @@ request.interceptors.response.use(
|
||||
const { status, statusText } = error.response;
|
||||
const errorText = RetcodeMessage[status as ResultCode] || statusText;
|
||||
logger.info('🚫 HTTP error response:', { status, statusText, errorText });
|
||||
notification.error(`${i18n.t('message.requestError')} ${status}`, errorText);
|
||||
}
|
||||
|
||||
logger.info('🔄 Rejecting promise with error');
|
||||
return Promise.reject(error);
|
||||
}
|
||||
);
|
||||
|
||||