Decentralization? We're still early!

在 OpenWebUI 中使用 text-embedding-3-small等模型实现RAG

A woman sitting in a chair in a room

本文将详细介绍如何在 OpenWebUI 中配置并使用 text-embedding-3-smallBAAI/bge-m3BAAI/bge-large 作为 RAG(Retrieval-Augmented Generation,检索增强生成)系统的嵌入模型,从而实现基于中文文档的问答功能。

一、背景介绍

OpenWebUI 是一个开源的、用户友好的 Web 界面,用于与大型语言模型(LLM)进行交互。它支持多种 LLM,并提供了知识库管理、模型配置等功能。RAG 是一种结合了信息检索和 LLM 的技术,它允许 LLM 利用外部知识库(如文档集合)来回答问题,从而提高答案的准确性和相关性。目前有如下不错的Embedding 模型,可以服务于RAG功能的实现:

  • text-embedding-3-small 是 OpenAI 推出的最新一代文本嵌入模型,它在性能和效率之间取得了很好的平衡。
  • BAAI/bge-m3 是由北京智源人工智能研究院(BAAI)开发的多语言、多功能、多粒度的 Embedding 模型,支持稠密检索、稀疏检索和多向量检索。
  • BAAI/bge-large 是 BAAI 的 bge 系列中一个较大的通用模型。

二、准备工作

在开始之前,你需要确保已完成以下准备工作:

(一) 安装并运行 OpenWebUI

  1. 安装 Docker Desktop: 从 Docker 官网 (https://www.docker.com/products/docker-desktop/ ) 下载并安装 Docker Desktop。
  2. 安装 OpenWebUI: 打开 Docker Desktop,点击底部的“Terminal”按钮,然后输入以下命令并按 Enter 键:bash折叠复制1docker run -d -p 3000:8080 –add-host=host.docker.internal:host-gateway -v openwebui:/app/backend/data –name openwebui –restart always ghcr.io/open-webui/openwebui:main(如果你有 NVIDIA GPU,可以使用 --gpus all 选项启用 GPU 加速,具体命令请参考之前的说明。)
  3. 访问 OpenWebUI: 打开浏览器,访问 http://localhost:3000,你应该能看到 OpenWebUI 的登录界面。首次使用需要创建账户。

(二) 安装并运行 Ollama (可选, 如果使用本地LLM和开源Embedding模型)

  1. 安装 Ollama: 从Ollama官网(https://ollama.com/ )下载并安装。
  2. 下载模型:
    • 下载你选择的 LLM (例如 llama3, qwen, mistral 等):bash折叠复制1ollama run llama3
    • 如果你需要使用BAAI/bge-m3BAAI/bge-large, 请下载:bash折叠复制123ollama run bge-m3# 或者ollama run bge-large

(三) 准备中文文档

你需要准备好要用作知识库的中文文档。这些文档可以是 TXT、PDF、Markdown 等格式。如果你使用 Zotero,可以直接上传 Zotero 存储文件夹中的 PDF 文件,或者使用 Zotero API 或 ZoteroBetterNotes 插件将文献导出为 TXT 或 Markdown 文件。

三、在 OpenWebUI 中配置 RAG

(一) 创建知识库

  1. 登录 OpenWebUI。
  2. 点击左侧导航栏中的 “Workspace”,然后选择 “Knowledge”。
  3. 点击 “+” 按钮创建一个新的知识库。
  4. 为知识库命名(例如,“我的中文文档库”)。
  5. 点击新知识库中的 “+” 按钮,上传你的文档。
    • 如果你有多个文件或文件夹,可以选择 “Upload Directory”。
    • 如果你已经通过其他方式提取了文本,可以将文本保存为 TXT 文件,然后上传。

(二) 配置 RAG 嵌入模型

  1. 点击左侧导航栏中的头像, 然后选择”Admin Panel”
  2. 在”Admin Panel”中, 选择 “Settings”.
  3. 在 “Settings” 页面, 选择”Documents” 选项卡。

使用 text-embedding-3-small (推荐):

  • 确认 “RAG Embedding Engine” 设置为 “openai”。
  • 在 “RAG Embedding Model” 字段中,输入 text-embedding-3-small
  • 在 “API Key” 字段中输入你的 OpenAI API 密钥。
  • 点击 “Save” 保存设置。

使用 BAAI/bge-m3BAAI/bge-large (开源选项):

  • 确认 “RAG Embedding Engine” 设置为 “ollama”。
  • 在 “RAG Embedding Model” 字段中,输入 bge-m3bge-large
  • 点击 “Save” 保存设置。
  • 提示: * BAAI/bge-m3 支持多语言、多功能和多粒度嵌入,适合需要处理多种语言、长文本或需要多种检索方式(稠密、稀疏、多向量)的场景。 * BAAI/bge-large是一个较大的通用模型, 在资源允许的情况下, 可以提供更好的性能。 * 这两个开源模型都可能受到本地服务器性能的影响。 如果你的服务器性能有限,或者处理大量文档时遇到速度慢的问题,建议优先使用 text-embedding-3-small

(三) 创建或选择 LLM 模型配置

  1. 点击左侧导航栏中的 “Models”。
  2. 你可以:
    • 创建一个新的模型配置(点击 “+” 按钮)。
    • 选择一个现有的模型配置。
  3. 在模型配置中:
    • 选择一个基础 LLM (Base Model)。
      • 如果使用 text-embedding-3-small,可以选择 OpenAI 的模型(如 gpt-3.5-turbogpt-4)或其他支持的 LLM。
      • 如果使用 BAAI/bge-m3BAAI/bge-large,可以选择通过 Ollama 下载的本地 LLM(如 Llama 3、Mistral、Qwen 等)。
    • 在 “Knowledge” 部分,选择你之前创建的包含你的文档的知识库。
    • 确保 “Capabilities” 中的 “Citations” 已启用。
    • (可选)调整其他参数,如 “Temperature”、”System Prompt” 等。
    • 点击 “Save”(如果创建了新配置)或 “Save and Update”(如果修改了现有配置)。

四、使用 RAG 进行问答

  1. 点击左侧导航栏中的 “New Chat”。
  2. 选择你配置的模型(在 “Models” 中创建的,或者直接选择基础 LLM)。
  3. 在聊天框中输入你的问题。
  4. 要触发 RAG,请在问题前加上 # 符号,或者在问题中使用 # 加上知识库的名称。例如:
    • # 人工智能在金融领域有哪些应用?
    • #我的中文文档库 请总结关于 Transformer 模型的最新研究。
  5. OpenWebUI 将:
    • 使用你选择的嵌入模型(text-embedding-3-smallbge-m3bge-large)将你的问题转换为向量。
    • 在你的知识库中搜索与问题向量相关的文档片段。
    • 将检索到的文档片段作为上下文提供给基础 LLM。
    • LLM 根据上下文生成答案,并在 OpenWebUI 中显示,并附带引用的文档来源。

五、注意事项

  • OpenAI API 密钥: 如果使用 text-embedding-3-small,你需要一个 OpenAI API 密钥,并且需要付费使用。
  • OpenWebUI 和 Ollama 版本: 确保你使用的是最新版本的 OpenWebUI 和 Ollama(如果使用),以获得最佳的 RAG 支持和 bug 修复。
  • 首次查询: 第一次查询可能需要较长时间,因为 OpenWebUI 需要初始化嵌入模型并建立索引。
  • 中文支持: OpenWebUI 的界面已经支持中文。
  • 文档分块: 为了获得最佳的 RAG 效果,建议将长文档分割成适当大小的块。你可以手动分块,或者依赖 OpenWebUI 的自动分块功能(但其分块策略可能比较简单)。
  • 持续学习: OpenWebUI、Ollama、LLM 和 Embedding 模型领域都在快速发展,请关注官方文档和社区,了解最新的功能和最佳实践。
  • bge-m3 的特殊性: 如果你使用 bge-m3,请注意它支持多种检索方式。OpenWebUI 默认可能使用稠密检索。如果你需要使用稀疏检索或多向量检索,可能需要更高级的配置或自定义集成。

六、总结

通过以上步骤,你可以在 OpenWebUI 中成功配置并使用 text-embedding-3-smallBAAI/bge-m3BAAI/bge-large 作为 RAG 的嵌入模型,实现基于中文文档的智能问答。

  • text-embedding-3-small 是 OpenAI 的最新模型,性能和效率俱佳,但需要付费使用。
  • BAAI/bge-m3 是一个多语言、多功能、多粒度的开源模型,适合更复杂的应用场景。
  • BAAI/bge-large 是一个较大的通用模型, 在资源允许的情况下, 可以提供更好的性能。

请根据你的实际需求和资源情况选择合适的嵌入模型。OpenWebUI 简化了 RAG 系统的搭建过程,使你可以轻松地将 LLM 与你的私有知识库连接起来。 如果你需要更高级的 RAG 功能(如更精细的文档解析、元数据处理、自定义检索策略等),可以考虑使用 LangChain 或 LlamaIndex 等专业的 RAG 框架。

作为非营利站点,基地的建设离不开大家的捐助支持。在Cardano钱包(如Lace、Eternl 等)中输入 ADA Handle 名称$brave2049,即可为基地提供小额捐助。为支持Cardano治理和基地建设,亦欢迎将Cardano链上治理权限委托给Brave(Brave的Cardano链上治理DRep信息)

相關文章

RAG 系统配置与优化:从入门到精通

RAG 技术为 AI 聊天机器人带来了“知识外挂”,让它们能够给出更准确、更可靠的答案。通过合理配置和优化 RAG 系统,我们可以充分发挥其潜力。Open WebUI 等工具的出现,让构建和使用 RAG 变得更加简单。随着 RAG 技术的不断发展,我们有理由相信,AI 将在更多领域为我们提供更智能的服务。

回复