欢迎光临
我们一直在努力

【文摘】DeepSeek本地部署与应用开发—OpenWebUI深入剖析之联网搜索

文章目录

  • 8.5 联网搜索引擎
    • 8.5.1 SearXNG介绍
    • 8.5.2 SearXNG安装
    • 8.5.3 SearXNG集成
    • 8.5.4 SearXNG常见问题
      • 1. 问题描述
      • 2. 问题分析
      • 3. 问题解决(临时)
      • 3. 问题解决(永久)
    • 8.5.5 Open WebUI使用联网搜索

本文节选自《DeepSeek本地部署与应用开发:政府与企业级实战案例解析》(北京大学出版社)第8.5章。若希望深入探讨相关内容,诚挚推荐您购买全书,深入阅读。

8.5 联网搜索引擎

众所都知,大模型本身是没有联网功能,DeepSeek之所以能够联网搜索,是因为它在应用层面调用了搜索引擎接口。同理,Open WebUI平台也是在应用层面集成了多种搜索引擎,为用户提供了灵活的配置选项。

Open WebUI基于安全考量,默认情况是关闭联网搜索功能。如果需要Open WebUI开启联网搜索功能,需要手动配置联网搜索引擎。Ope Open WebUI支持多种搜索引擎,包括但不限于SearXNG(开源元搜索引擎)、DuckDuckGo(隐私友好型搜索引擎)、SerpApi(通用搜索引擎API)、SearchApi(多引擎搜索API)、Mojeek(Mojeek搜索引擎)、Kagi(Kagi搜索引擎)、Jina(Jina神经搜索引擎)、Google PSE(Google可编程搜索引擎)、Exa(Exa搜索引擎)、Brave(Brave搜索引擎)、Bing(必应搜索)等等。

大多数的搜索引擎依靠第三方云服务,需要到对应的第三方平台注册账号,创建API项目,获取API密钥,最后将API添加到Open WebUI中才能够使用。

除了DuckDuckGo无需任何额外配置,开箱即用。但是DuckDuckGo 会对频繁的搜索请求进行速率限制,以防止滥用。这就造成很慢的搜索速度,影响用户体验,因此不推荐。

综上所述,笔者推荐的使用SearXNG搜索引擎来扩展Open WebUI的联网搜索功能。

8.5.1 SearXNG介绍

SearXNG是一个开源、隐私优先的元搜索引擎,由SearX分支发展而来,旨在提供更灵活、轻量化的搜索聚合服务。它通过整合多个搜索引擎(如Google、Bing、DuckDuckGo等)的结果,为用户提供去中心化、无追踪的搜索体验。其主要功能特性如下。

  •  隐私保护:不记录用户搜索历史、IP 地址或个人信息。支持 HTTPS 加密,本地处理搜索请求(自托管时)。
  •  高度可定制化:自由添加/删除搜索引擎源(支持 800+引擎)。调整结果排序规则、界面主题、语言等。
  •  去中心化:用户可自建实例(通过 Docker 或手动部署),避免依赖单一服务。支持联合搜索(通过其他 SearXNG 实例扩展结果)。
  •  多平台支持:提供网页端、Android/iOS 应用、浏览器扩展(如 Firefox/Chrome)。

SearXNG工作流程如图8.42所示,主要有5个步骤,其核心设计在保证隐私安全的前提下实现多源搜索聚合。

图8.42  SearXNG工作流程

  • 用户发起搜索请求:用户在SearXNG的搜索框中输入关键词,然后提交搜索请求给SearXNG。
  • SearXNG向多个搜索引擎发送匿名请求:SearXNG接收到用户的搜索请求后,会根据配置文件中的设置,向多个搜索引擎发送匿名请求,这些请求不会携带用户的个人信息,以保护用户隐私。
  • 聚合搜索结果:各个搜索引擎返回搜索结果后,SearXNG会将这些结果进行聚合。
  • 过滤和排序结果:SearXNG会对聚合后的搜索结果进行过滤和排序,去除重复和不相关的内容,并按照一定的规则对结果进行排序。
  • 展示结果给用户:最后,SearXNG将处理后的搜索结果以用户友好的方式展示在搜索结果页面上,用户可以查看和浏览这些结果。
  • 8.5.2 SearXNG安装

    本节将介绍基于Docker安装SearXNG的详细步骤指南。

    (1)打开 Windows PowerShell或者CMD,在其中输入以下命令,拉取SearXNG最新的镜像。

    docker pull searxng/searxng:latest

    (2)打开 Windows PowerShell或者CMD,在其中输入以下命令,启动SearXNG。

    docker run -d –name searxng -p 8080:8080 –restart=unless-stopped searxng/searxng:latest

    •  docker run:创建并启动一个新的 Docker 容器。
    •  -d:让容器在后台以“守护模式”运行。
    •  –name searxng:为容器指定一个名称。
    •  -p 8080:8080:将容器内部的端口映射到宿主机的端口。
    •  –restart unless-stopped:设置容器重启策略:除非手动停止,否则自动重启服务。
    •  searxng/searxng:指定要运行的 Docker 镜像。

    (3)打开 浏览器,访问网址http://localhost:8080/,如图8.43所示,说明SearXNG已成功启动。

    图8.43 SearXNG搜索网页

    8.5.3 SearXNG集成

    本节将介绍将SearXNG集成到 Open WebUI 的详细步骤指南。

    (1)打开Open WebUI平台,如图8.44所示,单击页面左下角管理员账户的头像,依次选择“管理员面板”→“设置”→“联网搜索”即可进入联网搜索设置界面。

    (2)在联网搜索设置界面中,调整“联网搜索引擎”的配置,从下拉菜单中选择“searxng”,并在对应的输入框中填入SearXNG查询URL。

    •  基于Docker启动:“http:// host.docker.internal:8080/search?q=”。
    •  本地服务启动:“http://localhost:8080/search?q=”。

    (3)至于搜索结果数量和并发请求这两个参数,用户可以按需修改。

    (4)单击界面右下角“保存”按钮,即可完成设置。

    图8.44  Open WebUI平台设置联网搜索引擎

    8.5.4 SearXNG常见问题

    1. 问题描述

    首次部署SearXNG后,用户进行搜索时可能遇到图8.45所示的提示:“搜索引擎超时,未找到结果”。具体表现为:查询内容(如“哪吒之魔童闹海”)在多个搜索引擎(如Brave、DuckDuckGo、Google等)中均触发超时。

    图8.45  SearXNG搜索引擎超时,未找到结果问题

    2. 问题分析

    •  网络连通性问题:可能因容器无法稳定访问外部搜索引擎、可能因防火墙规则、可能因DNS解析失败、可能因网络延迟、可能因未正确设置代理服务器等问题导致。
    •  搜索引擎配置问题:可能因某些搜索引擎可能在国内网络环境下无法正常访问,或者配置文件中的搜索引擎列表需要调整。

    3. 问题解决(临时)

    临时解决方案可以快速解决该问题,具体步骤如下。但是,此方法的改动仅存储在浏览器的Cookie中,仅对当前用户生效,其他用户或Open WebUI对接使用SearXNG的时候,这个问题依旧会存在。

    (1)单击SearXNG网页右上角的设置按钮,进入SearXNG首选项界面。

    (2)在SearXNG首选项界面,选择“搜索引擎”页签,并拉到网页最底部。

    (3)如图8.46所示,勾选360search(ZH)、baidu(ZH)、sogou(ZH)等中文搜索引擎,这些搜索引擎在国内网络环境下通常具有更好的访问稳定性。。

    (4)最后,单击网页左下角“保存按钮”,即可完成搜索引擎的修改设置。

    (5)测试验证问题是否解决,再次执行搜索操作,如正常获取到搜索结果(如图8.47所示),则表明问题已解决。

    图8.46  SearXNG获取到搜索结果

    图8.47  SearXNG获取到搜索结果

    3. 问题解决(永久)

    永久解决该问题的方案的具体步骤如下,该方案通过修改SearXNG的配置文件从根本上解决该问题。

    (1)如图8.48所示,打开Docker Desktop软件,选中SearXNG容器,单击“Action” →“View files”,进入SearXNG容器的文件浏览器。

    图8.48  打开SearXNG容器的文件浏览器

    (2)如图8.49所示,在SearXNG容器的文件浏览器中,找到“/etc/searxng/settings.yml”文件,选中并右键选择“Edit file”按钮,打开SearXNG设置文件进行修改。

    图8.49  编辑SearXNG容器中的文件

    (3)在“/etc/searxng/settings.yml”文件中搜索“baidu”和“360”字眼,找到并将“disable”字段的值改成“false”,或者直接删掉“disable”字段和值,如下代码所示。

    – name: baidu
    baidu_category: general
    categories: [general]
    engine: baidu
    shortcut: bd
    disabled: false

    – name: 360search
    engine: 360search
    shortcut: 360so
    disabled: false

    8.5.5 Open WebUI使用联网搜索

    在Open WebUI平台使用联网搜索功能时,只需要打开对话输入框下方“联网搜索”按钮,如图8.50所示,即可开启或者关闭该功能。

    需要注意的是,此功能需要在每个聊天中手动开启或关闭,并且设置仅在当前会话中有效。例如,刷新页面或切换到其他聊天时,设置会自动关闭,这样设计的目的是为了更好地保护用户数据的隐私和安全。

    图8.50  Open WebUI平台联网搜索功能开关

    Open WebUI使用联网搜索功能的实际应用示例,如图8.51所示,我们通过咨询DeepSeek同一个问题“帮忙查询下哪吒之魔童闹海的实时票房是多少”,来测试在打开和关闭联网搜索功能时,DeepSeek给出的回复差异。

    •  未打开“联网搜索”开关,DeepSeek无法提供实时票房信息。
    •  打开“联网搜索”开关后,DeepSeek则会联网查询并直接给出正确的实时票房答案。

    图8.51  Open WebUI平台使用联网搜索功能的实际应用示例

    在这里插入图片描述


    本文节选自《DeepSeek本地部署与应用开发:政府与企业级实战案例解析》(北京大学出版社)第8.5章。若希望深入探讨相关内容,我们诚挚推荐您购买全书,深入阅读。

    【新书推荐】《DeepSeek本地部署与应用开发:政府与企业级实战案例解析》 | 北京大学出版社

    若觉得文章对你有帮助,随手『点赞』、『收藏』、『关注』,也是对我的支持。

    赞(0)
    未经允许不得转载:171主机测评 » 【文摘】DeepSeek本地部署与应用开发—OpenWebUI深入剖析之联网搜索
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址