跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
PythonAI算法

Chroma + Ollama + Llama 3.1 构建本地私有知识库

介绍基于 RAG 架构搭建本地私有知识库的方案,采用 Chroma 作为向量数据库,Ollama 运行 Llama 3.1 模型,结合 LangChain 框架实现文档解析、向量化及问答检索。涵盖环境安装、依赖配置、脚本编写及安全优化建议,支持中文增强与多模态扩展,确保数据隐私与推理效率。

Pythonist发布于 2026/4/6更新于 2026/5/2323 浏览
Chroma + Ollama + Llama 3.1 构建本地私有知识库

搭建本地知识库

作为大模型开发人员,搭建一套本地私有知识库系统(Local RAG Pipeline)是提升 AI 助手专业性、保障数据安全、避免幻觉的关键基础设施。以下是一套开源免费、支持中文、可扩展性强的技术栈方案与详细搭建步骤。

一、整体架构设计(RAG + 向量检索 + 本地 LLM)

原始文档(PDF/Word/TXT/Markdown) -> 文档解析 & 分块 -> 向量化(Embedding) -> 向量数据库 -> 大模型 Agent -> LLM 推理引擎(本地运行) -> 用户问答

二、推荐技术栈

组件推荐方案选择理由
文档解析Unstructured + PyPDF2 / docx2txt支持 PDF/Word/PPT/HTML,保留表格结构
文本分块LangChain RecursiveCharacterTextSplitter智能按段落/句子切分,避免语义割裂
嵌入模型(Embedding)BAAI/bge-large-zh-v1.5(中文)或 nomic-ai/nomic-embed-text-v1.5(多语言)中文 SOTA,4096 上下文,HuggingFace 开源
向量数据库ChromaDB(轻量)或 Qdrant(高性能)Chroma:单机文件存储,零配置;Qdrant:支持过滤、分布式,适合未来扩展
大模型推理Ollama + Llama 3.1 8B/70B或 vLLM(高吞吐)Ollama:一键启动,API 兼容 OpenAI;vLLM:PagedAttention,吞吐提升
应用框架LangChain 或 LlamaIndexLangChain:生态丰富,调试工具完善

💡 为什么不用 Elasticsearch? 虽然 ES 支持向量检索(≥8.0),但配置复杂、资源占用高。Chroma/Qdrant 专为 embedding 设计,更轻量高效。

三、具体搭建步骤(以 Chroma + Ollama + Llama 3.1 为例)

步骤 1:安装基础环境

# 安装 Python >=3.10
sudo apt install python3-pip
# 安装 Ollama(自动下载 Llama 3)
curl -fsSL https://ollama.com/install.sh | sh
# 启动 Ollama 服务(后台运行)
ollama serve &

步骤 2:安装 Python 依赖

pip install langchain chromadb unstructured PyPDF2 python-docx sentence-transformers

步骤 3:准备知识文档

将你的知识文件放入 ./docs/ 目录,支持:

  • .pdf, .docx, .txt, .md, .html

步骤 4:构建向量知识库(Python 脚本)

创建 build_kb.py:

from langchain.document_loaders import DirectoryLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.embeddings import HuggingFaceEmbeddings
from langchain.vectorstores import Chroma
import os

# 1. 加载文档
loader = DirectoryLoader('./docs', glob="**/*.pdf", show_progress=True)
docs = loader.load()

# 2. 文本分块(按字符递归切分)
text_splitter = RecursiveCharacterTextSplitter(
    chunk_size=500,
    chunk_overlap=50,
    separators=["\n\n","\n","。","!","?",";"," ",""]
)
chunks = text_splitter.split_documents(docs)

# 3. 加载中文 Embedding 模型(首次运行会自动下载 ~1.3GB)
embeddings = HuggingFaceEmbeddings(
    model_name="BAAI/bge-large-zh-v1.5",
    model_kwargs={'device':'cuda'} # 若无 GPU 改为 'cpu'
)

# 4. 存入 Chroma 向量库(持久化到 ./chroma_db)
vectorstore = Chroma.from_documents(
    documents=chunks,
    embedding=embeddings,
    persist_directory="./chroma_db"
)
vectorstore.persist()
print(f"✅ 知识库构建完成!共 {len(chunks)} 个片段")

运行:

python build_kb.py

⏱️ 首次运行需下载模型(约 10–30 分钟),后续秒级加载。

步骤 5:启动问答服务(RAG 推理)

创建 query_kb.py:

from langchain.vectorstores import Chroma
from langchain.embeddings import HuggingFaceEmbeddings
from langchain.llms import Ollama
from langchain.chains import RetrievalQA

# 加载向量库
embeddings = HuggingFaceEmbeddings(model_name="BAAI/bge-large-zh-v1.5")
vectorstore = Chroma(persist_directory="./chroma_db", embedding_function=embeddings)

# 初始化本地 LLM(Ollama 需提前 pull 模型)
llm = Ollama(model="llama3:8b", temperature=0.1)

# 构建 RAG 链
qa_chain = RetrievalQA.from_chain_type(
    llm=llm,
    retriever=vectorstore.as_retriever(search_kwargs={"k":3}),
    return_source_documents=True
)

# 问答循环
while True:
    query = input("\n❓ 请输入问题(输入 'quit' 退出): ")
    if query == "quit":
        break
    result = qa_chain({"query": query})
    print(f"\n💡 回答:\n{result['result']}")
    # 显示引用来源
    print("\n📚 参考片段:")
    for i, doc in enumerate(result["source_documents"]):
        print(f"[{i+1}] {doc.page_content[:100]}...")

首次运行前,拉取 Llama 3 模型:

ollama pull llama3:8b # 或 llama3:70b(需 48GB+ 内存)

运行问答:

python query_kb.py

四、安全与性能优化建议

1. 隐私保护

  • 所有数据仅在本地处理,不上传任何云服务
  • 向量库文件(./chroma_db)可加密存储(如使用 gocryptfs)

2. 性能调优

场景优化方案
GPU 资源充足使用 vLLM 替代 Ollama:pip install vllm + --model meta-llama/Llama-3.1-8B-Instruct
大文档集(>10 万页)改用 Qdrant:docker run -p 6333:6333 qdrant/qdrant
低延迟要求将 Embedding 模型转为 ONNX 格式(提速 2–3x)

3. 中文增强

  • 在 text_splitter 的 separators 中加入中文标点(已包含)
  • 使用 BGE-M3 模型(支持多语言 + 稀疏检索,2024 新 SOTA)

五、验证知识库效果

测试用例:

拒答能力

'公司的股票代码是多少?'(若文档未提及) → 应回答'知识库中未找到相关信息'

跨文档推理

'对比 A 产品和 B 产品的技术参数' → 应聚合多个文档信息

事实性问题

'根据文档,公司 2025 年战略目标是什么?' → 应准确引用原文片段

六、进阶扩展方向

需求方案
Web 界面集成 Gradio 或 Streamlit
自动更新监听 ./docs 目录变动,增量更新向量库
多模态支持用 Donut 解析 PDF 表格,转为结构化文本
Agent 能力接入 LangGraph 实现多跳推理

七、总结:本地知识库技术栈

组件选用方案启动命令
LLMOllama + Llama 3.1 8Bollama run llama3:8b
EmbeddingBAAI/bge-large-zh-v1.5自动加载
向量库ChromaDB./chroma_db 文件夹
框架LangChainpip install langchain

💡 总耗时:环境搭建 < 30 分钟,知识库构建速度 ≈ 100 页/分钟(RTX 4090)。

目录

  1. 搭建本地知识库
  2. 一、整体架构设计(RAG + 向量检索 + 本地 LLM)
  3. 二、推荐技术栈
  4. 三、具体搭建步骤(以 Chroma + Ollama + Llama 3.1 为例)
  5. 步骤 1:安装基础环境
  6. 安装 Python >=3.10
  7. 安装 Ollama(自动下载 Llama 3)
  8. 启动 Ollama 服务(后台运行)
  9. 步骤 2:安装 Python 依赖
  10. 步骤 3:准备知识文档
  11. 步骤 4:构建向量知识库(Python 脚本)
  12. 1. 加载文档
  13. 2. 文本分块(按字符递归切分)
  14. 3. 加载中文 Embedding 模型(首次运行会自动下载 ~1.3GB)
  15. 4. 存入 Chroma 向量库(持久化到 ./chroma_db)
  16. 步骤 5:启动问答服务(RAG 推理)
  17. 加载向量库
  18. 初始化本地 LLM(Ollama 需提前 pull 模型)
  19. 构建 RAG 链
  20. 问答循环
  21. 四、安全与性能优化建议
  22. 1. 隐私保护
  23. 2. 性能调优
  24. 3. 中文增强
  25. 五、验证知识库效果
  26. 测试用例:
  27. 六、进阶扩展方向
  28. 七、总结:本地知识库技术栈
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • macOS 彻底卸载 Python 的完整指南
  • 腾讯云服务器部署 OpenClaw 对接飞书指南
  • Linux 环境下 Bash Shell 模拟实现
  • AI 辅助构建高可用电商系统核心架构实战
  • 百度发布国内首个产业级医疗大模型灵医
  • Seedance 2.0 实操教程:从入门到 AI 导演模式
  • 国产 AI 双雄对决:智谱 GLM-5 与 MiniMax M2.5
  • AIGC 产品经理面试指南:从 0 到 1 的核心能力与考点拆解
  • 本地知识库快速部署指南:FastGPT + Dify + Ollama 集成方案
  • VS Code Copilot 实战指南:从安装到 Agent 模式应用
  • 前端大数据导出优化:解决 Chrome 内存崩溃的实战方案
  • 【AI审稿提示词】—— 严肃的审稿人
  • C++ 拷贝构造函数与赋值运算符:深拷贝与浅拷贝辨析
  • AI+无人机巡检系统主流开源项目调研
  • DeepSeek 创始人梁文锋:推动中国 AI 迈向技术前沿的思考
  • Linux 环境下的 Git 版本控制入门与实践
  • OpenClaw QQ 机器人插件安装与配置指南
  • 护网行动基础与红蓝对抗实战经验
  • 智谱清影 2.0:AIGC 视频技术突破与产业价值解析
  • 前端面试核心考点解析:ES6 跨域 Vue3 响应式与大数据渲染优化

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • RSA密钥对生成器

    生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

  • Mermaid 预览与可视化编辑

    基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online

  • 随机西班牙地址生成器

    随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online