Skip to main content

检索增强生成 (RAG) 支持

warning

如果您使用的是 Ollama,请注意其 默认上下文长度为 2048 个 token。这会严重限制 检索增强生成 (RAG) 的性能,尤其是在进行网页搜索时,因为检索到的数据可能 完全无法使用 或只能被部分处理。

检索增强生成 (RAG) 是一种尖端技术,通过引入来自不同来源的上下文来增强聊天机器人的对话能力。它的工作原理是从广泛的来源(如本地和远程文档、网页内容,甚至是 YouTube 视频等流媒体来源)中检索相关信息。检索到的文本随后会与预定义的 RAG 模板结合,并作为前缀添加到用户的提示词中,从而提供更具参考价值且与上下文相关的响应。

RAG 的核心优势之一是它能够访问并集成来自多种来源的信息,使其成为处理复杂对话场景的理想解决方案。例如,当用户提出与特定文档或网页相关的问题时,RAG 可以从该来源检索并整合相关信息到聊天响应中。RAG 还可以从 YouTube 视频等流媒体来源检索并整合信息。通过分析这些视频的转录文本或字幕,RAG 可以提取相关信息并将其整合到聊天响应中。

本地和远程 RAG 集成

本地文档必须首先通过工作区区域的“文档”部分上传,然后才能在查询前使用 # 符号进行访问。点击聊天框上方出现的格式化 URL。选中后,发送消息 按钮上方会出现一个文档图标,表示检索成功。

您还可以通过在提示词开头输入 # 后跟 URL,将文档加载到工作区并进行访问。这有助于将网页内容直接整合到您的对话中。

用于 RAG 的网页搜索

warning

针对 Ollama 用户的上下文长度警告: 网页内容即使在提取后,通常也包含 4,000 到 8,000+ 个 token,其中包括主体内容、导航元素、页眉、页脚和元数据。如果只有 2048 个 token 的可用空间,您只能获取不到一半的页面内容,且往往会错过最相关的信息。即使是 4096 个 token,对于全面的网页内容分析也经常显得不足。

解决方法: 导航至 管理员面板 > 模型 > 设置(针对您的 Ollama 模型)> 高级参数,并将 上下文长度增加到 8192+(甚至 16000 以上)个 token。此设置专门适用于 Ollama 模型。对于 OpenAI 和其他集成模型,请确保您使用的是具有足够内置上下文长度的模型(例如,具有 128k token 的 GPT-4 Turbo)。

对于网页内容集成,请在聊天查询中以 # 开头,后跟目标 URL。点击聊天框上方框中出现的格式化 URL。选中后,发送消息 按钮上方会出现一个文档图标,表示检索成功。Open WebUI 会尽可能地从该 URL 获取并解析信息。

tip

网页通常包含导航和页脚等无关信息。为了获得更好的效果,请链接到页面的原始文本(raw)或阅读器友好版本。

RAG 模板自定义

可以在 管理员面板 > 设置 > 文档 菜单中自定义 RAG 模板。

RAG 嵌入支持

可以直接在 管理员面板 > 设置 > 文档 菜单中更改 RAG 嵌入模型。此功能支持 Ollama 和 OpenAI 模型,使您能够根据需求增强文档处理能力。

RAG 功能中的引用

RAG 功能允许用户通过添加参考点引用,轻松跟踪提供给 LLM 的文档上下文。这确保了在聊天中使用外部来源时的透明度和可靠性。

增强型 RAG 流水线

我们的 RAG 嵌入功能包含可切换的混合搜索子功能,通过 BM25 增强 RAG 功能,并由 CrossEncoder 提供重排序支持,同时还支持可配置的相关性评分阈值。这为您的特定用例提供了更精确、更量身定制的 RAG 体验。

YouTube RAG 流水线

通过视频 URL 总结 YouTube 视频的专用 RAG 流水线,能够直接与视频转录文本进行顺畅交互。这一创新功能允许您将视频内容整合到聊天中,进一步丰富您的对话体验。

文档解析

多种解析器可从本地和远程文档中提取内容。欲了解更多信息,请参阅 get_loader 函数。

临时聊天限制

使用 临时聊天 时,文档处理仅限于 前端 操作,以确保您的数据保持私密且不存储在服务器上。因此,高级后端解析(用于处理复杂 DOCX 文件等格式)将被禁用,这可能导致看到的是原始数据而非解析后的文本。如需完整的文档支持,请使用标准聊天会话。

Google Drive 集成

当与启用了 Google Picker API 和 Google Drive API 的 Google Cloud 项目关联时,此功能允许用户直接从聊天界面访问其云端硬盘文件,并上传文档、幻灯片、表格等作为聊天的上下文。可以在 管理员面板 > 设置 > 文档 菜单中启用。必须设置 GOOGLE_DRIVE_API_KEY 和 GOOGLE_DRIVE_CLIENT_ID 环境变量才能使用。

详细步骤

  1. 创建一个 OAuth 2.0 客户端,并将“已授权的 JavaScript 来源”和“已授权的重定向 URI”配置为您访问 Open-WebUI 实例所使用的 URL(如果有端口请包含端口)。
  2. 记录下与该 OAuth 客户端关联的“客户端 ID”。
  3. 确保为您的项目启用了 Google Drive API 和 Google Picker API。
  4. 将您的应用(项目)设置为“测试”状态,并将您的 Google Drive 电子邮件添加到“用户列表”中。
  5. 设置权限范围,包含这些 API 提供的所有内容。由于应用处于“测试”模式,Google 不需要验证即可允许应用访问有限测试用户的数据。
  6. 前往 Google Picker API 页面,点击“创建凭据”按钮。
  7. 创建一个 API 密钥,在“应用限制”下选择“网站”。然后添加您的 Open-WebUI 实例 URL,设置与第 1 步中的“已授权的 JavaScript 来源”和“已授权的重定向 URI”相同。
  8. 为该 API 密钥设置“API 限制”,使其仅能访问 Google Drive API 和 Google Picker API。
  9. 设置环境变量 GOOGLE_DRIVE_CLIENT_ID 为第 2 步中 OAuth 客户端的客户端 ID。
  10. 设置环境变量 GOOGLE_DRIVE_API_KEY 为第 7 步中生成的 API 密钥值(注意:不是第 2 步中的 OAuth 客户端密钥)。
  11. 设置 GOOGLE_REDIRECT_URI 为您的 Open-WebUI 实例 URL(如果有端口请包含端口)。
  12. 使用这三个环境变量重新启动您的 Open-WebUI 实例。
  13. 重启后,确保在 管理员面板 < 设置 < 文档 < Google Drive 下启用了 Google Drive。