Skip to main content

🧠 RAG(检索增强生成)故障排除

检索增强生成(RAG)使语言模型能够通过检索相关信息并将其输入模型来推理外部内容——文档、知识库等。但是当事情不按预期工作时(例如,模型"产生幻觉"或遗漏相关信息),通常不是模型的错误——而是上下文问题。

让我们分解常见的原因和解决方案,这样您就可以提升您的 RAG 准确性!🚀

常见的 RAG 问题及其解决方法 🛠️

1. 模型"看不到"您的内容 👁️❌

这是最常见的问题——通常是由于内容摄取过程中的问题引起的。模型不会因为错误而产生幻觉,它会产生幻觉是因为一开始就没有得到正确的内容。

✅ 解决方案:检查您的内容提取设置

  • 导航到:管理设置 > 文档
  • 确保您使用的是强大的内容提取引擎,例如:
    • Apache Tika
    • Docling
    • 自定义提取器(取决于您的文档类型)

📌 提示:尝试上传一个文档并预览提取的内容。如果内容为空或缺少关键部分,您需要调整提取器设置或使用不同的引擎。


2. 只有文档的一小部分被使用 📄➡️✂️

Open WebUI 默认设计为与具有有限上下文窗口的模型一起工作。例如,许多本地模型(如 Ollama 的默认模型)被限制为 2048 个标记。因此,Open WebUI 会积极地修剪检索到的内容以适应假定的可用空间。

✅ 解决方案:

  • 转到 管理设置 > 文档
  • 选择其中一个:
    • 💡 启用"绕过嵌入和检索" — 这会直接发送完整内容而不应用严格的检索过滤器。
    • 🔍 切换启用"完整上下文模式" — 这会在模型提示中注入更全面的内容。

📌 警告:注意上下文限制——如果您的模型无法处理更多标记,它仍然会被截断。


3. 标记限制太短 ⏳

即使检索工作正常,您的模型可能仍然无法处理它接收到的所有内容——因为它根本无法处理。

默认情况下,许多模型(特别是 Ollama 托管的 LLM)被限制为 2048 个标记的上下文窗口。这意味着您检索到的数据中只有一小部分会实际被使用。

✅ 解决方案:

  • 🛠️ 扩展模型的上下文长度:
    • 导航到 模型编辑器或聊天控制
    • 修改上下文长度(例如,如果支持,增加到 8192+ 个标记)

ℹ️ 注意:2048 个标记的默认值是一个很大的限制因子。为了获得更好的 RAG 结果,我们建议使用支持更长上下文的模型。

✅ 替代方案:使用具有更大上下文容量的外部 LLM

  • 尝试 GPT-4、GPT-4o、Claude 3、Gemini 1.5 或具有 8k+ 上下文的 Mixtral
  • 与 Ollama 比较性能——注意当可以注入更多内容时的准确性差异!

📌 提示:在生产用例中坚持使用外部模型以获得更好的 RAG 性能。


4. 嵌入模型质量低或不匹配 📉🧠

糟糕的嵌入 = 糟糕的检索。如果您内容的向量表示很差,检索器就不会拉取正确的内容——无论您的 LLM 多么强大。

✅ 解决方案:

  • 更改为高质量的嵌入模型(例如,all-MiniLM-L6-v2、Instructor X 或 OpenAI 嵌入)
  • 转到:管理设置 > 文档
  • 更改模型后,确保:
    • ⏳ 重新索引所有现有文档,以便新嵌入生效。

📌 记住:嵌入质量直接影响检索到的内容。


5. ❌ 400: 'NoneType' object has no attribute 'encode'

此错误表示嵌入模型配置错误或缺失。当 Open WebUI 试图创建嵌入但没有加载有效模型时,它无法处理文本——结果就是这个神秘的错误。

💥 原因:

  • 您的嵌入模型没有正确设置。
  • 它可能没有完全下载。
  • 或者如果您使用外部嵌入模型,它可能无法访问。

✅ 解决方案:

  • 转到:管理设置 > 文档 > 嵌入模型
  • 再次保存嵌入模型——即使它已经被选中。这会强制重新检查/下载。
  • 如果您使用远程/外部嵌入工具,确保它正在运行并且 Open WebUI 可以访问它。

📌 提示:修复配置后,尝试重新嵌入一个文档并验证日志中没有显示错误。


🧪 专业提示:使用 GPT-4o 或 GPT-4 测试

如果您不确定问题是否与检索、标记限制或嵌入有关——暂时尝试使用 GPT-4o(例如,通过 OpenAI API)。如果结果突然变得更准确,这是一个强烈的信号,表明您本地模型的上下文限制(Ollama 中默认为 2048)是瓶颈。

  • GPT-4o 处理更大的输入(128k 个标记!)
  • 提供了一个很好的基准来评估您系统的 RAG 可靠性

总结清单 ✅

问题修复
🤔 模型"看不到"内容检查文档提取器设置
🧹 只使用了部分内容启用完整上下文模式或绕过嵌入
⏱ 受 2048 标记上限限制增加模型上下文长度或使用大上下文 LLM
📉 检索不准确切换到更好的嵌入模型,然后重新索引
仍然困惑?使用 GPT-4o 测试并比较输出

通过优化这些方面——提取、嵌入、检索和模型上下文——您可以显著提高 LLM 处理文档的准确性。不要让 2048 标记窗口或弱检索管道阻碍您的 AI 力量 🎯。