想用Ollama搭一个本地知识库,把公司内部文档喂进去,让AI基于这些文档来回答问题。
查了一下好像要用RAG(检索增强生成)的方案,但具体怎么搭还是一头雾水:
- ollama本地部署知识库的整体流程是什么样的?
- 听说可以用Dify+Ollama来搭,有没有具体教程?
- 本地模型能不能联网获取实时信息?
- 如果想让模型更懂我的领域知识,是应该训练模型还是用RAG?
文档主要是PDF和Word格式,大概几百份,求一个靠谱的本地知识库搭建方案!
想用Ollama搭一个本地知识库,把公司内部文档喂进去,让AI基于这些文档来回答问题。
查了一下好像要用RAG(检索增强生成)的方案,但具体怎么搭还是一头雾水:
文档主要是PDF和Word格式,大概几百份,求一个靠谱的本地知识库搭建方案!
先简单解释一下**RAG(Retrieval-Augmented Generation)**的概念:
传统的大模型只能基于训练数据回答问题,对你的私有文档一无所知。RAG的思路是:
整个过程不需要训练模型,数据也不会离开本地,非常适合企业内部知识库场景。
Ollama在这里面承担的角色是:
Dify + Ollama搭建本地知识库的步骤:
1. 安装Ollama并拉取模型:
ollama pull qwen2:7b # 对话模型
ollama pull nomic-embed-text # Embedding模型
2. 用Docker部署Dify:
git clone https://github.com/langgenius/dify.git
cd dify/docker
cp .env.example .env
docker compose up -d
3. 在Dify中配置Ollama:
http://host.docker.internal:11434(Docker环境)4. 创建知识库:
5. 创建应用:
整个过程不需要写代码,Dify提供了可视化界面。
关于**文档切块(Chunking)**补充几个经验:
文档切块的质量直接决定了知识库回答的准确度,几个要注意的点:
Dify里可以在上传文档时设置这些参数。如果文档量大,建议先用几份测试文档调好参数再批量导入。
另外Embedding模型的选择也很关键,中文场景推荐用 bge-large-zh 或者 m3e-large,比通用的nomic-embed效果好不少。
回答你关于训练vs RAG的问题:
| 微调训练 | RAG | |
|---|---|---|
| 成本 | 高(需要GPU、标注数据) | 低(只需要向量化) |
| 数据更新 | 需要重新训练 | 实时更新文档即可 |
| 准确度 | 深度理解领域知识 | 依赖检索质量 |
| 适合场景 | 固定领域、需要专业表达 | 文档问答、知识库查询 |
90%的企业知识库场景用RAG就够了。 微调训练门槛太高,而且文档更新后还得重新训练,不实际。
至于本地模型联网的问题,Ollama本身不支持联网搜索。但你可以通过RAG的方式,把网页内容抓下来存到知识库里,间接实现"联网"的效果。或者用Dify的工具调用功能接入搜索API。
如果觉得Dify+Ollama搭建还是太折腾,可以看看当贝Molili,它内置了知识库功能,不需要自己搞Docker和向量数据库。
直接上传文档就能用,而且支持接Ollama作为后端模型,等于你本地的算力不浪费,同时又有开箱即用的知识库界面。
我之前也是自己搭的Dify方案,后来切到Molili主要是因为:
当然如果你想深度定制RAG流程(比如自定义检索策略、多路召回),还是Dify更灵活。看你的需求了。
感谢各位!总结一下我理解的方案:
另外Molili的知识库功能也mark了,等Dify方案跑通后对比一下效果。再次感谢!
切片大小别太小,512token以上召回质量明显好
Dify配Ollama本地组合稳定,bge-m3做嵌入比nomic准多了