@@ -293,12 +293,12 @@ const Popup = () => {
onClick={handleClickPublishAsKnowledgePipeline}
disabled={!publishedAt || isPublishingAsCustomizedPipeline}
>
-
+
{t('pipeline.common.publishAs')}
- {!isAllowPublishAsKnowledgePipeline && (
+ {!isAllowPublishAsCustomKnowledgePipelineTemplate && (
diff --git a/web/app/components/rag-pipeline/hooks/use-available-nodes-meta-data.ts b/web/app/components/rag-pipeline/hooks/use-available-nodes-meta-data.ts
index 66b9214214..cd7a877adf 100644
--- a/web/app/components/rag-pipeline/hooks/use-available-nodes-meta-data.ts
+++ b/web/app/components/rag-pipeline/hooks/use-available-nodes-meta-data.ts
@@ -25,11 +25,13 @@ export const useAvailableNodesMetaData = () => {
dataSourceEmptyDefault,
], [])
- const prefixLink = useMemo(() => {
+ const helpLinkUri = useMemo(() => {
if (language === 'zh_Hans')
- return 'https://docs.dify.ai/zh-hans/guides/workflow/node/'
+ return 'https://docs.dify.ai/zh-hans/guides/knowledge-base/knowledge-pipeline/knowledge-pipeline-orchestration#%E6%AD%A5%E9%AA%A4%E4%B8%80%EF%BC%9A%E6%95%B0%E6%8D%AE%E6%BA%90%E9%85%8D%E7%BD%AE'
+ if (language === 'ja_JP')
+ return 'https://docs.dify.ai/ja-jp/guides/knowledge-base/knowledge-pipeline/knowledge-pipeline-orchestration#%E3%82%B9%E3%83%86%E3%83%83%E3%83%971%EF%BC%9A%E3%83%87%E3%83%BC%E3%82%BF%E3%82%BD%E3%83%BC%E3%82%B9%E3%81%AE%E8%A8%AD%E5%AE%9A'
- return 'https://docs.dify.ai/guides/workflow/node/'
+ return 'https://docs.dify.ai/en/guides/knowledge-base/knowledge-pipeline/knowledge-pipeline-orchestration#step-1%3A-data-source'
}, [language])
const availableNodesMetaData = useMemo(() => mergedNodesMetaData.map((node) => {
@@ -42,7 +44,7 @@ export const useAvailableNodesMetaData = () => {
...metaData,
title,
description,
- helpLinkUri: `${prefixLink}${metaData.helpLinkUri}`,
+ helpLinkUri,
},
defaultValue: {
...node.defaultValue,
@@ -50,7 +52,7 @@ export const useAvailableNodesMetaData = () => {
title,
},
}
- }), [mergedNodesMetaData, t, prefixLink])
+ }), [mergedNodesMetaData, t])
const availableNodesMetaDataMap = useMemo(() => availableNodesMetaData.reduce((acc, node) => {
acc![node.metaData.type] = node
diff --git a/web/app/components/workflow/nodes/knowledge-base/components/retrieval-setting/reranking-model-selector.tsx b/web/app/components/workflow/nodes/knowledge-base/components/retrieval-setting/reranking-model-selector.tsx
index 81e131b2a2..e1eccaf309 100644
--- a/web/app/components/workflow/nodes/knowledge-base/components/retrieval-setting/reranking-model-selector.tsx
+++ b/web/app/components/workflow/nodes/knowledge-base/components/retrieval-setting/reranking-model-selector.tsx
@@ -19,8 +19,8 @@ const RerankingModelSelector = ({
readonly = false,
}: RerankingModelSelectorProps) => {
const {
- modelList: rerankModelList,
- } = useModelListAndDefaultModel(ModelTypeEnum.rerank)
+ modelList: rerankModelList,
+ } = useModelListAndDefaultModel(ModelTypeEnum.rerank)
const rerankModel = useMemo(() => {
if (!rerankingModel)
return undefined
diff --git a/web/app/components/workflow/nodes/knowledge-base/components/retrieval-setting/search-method-option.tsx b/web/app/components/workflow/nodes/knowledge-base/components/retrieval-setting/search-method-option.tsx
index 74629f47ae..40d44f3135 100644
--- a/web/app/components/workflow/nodes/knowledge-base/components/retrieval-setting/search-method-option.tsx
+++ b/web/app/components/workflow/nodes/knowledge-base/components/retrieval-setting/search-method-option.tsx
@@ -178,11 +178,13 @@ const SearchMethodOption = ({
)
}
-
+ {rerankingModelEnabled && (
+
+ )}
)
}
diff --git a/web/app/components/workflow/nodes/knowledge-base/hooks/use-config.ts b/web/app/components/workflow/nodes/knowledge-base/hooks/use-config.ts
index 215ef85559..d5c810cbc4 100644
--- a/web/app/components/workflow/nodes/knowledge-base/hooks/use-config.ts
+++ b/web/app/components/workflow/nodes/knowledge-base/hooks/use-config.ts
@@ -114,6 +114,16 @@ export const useConfig = (id: string) => {
})
}, [getNodeData, handleNodeDataUpdate])
+ const handleRerankingModelEnabledChange = useCallback((rerankingModelEnabled: boolean) => {
+ const nodeData = getNodeData()
+ handleNodeDataUpdate({
+ retrieval_model: {
+ ...nodeData?.data.retrieval_model,
+ reranking_enable: rerankingModelEnabled,
+ },
+ })
+ }, [getNodeData, handleNodeDataUpdate])
+
const handleWeighedScoreChange = useCallback((weightedScore: { value: number[] }) => {
const nodeData = getNodeData()
handleNodeDataUpdate({
@@ -190,6 +200,7 @@ export const useConfig = (id: string) => {
handleEmbeddingModelChange,
handleRetrievalSearchMethodChange,
handleHybridSearchModeChange,
+ handleRerankingModelEnabledChange,
handleWeighedScoreChange,
handleRerankingModelChange,
handleTopKChange,
diff --git a/web/app/components/workflow/nodes/knowledge-base/panel.tsx b/web/app/components/workflow/nodes/knowledge-base/panel.tsx
index 7014e12558..9eaf4ef39f 100644
--- a/web/app/components/workflow/nodes/knowledge-base/panel.tsx
+++ b/web/app/components/workflow/nodes/knowledge-base/panel.tsx
@@ -39,6 +39,7 @@ const Panel: FC
> = ({
handleEmbeddingModelChange,
handleRetrievalSearchMethodChange,
handleHybridSearchModeChange,
+ handleRerankingModelEnabledChange,
handleWeighedScoreChange,
handleRerankingModelChange,
handleTopKChange,
@@ -150,6 +151,8 @@ const Panel: FC> = ({
onHybridSearchModeChange={handleHybridSearchModeChange}
weightedScore={data.retrieval_model.weights}
onWeightedScoreChange={handleWeighedScoreChange}
+ rerankingModelEnabled={data.retrieval_model.reranking_enable}
+ onRerankingModelEnabledChange={handleRerankingModelEnabledChange}
rerankingModel={data.retrieval_model.reranking_model}
onRerankingModelChange={handleRerankingModelChange}
topK={data.retrieval_model.top_k}
diff --git a/web/context/provider-context.tsx b/web/context/provider-context.tsx
index 902e5baf99..09019d3024 100644
--- a/web/context/provider-context.tsx
+++ b/web/context/provider-context.tsx
@@ -61,7 +61,7 @@ type ProviderContextState = {
},
refreshLicenseLimit: () => void
isAllowTransferWorkspace: boolean
- isAllowPublishAsKnowledgePipeline: boolean
+ isAllowPublishAsCustomKnowledgePipelineTemplate: boolean
}
const ProviderContext = createContext({
modelProviders: [],
@@ -108,7 +108,7 @@ const ProviderContext = createContext({
},
refreshLicenseLimit: noop,
isAllowTransferWorkspace: false,
- isAllowPublishAsKnowledgePipeline: false,
+ isAllowPublishAsCustomKnowledgePipelineTemplate: false,
})
export const useProviderContext = () => useContext(ProviderContext)
@@ -147,7 +147,7 @@ export const ProviderContextProvider = ({
const [isEducationWorkspace, setIsEducationWorkspace] = useState(false)
const { data: educationAccountInfo, isLoading: isLoadingEducationAccountInfo, isFetching: isFetchingEducationAccountInfo } = useEducationStatus(!enableEducationPlan)
const [isAllowTransferWorkspace, setIsAllowTransferWorkspace] = useState(false)
- const [isAllowPublishAsKnowledgePipeline, setIsAllowPublishAsKnowledgePipeline] = useState(false)
+ const [isAllowPublishAsCustomKnowledgePipelineTemplate, setIsAllowPublishAsCustomKnowledgePipelineTemplate] = useState(false)
const fetchPlan = async () => {
try {
@@ -179,7 +179,7 @@ export const ProviderContextProvider = ({
if (data.is_allow_transfer_workspace)
setIsAllowTransferWorkspace(data.is_allow_transfer_workspace)
if (data.knowledge_pipeline?.publish_enabled)
- setIsAllowPublishAsKnowledgePipeline(data.knowledge_pipeline?.publish_enabled)
+ setIsAllowPublishAsCustomKnowledgePipelineTemplate(data.knowledge_pipeline?.publish_enabled)
}
catch (error) {
console.error('Failed to fetch plan info:', error)
@@ -245,7 +245,7 @@ export const ProviderContextProvider = ({
licenseLimit,
refreshLicenseLimit: fetchPlan,
isAllowTransferWorkspace,
- isAllowPublishAsKnowledgePipeline,
+ isAllowPublishAsCustomKnowledgePipelineTemplate,
}}>
{children}
diff --git a/web/i18n/en-US/pipeline.ts b/web/i18n/en-US/pipeline.ts
index e906d615f7..4b29bdbb00 100644
--- a/web/i18n/en-US/pipeline.ts
+++ b/web/i18n/en-US/pipeline.ts
@@ -1,7 +1,7 @@
const translation = {
common: {
goToAddDocuments: 'Go to add documents',
- publishAs: 'Publish as a Knowledge Pipeline',
+ publishAs: 'Publish as a Customized Pipeline Template',
confirmPublish: 'Confirm Publish',
confirmPublishContent: 'After successfully publishing the knowledge pipeline, the chunk structure of this knowledge base cannot be modified. Are you sure you want to publish it?',
publishAsPipeline: {
diff --git a/web/i18n/zh-Hans/pipeline.ts b/web/i18n/zh-Hans/pipeline.ts
index 0bba075196..3c3a7a6506 100644
--- a/web/i18n/zh-Hans/pipeline.ts
+++ b/web/i18n/zh-Hans/pipeline.ts
@@ -1,7 +1,7 @@
const translation = {
common: {
goToAddDocuments: '去添加文档',
- publishAs: '发布为知识流水线',
+ publishAs: '发布为自定义流水线模板',
confirmPublish: '确认发布',
confirmPublishContent: '成功发布知识流水线后,此知识库的分段结构将无法修改。您确定要发布吗?',
publishAsPipeline: {