跳到主要内容

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

检索增强生成(RAG)通过检索相关信息并将其馈送给模型,使语言模型能够基于外部内容——文档、知识库等——进行推理。但当结果不如预期时(例如,模型“产生幻觉”或遗漏相关信息),这往往不是模型本身的错,而是上下文问题。

让我们分解常见原因和解决方案,以便您能大幅提升 RAG 的准确性!🚀

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

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

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

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

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

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


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

Open WebUI 默认设计用于处理上下文窗口有限的模型。例如,许多本地模型(如 Ollama 的默认模型)被限制在 2048 个 token。因此,Open WebUI 会积极地截断检索到的内容,使其适合假定的可用空间。

✅ 解决方案

  • 前往 管理员设置 > 文档
  • 或者
    • 💡 启用“绕过嵌入和检索”——这将直接发送完整内容,不应用严格的检索过滤器。
    • 🔍 切换到“完整上下文模式”——这会将更全面的内容注入模型提示词中。

📌 警告:请注意上下文限制——如果您的模型无法处理更多 token,内容仍会被截断。


3. Token 限制过短 ⏳

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

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

✅ 解决方案

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

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

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

  • 尝试使用支持 8k+ 上下文的 GPT-4、GPT-4o、Claude 3、Gemini 1.5 或 Mixtral
  • 将性能与 Ollama 进行比较——注意在注入更多内容时准确性的差异!

📌 提示:在生产用例中,为了获得更好的 RAG 性能,建议使用外部模型。


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

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

✅ 解决方案

  • 更换为高质量的嵌入模型(例如,all-MiniLM-L6-v2、Instructor X 或 OpenAI 嵌入模型)
  • 前往:管理员设置 > 文档
  • 更改模型后,请务必
    • ⏳ 重新索引所有现有文档,使新的嵌入生效。

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


5. ❌ 400: 'NoneType' 对象没有属性 'encode'

此错误表明嵌入模型配置错误或缺失。当 Open WebUI 尝试创建嵌入但未加载有效的模型时,它无法处理文本——从而导致此神秘的错误。

💥 原因

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

✅ 解决方案

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

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


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

如果您不确定问题是出在检索、token 限制还是嵌入上——可以尝试临时使用 GPT-4o(例如通过 OpenAI API)。如果结果突然变得更准确,则强烈表明您本地模型的上下文限制(Ollama 中默认为 2048)是瓶颈。

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

总结清单 ✅

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

通过优化这些方面——提取、嵌入、检索和模型上下文——您可以显著提高您的 LLM 处理文档的准确性。不要让 2048 token 的窗口或弱检索流水线限制了您的 AI 的强大能力 🎯。