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 到上线只需一行