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

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

搭建本地知识库

作为大模型开发人员,搭建一套 本地私有知识库系统(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/70BvLLM(高吞吐)Ollama:一键启动,API 兼容 OpenAIvLLM:PagedAttention,吞吐提升 24x
应用框架LangChainLlamaIndexLangChain:生态丰富,调试工具完善
💡 为什么不用 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万页)改用 Qdrantdocker run -p 6333:6333 qdrant/qdrant
低延迟要求将 Embedding 模型转为 ONNX 格式(提速 2–3x)

3. 中文增强

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

🧪 五、验证知识库效果

测试用例:

拒答能力

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

跨文档推理

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

事实性问题

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

📦 六、进阶扩展方向

需求方案
Web 界面集成 GradioStreamlit
自动更新监听 ./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)。

Read more

【无人机路径规划】基于深度强化学习的多无人机辅助边缘计算网络路径规划(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭:行百里者,半于九十。 📋📋📋本文目录如下:🎁🎁🎁 目录 💥1 概述 摘要 一、研究背景与意义 1.1 边缘计算与无人机的融合需求 1.2 多无人机路径规划的挑战 二、多无人机辅助边缘计算网络架构 2.1 网络组成与功能 2.2 路径规划的协同需求 三、深度强化学习在路径规划中的适配性 3.1 技术优势 3.2 核心算法与多智能体协同 3.2.1 单无人机路径规划:DDPG算法 3.2.2 多无人机协同:MADDPG与IPPO 四、典型应用场景与性能优化 4.

ClawdBot实战指南:轻松搭建多模态翻译机器人

ClawdBot实战指南:轻松搭建多模态翻译机器人 大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为ZEEKLOG博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的知识进行总结与归纳,不仅形成深入且独到的理解,而且能够帮助新手快速入门。 本文主要介绍如何在本地设备上快速部署ClawdBot——一个支持语音转写、图片OCR、多语言实时翻译,并集成天气/汇率/维基查询功能的多模态AI助手。不同于传统翻译工具,ClawdBot真正实现了“零配置、离线可用、开箱即用”,尤其适合Telegram用户构建私有化智能助理。全文基于实操验证,不讲虚的,每一步都可复现。 @[toc] 1. 为什么你需要ClawdBot:不只是翻译,而是你的多模态AI管家 你是否遇到过这些场景? * 在Telegram群聊中看到一段外文技术文档,想立刻看懂但手动复制粘贴太慢; * 收到朋友发来的手写笔记照片,却没法直接提取文字再翻译; *

【论文笔记】A Survey on Data Synthesis and Augmentation for Large Language Models

【论文笔记】A Survey on Data Synthesis and Augmentation for Large Language Models

A Survey on Data Synthesis and Augmentation for Large Language Models(大型语言模型的数据合成与增强综述) 1. 作者 2. 年份 2024 零、摘要 大型语言模型(LLM)的成功与否,本质上与用于训练和评估的海量、多样化和高质量数据的可用性息息相关。然而,高质量数据的增长速度明显落后于训练数据集的扩展速度,从而导致迫在眉睫的数据耗尽危机。这突显了提高数据效率和探索新数据来源的迫切需求。在此背景下,合成数据已成为一种有前景的解决方案。目前,数据生成主要包括两种主要方法:数据增强和合成。本文全面回顾并总结了LLM生命周期中的数据生成技术,包括数据准备、预训练、微调、指令调整、偏好对齐和应用。此外,我们还讨论了这些方法目前面临的限制,并探讨了未来发展和研究的潜在途径。我们的愿望是使研究人员清楚地了解这些方法,使他们能够在构建LLM时迅速确定适当的数据生成策略,同时为未来的探索提供有价值的见解。 一、介绍 * 近年来,LLM在许多行业取得了巨大的进步。但是大模型的性能高度依赖它们接受训练的数据的质量和

Microi吾码:开源低代码,微服务开发的利器

Microi吾码:开源低代码,微服务开发的利器

前言 在微服务架构的应用中,服务的灵活性和可扩展性至关重要。Microi吾码作为一个高效的微服务框架,凭借其轻量级、可插拔的特性,已经成为开发者构建分布式应用的首选工具。除了基础的微服务开发功能外,Microi吾码还提供了丰富的扩展功能,其中表单引擎是一个重要亮点。本篇博客将详细介绍Microi吾码的特点,以及如何使用其表单引擎和其他实用功能。 一. Microi吾码简介 Microi吾码是一个基于Spring Boot构建的微服务框架,致力于为开发者提供简单、灵活的解决方案,帮助他们高效构建分布式应用。它整合了常用的微服务功能,如服务注册与发现、负载均衡、熔断器、API网关、配置中心等,使得开发者无需从零开始构建基础设施,从而专注于业务逻辑。 1.1 核心特点 Microi吾码的核心特点: * 轻量级:基于Spring Boot,极大地简化了项目配置和开发流程。 * 高度可扩展:提供丰富的插件支持,可以根据需要定制功能。 * 开箱即用:内置常见的微服务功能,减少了开发者的重复工作。 * 开发友好:支持热部署和自动化构建,提升开发效率。 1.2 功能介绍