本文主要研究一下如何使用OpenWebUI+deepseek构建本地AI知识库

步骤

拉取open-webui镜像

docker pull ghcr.io/open-webui/open-webui:main

docker启动

docker run -d -p 3000:8080 \
-e OLLAMA_BASE_URL=http://host.docker.internal:11434 \
ghcr.io/open-webui/open-webui:main
执行完之后等一会(大概要三四分钟)启动起来了访问http://localhost:3000/,注册管理员账号,注册完要等一会(估计要七八分钟)页面才出来
可以-v ./open-webui-data:/app/backend/data来挂载数据

看日志是有报错

ERROR [open_webui.routers.openai] Connection error: Cannot connect to host api.openai.com:443 ssl:default [Connect call failed ('108.160.165.173', 443)]
ERROR [open_webui.routers.openai] Connection error: Cannot connect to host api.openai.com:443 ssl:default [Connect call failed ('108.160.165.173', 443)]
ERROR [open_webui.routers.openai] Connection error: Cannot connect to host api.openai.com:443 ssl:default [Connect call failed ('108.160.165.173', 443)]
ERROR [open_webui.routers.openai] Connection error: Cannot connect to host api.openai.com:443 ssl:default [Connect call failed ('108.160.165.173', 443)]
INFO  [open_webui.routers.ollama] get_all_models()
INFO  [open_webui.routers.ollama] get_all_models()
INFO  [open_webui.routers.ollama] get_all_models()
INFO  [open_webui.routers.ollama] get_all_models()
登录之后,设置 --> 管理员设置 --> 外部链接,禁用掉OpenAI API,记得保存

开启联网搜索

在设置 --> 管理员设置 --> 联网搜索 --> 启用,然后下拉选择,这里选择tavily,可以去https://app.tavily.com/注册然后获取api key,最后点击保存就可以了

示例:今天日期是多少,看open-webui输出

INFO  [open_webui.routers.retrieval] save_docs_to_vector_db: document 在线时钟:当前时间, 世界时钟 :: 美国 (United States) - 当前时间, 今天日期, 今天的日期 🇨🇳, 现在北京时间 在线标准北京时间校对 web-search-d8b3e7117d85062f511572e3004ad60997448e8ed9e9b7e3bac5
INFO  [open_webui.routers.retrieval] adding to collection web-search-d8b3e7117d85062f511572e3004ad60997448e8ed9e9b7e3bac5
/pytorch/third_party/ideep/mkl-dnn/src/cpu/aarch64/xbyak_aarch64/src/util_impl_linux.h, 451: Can't read MIDR_EL1 sysfs entry
INFO  [open_webui.retrieval.utils] query_doc:result [['7ee3e76c-7804-4eb7-8dbb-7ca27b0a54ca', 'ef5b7e5c-8a7e-4220-800e-9390e9808034', '97e23c2b-43f7-457a-a086-8b264acb90e8']] [[{'description': '世界时间 - 美国 (United States) - 现在世界各地是什么时间?', 'embedding_config': '{"engine": "", "model": "sentence-transformers/all-MiniLM-L6-v2"}', 'language': 'zh', 'source': 'https://24timezones.com/美国/时间', 'start_index': 3508, 'title': '世界时钟 :: 美国 (United States) - 当前时间'}, {'description': '根據您所在的位置找出今天是什麼日期。了解格式為 mm-dd-yyyy 的確切數字日期。', 'embedding_config': '{"engine": "", "model": "sentence-transformers/all-MiniLM-L6-v2"}', 'language': 'zh', 'source': 'https://thetimecalculator.org/zh/today-date', 'start_index': 1773, 'title': '今天日期'}, {'description': '世界时间 - 美国 (United States) - 现在世界各地是什么时间?', 'embedding_config': '{"engine": "", "model": "sentence-transformers/all-MiniLM-L6-v2"}', 'language': 'zh', 'source': 'https://24timezones.com/美国/时间', 'start_index': 2775, 'title': '世界时钟 :: 美国 (United States) - 当前时间'}]]

结果如下:
根据上下文中的信息,今天的日期是 星期一, 二月 17, 2025 [source_id=1]。

知识库管理

  • 设置 --> 管理员设置 --> 文档 --> 语义向量模型引擎 改为ollama, 语义向量模型改为bge-m3:latest
  • 工作空间 --> 知识库,点击+号上传文档
  • 使用时需要在聊天框通过#来指定知识库
  • 设置 --> 管理员设置 --> 数据库 --> 下载数据库,可以导出sqlite数据

小结

整体体验是docker部署起来,页面展示有点慢,联网搜索一开始选择serply不生效,换成tavily可以生效,但是国内的搜索引擎还不支持。对于知识库方面,可以上传文档和目录,聊天窗口可以指定使用哪个知识库,也可以同时开启联网搜索,整体效果还可以,可以同时引用知识库和搜索引擎的检索结果,看日志还会保存到向量数据库(save_docs_to_vector_db)。

doc


codecraft
11.9k 声望2k 粉丝

当一个代码的工匠回首往事时,不因虚度年华而悔恨,也不因碌碌无为而羞愧,这样,当他老的时候,可以很自豪告诉世人,我曾经将代码注入生命去打造互联网的浪潮之巅,那是个很疯狂的时代,我在一波波的浪潮上留下...