前言
之前写过一篇 openwebui 和博查结合的 deepseek 联网教程,但是考虑到灵活性、安全性和成本问题,还是决定自己搭一个全部本地私有化的,用 langchain 框架进行开发,通篇代码都在教程里,不夹私货~
一、准备环境
- ollama,用于在本地运行、部署和管理大型语言模型(LLMs)。
- deepseek 模型,本文用的 deepseek-r1:14b。
- searxXNG,免费的互联网搜索引擎,用户既不被跟踪也不被分析。
- langchain,大语言模型应用程序的开发框架,主要 python 实现。
- flask,python编写的web应用框架,本文主要用来对外提供api。
二、ollama 及 deepseek 部署安装
之前写过类似教程,这里就不在写了,传送门:
保姆级教程 本地部署 deepseek + ollama + open-webui + cuda + cudnn
ollama导出导入模型 解决下载模型慢问题 deepseek + ollama + Cherry Studio 客户端(离线部署)
三、searxXNG 部署安装
- 基于 docker 安装,先去下载需要的配置文件,地址:https://github.com/searxng/searxng-docker
- 下载完,进到根目录,修改以下内容:
① 修改 docker-compose.yaml 的端口,开放外网访问(公网服务器还是要限制下,白名单或者代理之类的):

② 修改 Caddyfile 文件的默认 80 和 443 端口,Caddy除了应用的端口外,默认还会监听 80 和 443,为了防止和别的软件冲突,这里还是修改下:

③ 应用端口可以看自己情况调整,保持和 docker-compose 里面的一致:

④ 修改 searxng 目录下的 settings.yml 的内容
- secret_key 随便改一个
- limiter 改为 false,否定通过 api 会访问不了
- 添加 json 格式,方面 api 调用
# see https://docs.searxng.org/admin/settings/settings.html#settings-use-default-settings
use_default_settings: true
server:
# base_url is defined in the SEARXNG_BASE_URL environment variable, see .env and docker-compose.yml
secret_key: "admin@123456" # change this!
limiter: false # can be disabled for a private instance
image_proxy: true
search:
formats:
- html
- json
ui:
static_use_hash: true
redis:
url: redis://redis:6379/0
⑤ 构建并启动镜像,执行命令:
docker-compose up -d
访问localhost:8080,如下:

在网页上要想正常使用,还需在配置下,点击右上角首选项:



搜索引擎好多国外的,国内用不了,所以只要勾选国内能用的,如下:


配置完之后点保存就可以正常使用了


三、开发环境准备
本文使用的 conda 管理 python 环境,创建一个 langchain 的虚拟机环境
conda create -n langchain python=3.11
使用 langchain 虚拟环境
conda activate langchain
切换pip镜像源
pip config set global.index-url https://mirrors.aliyun.com/pypi/simple
本文用的到依赖都在存在 requirements.txt 里面,如下:
aiohappyeyeballs==2.4.6
aiohttp==3.11.12
aiosignal==1.3.2
annotated-types==0.7.0
anyio==4.8.0
attrs==25.1.0
beautifulsoup4==4.13.3
blinker==1.9.0
certifi==2025.1.31
charset-normalizer==3.4.1
click==8.1.8
colorama==0.4.6
dataclasses-json==0.6.7
faiss==1.9.0
Flask==3.1.0
frozenlist==1.5.0
greenlet==3.1.1
h11==0.14.0
html2text==2024.2.26
httpcore==1.0.7
httpx==0.28.1
httpx-sse==0.4.0
idna==3.10
itsdangerous==2.2.0
Jinja2==3.1.6
jsonpatch==1.33
jsonpointer==3.0.0
langchain==0.3.20
langchain-community==0.3.19
langchain-core==0.3.41
langchain-experimental==0.3.4
langchain-ollama==0.2.3
langchain-text-splitters==0.3.6
langsmith==0.3.8
MarkupSafe==3.0.2
marshmallow==3.26.1
mkl-service==2.4.0
multidict==6.1.0
mypy-extensions==1.0.0
ollama==0.4.7
orjson==3.10.15
propcache==0.2.1
pydantic==2.10.6
pydantic-settings==2.8.1
pydantic_core==2.27.2
pypdf==5.3.1
python-dotenv==1.0.1
PyYAML==6.0.2
requests==2.32.3
requests-toolbelt==1.0.0
sniffio==1.3.1
soupsieve==2.6
SQLAlchemy==2.0.38
tenacity

最低0.47元/天 解锁文章
1680

被折叠的 条评论
为什么被折叠?



