0.6.11
自托管(源代码)
正常
错误
ztigrdn81#
你好@xddcode,我在这里帮助你解决任何bug、问题或贡献。让我们一起解决这个问题。为了解决在Dify版本0.6.11中运行知识库召回测试时出现的"3个验证错误,用于ParsingModel[InlineResponse20015]",请确保设置的输入不包含任何不允许的额外字段。在提供的代码中,来自immer库的produce函数用于创建新的输入对象,同时确保只包含必要的字段。具体来说,setInputs函数是根据retrieval_mode设计的,用于删除single_retrieval_config或multiple_retrieval_config。以下是处理此问题的相关代码部分:
immer
produce
setInputs
retrieval_mode
single_retrieval_config
multiple_retrieval_config
const setInputs = useCallback((s: KnowledgeRetrievalNodeType) => { const newInputs = produce(s, (draft) => { if (s.retrieval_mode === RETRIEVE_TYPE.multiWay) delete draft.single_retrieval_config else delete draft.multiple_retrieval_config }) doSetInputs(newInputs) }, [doSetInputs])
这确保根据检索模式包含适当的配置,防止设置额外的输入。此外,当更改检索模式时,代码确保设置正确的配置:
const handleRetrievalModeChange = useCallback((newMode: RETRIEVE_TYPE) => { const newInputs = produce(inputs, (draft) => { draft.retrieval_mode = newMode if (newMode === RETRIEVE_TYPE.multiWay) { draft.multiple_retrieval_config = { top_k: draft.multiple_retrieval_config?.top_k || DATASET_DEFAULT.top_k, score_threshold: draft.multiple_retrieval_config?.score_threshold, reranking_model: !draft.multiple_retrieval_config?.reranking_model?.provider ? { provider: rerankDefaultModel?.provider?.provider || '', model: rerankDefaultModel?.model || '', } : draft.multiple_retrieval_config?.reranking_model, } } else { const hasSetModel = draft.single_retrieval_config?.model?.provider if (!hasSetModel) { draft.single_retrieval_config = { model: { provider: currentProvider?.provider || '', name: currentModel?.model || '', mode: currentModel?.model_properties?.mode as string, completion_params: {}, }, } } } }) setInputs(newInputs) }, [currentModel?.model, currentModel?.model_properties?.mode, currentProvider?.provider, inputs, rerankDefaultModel?.model, rerankDefaultModel?.provider?.provider, setInputs])
通过确保输入中只包含必要的字段,可以避免与额外输入相关的验证错误1(https://github.com/langgenius/dify/blob/main/web/app/components/workflow/nodes/knowledge-retrieval/use-config.ts)2(https://github.com/langgenius/dify/blob/main/api/core/workflow/nodes/knowledge_retrieval/entities.py)。
kqqjbcuj2#
@dosu,现在处于全文搜索模式,没有错误。上述错误发生在矢量检索模式下。
mrfwxfqh3#
为了解决Dify版本0.6.11中与向量检索模式中的额外输入相关的验证错误,请确保 handleChange 函数正确更新 multiple_retrieval_config,而不包含任何额外的输入。验证传递给 handleChange 的 DatasetConfigs 对象不包含任何意外的属性。以下处理配置更新的相关代码部分:
handleChange
DatasetConfigs
const handleChange = useCallback((configs: DatasetConfigs, isRetrievalModeChange?: boolean) => { if (isRetrievalModeChange) { onRetrievalModeChange(configs.retrieval_model) return } onMultipleRetrievalConfigChange({ top_k: configs.top_k, score_threshold: configs.score_threshold_enabled ? (configs.score_threshold || DATASET_DEFAULT.score_threshold) : null, reranking_model: payload.retrieval_mode === RETRIEVE_TYPE.oneWay ? undefined : (!configs.reranking_model?.reranking_provider_name ? { provider: rerankDefaultModel?.provider?.provider || '', model: rerankDefaultModel?.model || '', } : { provider: configs.reranking_model?.reranking_provider_name, model: configs.reranking_model?.reranking_model_name, }), }) }, [onMultipleRetrievalConfigChange, payload.retrieval_mode, rerankDefaultModel?.provider?.provider, rerankDefaultModel?.model, onRetrievalModeChange])
确保 DatasetConfigs 对象仅包含必要的属性( top_k 、 score_threshold 、 score_threshold_enabled 、 reranking_model 和 retrieval_model )。如果有任何额外的属性,它们应在调用 handleChange 之前被删除。此外,请参考 web/app/components/workflow/nodes/knowledge-retrieval/panel.tsx 中的 Panel 组件,以了解如何管理配置,并确保 handleRetrievalModeChange 和 handleMultipleRetrievalConfigChange 函数正确实现。
top_k
score_threshold
score_threshold_enabled
reranking_model
retrieval_model
web/app/components/workflow/nodes/knowledge-retrieval/panel.tsx
Panel
handleRetrievalModeChange
handleMultipleRetrievalConfigChange
v440hwme4#
请查看 #5640 。我遇到了相同的问题,并使用较低版本的qdrant解决了这个问题。
4条答案
按热度按时间ztigrdn81#
你好@xddcode,我在这里帮助你解决任何bug、问题或贡献。让我们一起解决这个问题。
为了解决在Dify版本0.6.11中运行知识库召回测试时出现的"3个验证错误,用于ParsingModel[InlineResponse20015]",请确保设置的输入不包含任何不允许的额外字段。
在提供的代码中,来自
immer
库的produce
函数用于创建新的输入对象,同时确保只包含必要的字段。具体来说,setInputs
函数是根据retrieval_mode
设计的,用于删除single_retrieval_config
或multiple_retrieval_config
。以下是处理此问题的相关代码部分:
这确保根据检索模式包含适当的配置,防止设置额外的输入。
此外,当更改检索模式时,代码确保设置正确的配置:
通过确保输入中只包含必要的字段,可以避免与额外输入相关的验证错误1(https://github.com/langgenius/dify/blob/main/web/app/components/workflow/nodes/knowledge-retrieval/use-config.ts)2(https://github.com/langgenius/dify/blob/main/api/core/workflow/nodes/knowledge_retrieval/entities.py)。
kqqjbcuj2#
@dosu,现在处于全文搜索模式,没有错误。上述错误发生在矢量检索模式下。
mrfwxfqh3#
为了解决Dify版本0.6.11中与向量检索模式中的额外输入相关的验证错误,请确保
handleChange
函数正确更新multiple_retrieval_config
,而不包含任何额外的输入。验证传递给handleChange
的DatasetConfigs
对象不包含任何意外的属性。以下处理配置更新的相关代码部分:
确保
DatasetConfigs
对象仅包含必要的属性(top_k
、score_threshold
、score_threshold_enabled
、reranking_model
和retrieval_model
)。如果有任何额外的属性,它们应在调用handleChange
之前被删除。此外,请参考
web/app/components/workflow/nodes/knowledge-retrieval/panel.tsx
中的Panel
组件,以了解如何管理配置,并确保handleRetrievalModeChange
和handleMultipleRetrievalConfigChange
函数正确实现。v440hwme4#
请查看 #5640 。我遇到了相同的问题,并使用较低版本的qdrant解决了这个问题。