一、为什么用 Dify 搭知识库
Dify 是开源的 LLMOps 平台,把「文档导入 → 向量化 → 检索 → 对话」整成可视化流程,不需要写 RAG 代码就能搭出企业私有知识库。对不想从零造轮子的团队,它是性价比最高的起点。
二、部署(Docker 一键)
git clone https://github.com/langgenius/dify.git
cd dify/docker
cp .env.example .env
docker compose up -d
默认跑在 80 端口,首次访问初始化管理员账号即可。生产环境建议:反向代理加 HTTPS、数据库与向量库(PostgreSQL + pgvector / Weaviate)独立部署、关闭公网注册。
三、创建知识库并导入文档
- 进入「知识库 → 创建」,选择「导入已有文本」;
- 上传上一步清洗结构化之后的 Markdown / TXT / 表格(参考本站《文档清洗与结构化》);
- 索引方式选「高质量」(需配 Embedding 模型),分段策略用「自动」或自定义;
- 等待向量化完成。
经验:每个文档最好自带 # 标题层级,分段能顺着章节切,召回更准。
四、分段与检索设置
| 参数 | 建议 | 说明 |
|---|---|---|
| 分段最大长度 | 500—1000 字符 | 中文按字算,别照搬英文 512 token |
| 重叠 | 10%—15% | 保留跨段上下文 |
| 检索方式 | 语义 + 全文混合 | 兼顾关键词与意图 |
| TopK | 3—5 | 太多引入噪声,太少漏信息 |
五、召回测试(上线前必做)
- 用真实问题测:如「客户包裹丢了怎么赔」,看召回片段是否包含赔偿政策原文;
- 错配就调整分段或补充文档,而不是先怪模型;
- 记录 20 组问答的命中率,低于 80% 先别全员推。
六、常见坑
- 直接传原始 PDF:没清洗的页眉页脚会污染索引;
- Embedding 模型频繁更换:换模型要重建索引,否则维度不匹配;
- 知识库当数据库用:精确数值(报价、库存)优先走结构化接口,别指望语义检索给准数。
Dify 解决的是「搭起来」的问题;效果上限仍在你喂进去的语料质量——所以清洗结构化这步省不掉。