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

【大模型知识】Chroma + Ollama + Llama 3.1 搭建本地知识库

搭建本地知识库 ✅ 一、整体架构设计(RAG + 向量检索 + 本地 LLM) 🧰 二、推荐技术栈(2026 年最佳实践) 🛠️ 三、具体搭建步骤(以 Chroma + Ollama + Llama 3.1 为例) 步骤 1:安装基础环境 步骤 2:安装 Python 依赖 步骤 3:准备知识文档 步骤 4:构建向量知识库(Python 脚本) 步骤 5:启动问答服务(RAG 推理) 🔒 四…

开源信徒发布于 2026/4/7更新于 2026/5/2331K 浏览
【大模型知识】Chroma + Ollama + Llama 3.1 搭建本地知识库
搭建本地知识库
  • ✅ 一、整体架构设计(RAG + 向量检索 + 本地 LLM)
  • 🧰 二、推荐技术栈(2026 年最佳实践)
  • 🛠️ 三、具体搭建步骤(以 Chroma + Ollama + Llama 3.1 为例)
    • 步骤 1:安装基础环境
    • 步骤 2:安装 Python 依赖
    • 步骤 3:准备知识文档
    • 步骤 4:构建向量知识库(Python 脚本)
    • 步骤 5:启动问答服务(RAG 推理)
  • 🔒 四、安全与性能优化建议
    • 1. **隐私保护**
    • 2. **性能调优**
    • 3. **中文增强**
  • 🧪 五、验证知识库效果
    • 测试用例:
  • 📦 六、进阶扩展方向
  • ✅ 总结:你的本地知识库技术栈

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

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

原始文档
(PDF/Word/TXT/Markdown)

文档解析 & 分块

向量化
(Embedding)

向量数据库

大模型 Agent

LLM 推理引擎
(本地运行)

用户问答

🧰 二、推荐技术栈(2026 年最佳实践)

组件推荐方案选择理由
文档解析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 兼容 OpenAIvLLM:PagedAttention,吞吐提升 24x
应用框架LangChain 或 LlamaIndexLangChain:生态丰富,调试工具完善

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

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

步骤 1:安装基础环境
# 安装 Python ≥3.10sudoaptinstall 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)# 问答循环whileTrue: query =input("\n❓ 请输入问题(输入 'quit' 退出): ")if query =="quit":break result = qa_chain({"query": query})print(f"\n💡 回答:\n{result['result']}")# 显示引用来源print("\n📚 参考片段:")for i, doc inenumerate(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. 🧰 二、推荐技术栈(2026 年最佳实践)
  4. 🛠️ 三、具体搭建步骤(以 Chroma + Ollama + Llama 3.1 为例)
  5. 步骤 1:安装基础环境
  6. 安装 Python ≥3.10sudoaptinstall python3-pip # 安装 Ollama(自动下载 Llama 3)curl -fsSL https://ollama.com/install.sh |sh# 启动 Ollama 服务(后台运行) ollama serve &
  7. 步骤 2:安装 Python 依赖
  8. 步骤 3:准备知识文档
  9. 步骤 4:构建向量知识库(Python 脚本)
  10. 步骤 5:启动问答服务(RAG 推理)
  11. 🔒 四、安全与性能优化建议
  12. 1\. 隐私保护
  13. 2\. 性能调优
  14. 3\. 中文增强
  15. 🧪 五、验证知识库效果
  16. 测试用例:
  17. 📦 六、进阶扩展方向
  18. ✅ 总结:你的本地知识库技术栈
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

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

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

更多推荐文章

查看全部
  • RoboBrain2.0 具身大脑模型复现指南:统一感知推理与规划
  • MiniMax 海螺 AI 视频:图片与文本生成高质量视频
  • PaddleOCR-VL-WEB 实践:表格、公式与文本精准识别及溯源
  • OpenClaw 接入飞书配置教程
  • 人工智能大模型技术白皮书
  • 告别从零开发!AI+AR眼镜开源方案来了|PUSHI G1赋能18个全场景,联动腾讯/阿里云落地
  • Docker 运行 hello-world 镜像失败或超时问题排查与解决
  • 机器人操作VLA模型的强化学习:综述
  • VSCode 中关闭 GitHub Copilot 功能的两种方法
  • ToDesk ToClaw AI 自动化实测:零代码实现日常办公自动化
  • Qwen3-VL 模型架构与训练流程
  • Trae IDE 接入即梦 AI 生成高质量图片
  • llama-cpp-python 完整安装指南与常见问题解决
  • 基于 LangGraph 与 Mem0 实现 AI Agent 的长期记忆与个性化体验
  • Flutter web_scraper 库在 OpenHarmony 环境下的网页抓取适配实战
  • 硕士论文盲审前如何降低 AI 检测率及评委关注点分析
  • FPGA 组成原理:IO 资源详解
  • OpenRouter 详解:全球 AI 模型聚合平台与免费资源指南
  • 基于 DeepSeek 和 Cursor 构建智能代码审查工具:AI 编程实践
  • Java 微信机器人框架 WechatRobot 技术解析与实战

相关免费在线工具

  • curl 转代码

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

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online

  • JSON 压缩

    通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online