Ollama 本地知识库搭建:30 分钟搞定私域问答

为什么要在本地跑?

数据安全是第一考量。比起把企业文档上传到 云端 AI Agent 服务,Ollama 让所有推理都在内网完成,Zero Data Leakage。

安装 Ollama

curl -fsSL https://ollama.ai/install.sh | sh
ollama pull llama3.2

加载知识库

import ollama
from langchain.document_loaders import DirectoryLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter

# 加载文档
loader = DirectoryLoader('./docs/', glob='**/*.md')
docs = loader.load()

# 文本分割
splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=50)
split = splitter.split_documents(docs)

# 嵌入并存储
for doc in split:
    embedding = ollama.embeddings(model='nomic-embed-text', prompt=doc.page_content)

构建问答接口

def ask(question):
    ctx = ollama.search(query=question, top_k=5)
    response = ollama.chat(
        model='llama3.2',
        messages=[{'role': 'user', 'content': f'{ctx} Q: {question}'}]
    )
    return response['message']['content']

这个方案的核心思想是 RAG(Retrieval-Augmented Generation),与 Kubernetes Pod 故障排查的思路一样——先用检索定位资源,再针对性处理。

关键要点

  1. 模型选择:7B 参数够用,70B 精度更高但慢 3 倍
  2. 文档切割:chunk_size 500-800 效果最好
  3. 嵌入模型:nomic-embed-text 免费且够用
上一篇 RAG 系统向量数据库选型对比:Milvus vs Chroma vs Weaviate
下一篇 GitHub Actions 部署自动化:从 Push 到上线只需一行
最新评论
Docker 网络模式详解:bridge/host 生产选型 - FSData
Docker 网络模式详解:bridge/host 生产选型 - FSData
8月20日
[…] 注意最后那条:把端口绑定到 127.0.0.1,再由宿主机上的 Nginx 反代进来,比直接 -p 80:80 暴露安全得多,也方便统一做
Vue3 + TypeScript 工程化:类型安全的前端架构 - FSData
Vue3 + TypeScript 工程化:类型安全的前端架构 - FSData
8月20日
[…] Pinia 的工程化用法,可以参考我们之前的实战文章 《Vue3 组合式 API + Pinia:状态管理从入门到实战》,那里覆盖了 Sto
2026 年最值得装的 10 个 VS Code 插件(AI/前端/后端/效率全覆盖) - FSData
2026 年最值得装的 10 个 VS Code 插件(AI/前端/后端/效率全覆盖) - FSData
8月19日
[…] 状态,点一下就能起停容器,配合我们讲过的 Docker Compose 编排 […]
Redis 缓存设计:穿透、击穿、雪崩与最佳实践 - FSData
Redis 缓存设计:穿透、击穿、雪崩与最佳实践 - FSData
8月19日
[…] 缓存三大坑的本质都是”缓存失效导致请求穿透到数据库”。记住口诀:穿透用布隆、击穿用锁、雪崩用错峰。配合合理的过期策略
GitHub Actions 实战:从零搭建 CI/CD 流水线 - FSData
GitHub Actions 实战:从零搭建 CI/CD 流水线 - FSData
8月19日
[…] Docker 镜像部署。结合我们之前写的 Docker Compose 一键编排实战,可以在 CI […]