问题背景
我正在开发一个基于 Dify 工作流的自定义代码解析工具(针对 Zig 语言)。为了实现更精准的 RAG 效果,我弃用了系统自动分段,改为在**代码节点(Node.js/Python)**中手动实现“父子分块”逻辑:
-
父块 (Parent Chunk):完整的函数实现或类型定义。
-
子块 (Child Chunk):针对父块切分的细粒度语义单元(如注释、函数签名)。
核心痛点
我遇到的最大阻碍是:代码节点输出的 JSON 对象,在知识库节点中无法被识别,或提示 Output parent_child_structure is missing。 尽管我尝试模仿了工具节点的输出格式,但由于缺乏官方文档对 (multimodal)parent_child_structure 类型的 Schema 定义,导致变量映射频繁失败。
已尝试的操作
-
数据结构重组:尝试过返回纯数组,也尝试过返回包含
parent_mode和parent_child_chunks的 Object。 -
输出变量定义:在代码节点的“输出变量”中手动声明了
result为Object类型,但下游知识库节点的变量选择器依然无法正确解析其内部子属性。 -
环境排查:确认了 Embedding 模型正常,且
child_contents均为非空字符串数组。
想请教的问题
-
官方 Schema 定义:
parent_child_structure这个强类型变量的完整 JSON Schema 到底是什么?除了parent_mode和parent_child_chunks之外,是否还有隐藏的元数据或特定的$schema标识符要求? -
变量识别逻辑:为什么代码节点输出的
Object在知识库节点的变量选择器中经常被过滤掉(不显示)?是否必须满足某种特定的变量命名规范或“输出变量”声明方式? -
手动分块最佳实践:如果想跳过 Dify 默认的清洗逻辑,直接将预处理好的父子分块存入知识库,除了“代码节点 → 知识库节点”这条路,是否有更成熟的 API 或插件路径?
附件:目前的输出格式参考
{
"parent_child_structure": {
"parent_mode": "paragraph",
"parent_child_chunks": [
{
"parent_content": "pub fn main() void { ... }",
"child_contents": ["pub fn main()", "void { ... }"]
}
]
}
}
期望能得到官方或有相关经验的大佬指点,非常感谢!