惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

酷 壳 – CoolShell
酷 壳 – CoolShell
H
Hacker News: Front Page
P
Palo Alto Networks Blog
T
ThreatConnect
Apple Machine Learning Research
Apple Machine Learning Research
博客园_首页
T
True Tiger Recordings
P
Privacy & Cybersecurity Law Blog
B
Blog
IT之家
IT之家
Last Week in AI
Last Week in AI
F
Full Disclosure
Hacker News: Ask HN
Hacker News: Ask HN
C
Comments on: Blog
Microsoft Azure Blog
Microsoft Azure Blog
C
Cybersecurity and Infrastructure Security Agency CISA
Microsoft Security Blog
Microsoft Security Blog
博客园 - 【当耐特】
N
News and Events Feed by Topic
NISL@THU
NISL@THU
腾讯CDC
雷峰网
雷峰网
Security Latest
Security Latest
李成银的技术随笔
M
Microsoft Research Blog - Microsoft Research
L
LangChain Blog
L
Lohrmann on Cybersecurity
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
C
Check Point Blog
Y
Y Combinator Blog
Recent Announcements
Recent Announcements
博客园 - Franky
N
News | PayPal Newsroom
V
V2EX
A
About on SuperTechFans
The Register - Security
The Register - Security
月光博客
月光博客
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Google Online Security Blog
Google Online Security Blog
MyScale Blog
MyScale Blog
Cisco Talos Blog
Cisco Talos Blog
Vercel News
Vercel News
WordPress大学
WordPress大学
C
Cyber Attacks, Cyber Crime and Cyber Security
The Hacker News
The Hacker News
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
爱范儿
爱范儿
A
Arctic Wolf
L
LINUX DO - 最新话题
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More

博客园 - Leo_Xu

别再当“社会NPC”:Human 3.0 时代的 5 个颠覆性进化指南 一招解决antigravity登录账号区域限制问题 2026年是 AI落地大年,但会淘汰一批AI PPT工具 AI编码工具Skills.md全网资源检索报告【商业化产品需求分析、竞品分析和可行性研究】 AI编码工具Skills快速参考指南 【实操】AI 编程新体验:从 Antigravity 爬虫实战到自动配图生成博文 (本文由Antigravity自动生成) 公众号订阅RSS 我至今用到最好的Claude Code Skills,让Agent把重复动作都做成工作流 一文带你看懂,火爆全网的Skills到底是个啥。【转载】 AnyGen 全方位使用手册:从语音笔记到专业报告,字节跳动出品的 AI 工作空间深度评测 字节悄悄上线的AnyGen,藏着5个颠覆你对AI工具想象的野心 谷歌NotebookLM不止是笔记工具:你绝对想不到的5个神级功能 狠人专用!Gemini 3.0 Pro“压榨式”使用指南(附神级指令) Mac电脑部署n8n 商业战略-四维度分析 Windows 10 专属 MaxKB 部署教程(含避坑指南) 【AI概念普及】一文帮你打通:AI, 机器学习, 大模型, LLM, Agent 都是啥关系? 轻型民用无人驾驶航空器安全操控(理论考试完整笔记) 8类个性天赋认知工具:MBTI、盖洛普优势、命理工具、玛雅历、九大天赋模型....
基于 Dify + Ollama 搭建私有化知识问答助手
Leo_Xu · 2026-01-19 · via 博客园 - Leo_Xu

你是否也有过这样的经历:当汽车仪表盘上突然跳出一个陌生的黄色故障灯,或者你想调整后视镜的倒车下翻功能,却不得不从副驾手套箱里翻出那本厚达 400 页、封皮都快粘连的《用户使用手册》。你试图在目录中寻找关键词,翻到第 218 页,却发现还有“参见第 56 页”的跳转。在那一刻,你一定希望有一个懂行的老司机坐在旁边,你只需问一句:“这个像茶壶一样的灯亮了是什么意思?”,他就能立马告诉你答案。在 AI 大模型时代,这个愿望已经可以零成本实现。今天这篇博客,将带大家实战一个非常典型的 RAG(检索增强生成) 场景:利用开源工具 Dify 和本地大模型工具 Ollama,搭建一个能够完全读懂你汽车手册的 AI 智能体。完成后,不仅可以通过 Web 界面与它对话,还能通过 Python API 将其集成到其他应用中。

为什么选择 Dify + Ollama

在开始动手之前,先聊聊为什么选择这套技术栈。市面上有很多构建 AI 应用的方法,比如像之前博客介绍的那样直接用 LangChain 手搓,或者使用云端的 API,但对于不懂编程、不懂技术的用户,Dify + Ollama 是目前性价比最高、上手最快的选择。

Ollama:之前已经介绍过了,它是目前在本地运行大语言模型(LLM)最简单的工具。不需要复杂的环境配置,不需要研究 PyTorch,只需一行命令,就能在 PC 上运行 Llama 3、Qwen 3 等开源模型,最重要的是,它是本地化的,隐私绝对安全。

Dify:如果说 Ollama 提供了“大脑”,那么 Dify 就提供了“身体”和“四肢”,使模型具备了一些“能力”。Dify 是一个开源的 LLM 应用开发平台,它解决了 LLM 开发中最常见的问题:知识库的切片与索引、Prompt 的编排、上下文记忆的管理,以及对外提供标准的 API 接口。它是低代码的,几乎不需要写代码就能搭出一个企业级的 AI 应用。

在接下来的教程中,将完成以下操作:

  • 环境搭建:在本地部署 Ollama 和 Dify。
  • 模型接入:让 Dify 连接上本地运行的 Qwen3 8B 模型和nomic-embed-text向量模型。
  • 知识库构建:上传《用户手册》PDF,通过 RAG 技术让 AI “学会”手册的内容。
  • 智能体编排:调试 Prompt,让它根据用户手册回答问题。
  • API 调用:编写 Python 脚本调用搭建好的智能体,实现问答。

操作用到的用户手册可在此处下载:https://oss.mpdoc.com/doc/2026/01/10/CA60DABA002540C5894B85DA2DB46E14.pdf?attname=BMW_用户手册_01405A7D339.pdf

Ollama 命令行部署

用 Homebrew 安装

  1. 安装/更新 Homebrew 后执行:

    brew update brew install ollama

  2. 启动服务并验证:

    ollama serve

    # 另开一个终端 ollama -v ollama list

Dify 本地容器化部署

为了保证环境的纯净和易于管理,官方推荐使用 Docker Compose 进行部署。首先,确保你的机器上安装了 Docker 和 Docker Compose(https://www.docker.com)。下面需要将 Dify 的代码仓库下载到本地。

在命令行中执行以下命令:

  • mkdir dify-projects
  • cd dify-projects
  • git clone https://github.com/langgenius/dify.git
  • cd dify/docker
  • docker-compose up -d

Dify 是一个完整的应用架构,包含前端、后端、数据库(PostgreSQL)、缓存(Redis)和向量数据库(Weaviate/Qdrant)等多个组件。手动安装这些组件非常繁琐,但通过 Docker Compose,可以一键拉起所有服务。

打开浏览器,访问 http://localhost/,你将看到 Dify 的初始化引导界面。在这里设置你的管理员账号和密码。设置完成后,即可登录进入 Dify。

image

模型接入与知识库 RAG 构建

环境搭建完毕后,目前的 Dify 还是一个“空壳”。下面需要做两件事:

  1. 把 Ollama 的模型接入 Dify,让它拥有对话和理解能力;
  2. 把《用户手册》喂给它,构建向量知识库。

准备 Embedding 模型

在构建知识库时,除了对话模型,还需要一个专门的 Text Embedding(文本向量化)模型。之前的博客已经介绍了 Embedding 的概念,简单来说,它的作用是把手册里的文字变成计算机能理解的“数字向量”。

打开命令行,拉取轻量级向量模型 ollama pull nomic-embed-text

image

在 Dify 中添加 Ollama 模型供应商

回到 Dify 的网页界面:

  1. 点击右上角的 头像 -> 设置 -> 模型供应商
  2. 找到 Ollama 卡片,点击“安装”。
  3. 安装完成后,点击 Ollama 卡片中的“添加模型”。

image

这里需要添加两次:

第一次:添加 LLM(对话模型)

  • 模型名称:qwen3:8b(必须与你在命令行 ollama list 查看到的名称完全一致)
  • 模型类型:LLM
  • 基础 URL:http://host.docker.internal:11434(Docker 容器访问宿主机的地址)

image

image

第二次:添加 Text Embedding(向量模型)

image

如果保存时提示“Error”,请检查 Ollama 能否通过 URL http://localhost:11434 访问,或者 Docker 网络配置和防火墙设置。

构建知识库

  1. 点击顶部导航栏的 知识库 -> 创建知识库

    image

  2. 上传文档:选择“导入已有文本”,将 用户手册.pdf 拖进去,点击“下一步”。

    image

  3. 分段(Chunk)设置:这里需要配置如何将 PDF 拆解成小段落,方便后续检索。
    11
    • 分段标识符:文档段落之间是怎样分隔的。\n 表示换行符,例如此处上传的文档段落之间就是通过换行符分隔的,有些时候可能会使用双换行符 \n\n,即两个段落之间有一个空行。
      12
    • 最大分段长度:决定了 AI “一口吃多少东西”。如果设置得太小,知识库会被切得过碎,影响检索效果;如果设置得太大,AI 可能无法有效利用上下文。
    • 分段重叠长度*:相邻段落之间重叠的字符数,有助于保持上下文连续性。
    • 使用 Q&A 分段:如果你的文档是“问答”类型的,开启此选项可以让 Dify 识别问答对,提升检索效果。
  4. 索引方式:选择 “高质量”,这会调用刚才配置的 nomic-embed-text 模型进行向量化处理。
    13
  5. 点击 “保存并处理”。

此时,Dify 会将几百页的 PDF 拆解成小段,转换成向量,并存入内置的向量数据库中。根据文档大小,这可能需要较长的时间。 

image

image

检索测试

不要急着去创建聊天助手,先确认知识库“懂了”没有。在知识库详情页的左侧,找到 召回测试 按钮。这里可以模拟检索过程。例如输入测试文本:“如何打开远光灯?”,点击 测试,系统会展示它从手册中找到的最相关的几个段落。如果结果不准,说明分段可能切得太碎了,或者 PDF 解析乱码。这时需要回到 设置 中调整分段规则重新索引。

image

构建智能体应用

如果说知识库是 AI 的“图书馆”,那么 智能体编排(Orchestration) 就是给 AI 制定“员工手册”。需要告诉 AI:你现在的身份是什么?你应该怎么查阅资料?遇到不知道的问题该怎么回答?在 Dify 中,这一步不需要写代码,全程可视化操作。

创建应用

回到 Dify 首页的 工作室,点击 创建应用 按钮。应用类型选择 Chatflow,并起一个合适的名称。

image

编排界面概览

进入应用后,会看到一个左右分栏的界面:

  • 左侧:编排区,编排 AI 的工作流程。默认创建了一个包含 LLM 节点的最简单对话流程。
  • 右侧:调试区,用来设置提示词、上下文、开场白等,也可以实时测试 AI 的反应。

image

查询预处理

在实际测试中,你可能会发现 AI 有时候变得“笨笨的”。因为用户的口语表达和手册的书面术语不完全一致,导致检索失败。为了解决这个问题,需要在 AI 去知识库“翻书”之前,先对用户的问题进行“预处理”,也就是提取检索的关键词句。

image

下面点击默认提供的 LLM 节点,修改名称为“提取关键词”。在右侧的 SYSTEM 提示词区域,输入以下内容:

# Task
你将收到用户的问题。请先提取问题中的关键信息,用于进行检索知识库内容。

# Output
输出多个关键词或关键句,关键词或关键句之间使用空格分隔,禁止直接回答用户的问题

完成后可以点击顶部的 预览 按钮进行测试。

image

关联知识库

检索关键词有了之后,就可以利用关键词在知识库中检索相关内容。在 提取关键词 和 直接回复 节点之间,添加一个新节点 知识检索

image

将 查询文本 改为 提取关键词 节点的输出,知识库 选择刚刚创建的“用户手册”知识库。

image

编写提示词

从知识库中检索到 相关信息(Context,上下文) 后,接下来就是让 AI 根据这些信息回答用户的问题了。在 知识检索 和 直接回复 节点之间,添加一个 LLM 节点 名称为 回答问题

image

在右侧的 上下文 中选择 知识检索 节点输出的结果 resultSYSTEM 提示词区域,输入下面的提示词,这段提示词使用了 Role-Constraints-Goal 框架,能有效防止 AI 产生幻觉。

# Role
你是一位经验丰富的汽车维修与使用专家。你的任务是根据【Context】提供的内容,准确、简洁地回答用户关于车辆使用的问题。

# Constraints
1. 必须完全基于【Context】中的信息回答,严禁凭空捏造或利用外部知识回答手册未涉及的内容。
2. 如果【Context】中没有相关信息,请直接回答:“很抱歉,当前手册中未找到关于该问题的说明。”
3. 回答步骤要清晰,如果是操作指南,请按 1. 2. 3. 分点列出。
4. 语气要专业、耐心、乐于助人。

# Goal
帮助用户快速解决车辆使用中的疑惑,确保行车安全。

# Context
{{#context#}}

image

调整模型参数

点击模型右侧的图标,设置 温度(Temperature) 参数,可以设为小于 0.5 的值。温度越低,AI 越严谨、越死板;温度越高,AI 越发散、越有创造力。对于“查阅说明书”这种严肃场景,需要的是绝对的准确,而不是创造力。

image

调试与发布

以上配置完成后,先在右侧进行预览测试,观察 AI 的回答是否准确、步骤是否清晰,并且有无引用来源。如果不满意,可以继续调整提示词或上下文设置,直到满意为止。测试满意后,点击右上角的 发布 按钮。发布成功后点击 运行,即可通过 URL 进入 Web 界面和你的“车辆管家”聊天了!

image

Python API 调用实战

在前面的步骤中,已经实现了一个能在 Dify 网页端流畅对话的“用车顾问”。Dify 最强大的地方在于它遵循 API First 的设计理念。我们在网页上看到的所有功能,都可以通过 API 进行调用。这意味着可以把这个“大脑”接入到任何你想要的地方。接下来,编写一段 Python 代码,实现与智能体的远程对话。

获取 API 密钥

要通过 API 调用 Dify,首先需要拿到通行证。在 Dify 应用编排页面的左侧导航栏,点击 访问 API

  1. 在右上角点击 API 密钥 -> 创建密钥
  2. 复制生成的密钥。
  3. 留意页面上的 API 服务器地址,本地部署通常是 http://localhost/v1 。

image

环境准备

需要使用 Python 的 requests 库来发送 HTTP 请求。如果还没有安装,请在命令行执行 pip install requests

编写脚本

新建一个文件 car_bot.py,将以下代码复制进去。这段代码使用了阻塞模式 (Blocking),程序会等待 AI 完全生成完答案后,一次性返回结果。

import requests

# ================= 配置区域 =================
# 替换为你的 API 密钥
API_KEY = 'app-pJRiHLHP4UMJ3tGqyYLyAjGb' 

运行脚本 python car_bot.py,你将看到 AI 根据手册内容给出的准确回答。

image

通过这个 Python 脚本,想象力就可以起飞了。将脚本封装成一个 Web 服务,接收微信消息,转发给 Dify,再把答案发回微信,制作一个聊天机器人。也可以结合 Whisper(语音转文字)和 Edge-TTS(文字转语音),给这个智能体加上耳朵和嘴巴...