结构化输出

NodeRAG依赖于结构解码,并需要长时间且稳定的结构化输出。当前的测试结果显示,除了OpenAI能够稳定输出外,Gemini和DeepSeek的JSON格式仍然面临挑战。

结构化输出在NodeRAG中的挑战

NodeRAG高度依赖于将长文本分解为结构化提示以进行进一步处理。具体来说,它依赖于从较长文本输入中持续生成结构化JSON输出的能力。一方面,我们需要系统在复杂、延伸的任务中保持适当的格式。为实现这一点,我们的项目最初依赖于OpenAI的结构化输出功能文档在此)。借此,模型可靠地将文本块分解为异构节点,使下游处理变得顺畅高效。

然而,当我们尝试扩展到其他模型时,遇到了一些障碍。例如,OpenAI的结构输出失败(即输出不遵循预期的JSON格式)发生率不到1%——相当稳定。但当我们尝试Gemini 2.0 Flash时,这一失败率跃升至约20%。更糟的是,使用DeepSeek的官方JSON输出时,近60%的API响应忽略了规定的格式,这使得错误处理几乎不可能。

由于这些问题,在v0.1.0版本中,我们仅支持OpenAI和Gemini用于结构化输出任务。

OpenAI GPT-4o-mini

图1. OpenAI GPT-4o-mini — 高度可靠的JSON输出

Gemini 2.0 Flash

图2. Gemini 2.0 Flash — 可接受的格式,但内容质量较低

话虽如此,尽管Gemini比DeepSeek更常能坚持格式,我们注意到其输出的质量存在问题——例如重复短语多余空格,以及与OpenAI的GPT-4o-mini相比整体保真度较低的内容。

我们的建议

到目前为止,我们建议在NodeRAG中使用OpenAI的模型,特别是对于需要一致结构化输出的任务。我们将继续评估其他模型的结构化输出能力,看它们是否最终能适应NodeRAG流程。


展望未来

我们对未来一个令人兴奋的方向是:专门为NodeRAG文本到节点分解步骤进行微调轻量级模型。这项任务本质上是摘要和改述的混合,所以相对直接。挑战在于在长文本输入上保持稳定的结构化输出

一旦文本被分解为结构化节点,我们可以使用更强大的模型从图中提取更高层次的见解观点总结

Last modified April 5, 2025: update reproduce (f23a25c)