【大模型知识】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

利用快马平台ai快速构建imtoken钱包交互原型,验证核心交易流程

最近在做一个区块链相关的项目,需要验证钱包应用的核心交互流程。大家都知道,像imToken这样的主流数字钱包,核心就是资产管理、交易签名和DApp交互。如果从零开始搭建完整的区块链测试环境,再开发一个钱包前端来验证逻辑,那周期可就太长了。正好,我最近在尝试用InsCode(快马)平台来做快速原型开发,发现用它来构建一个模拟imToken钱包的Web应用原型,效率出奇的高。整个过程基本不需要手动配置环境,思路验证起来非常快。 我的目标是构建一个具备核心功能的Web应用原型,重点验证几个关键交互点:钱包界面展示、模拟交易签名、以及一个简化的DApp连接演示。下面我就把整个构建思路和实现过程梳理一下,也算是个人的一次实践记录。 1. 项目目标与功能拆解 首先,我明确了原型需要验证的四个核心功能模块。第一是钱包主界面,需要清晰展示虚拟的账户余额、资产列表(比如模拟ETH、USDT等)和近期的交易记录。这个界面是用户最直观感知的部分,设计上要简洁,信息层级要分明。第二是交易功能,用户需要能输入一个模拟的“收款地址”和“转账金额”,然后触发一个模拟的签名流程,并给出明确的成功或失败反馈。第三

【AI Coding】Everything Claude Code:让 AI 代理真正为你工作的完整系统

Everything Claude Code:让 AI 代理真正为你工作的完整系统 从一次黑客马拉松开始 2026 年初,在 Anthropic 与 Cerebral Valley 联合举办的黑客马拉松上,一个叫 Everything Claude Code(ECC) 的项目拿到了冠军。 但它并没有停留在"获奖作品"的阶段。10 个月、50K+ star、6K+ fork 之后,ECC 已经演化成了一套覆盖 27 个专业 Agent、114 个工作流技能、59 个斜杠命令的生产级 AI 代理增强系统——并在 2026 年 3 月发布了 v1.

2026年AI Agent框架王者:OpenClaw登顶GitHub TOP1,16大小龙虾生态项目(含OpenClawChinese汉化版)技术特性与GitHub地址汇总

2026年AI Agent框架王者:OpenClaw登顶GitHub TOP1,16大小龙虾生态项目(含OpenClawChinese汉化版)技术特性与GitHub地址汇总

🦞 "OpenClaw龙虾家族"全员集结!OpenClaw登顶GitHub TOP1,Kimi/miniMax/阿里/百度/字节/网易集体入局,16大小龙虾框架谁是你的菜? 🔥 历史性时刻:2026年3月,OpenClaw以26万+ GitHub Stars正式超越React(24.3万星)和Linux(21.8万星),登顶全球开源项目TOP1!但这只是开始——随着Kimi AI、MiniMax、阿里、百度、字节、网易等巨头集体入局,加上NullClaw、OpenFang等新锐开源项目崛起,一个庞大的 “龙虾家族” 正在形成。 生态全景数据:⭐ OpenClaw:26万+ Stars,GitHub史上最快增长记录🌙 KimiClaw:Moonshot AI官方云托管,40GB云存储+5000技能⚡ MaxClaw:MiniMax出品,10秒部署,

论文AIGC痕迹太重?AI率92%暴降至5%!实测10款降AI工具(还有免费ai查重!)【2025年12月最新版】

论文AIGC痕迹太重?AI率92%暴降至5%!实测10款降AI工具(还有免费ai查重!)【2025年12月最新版】

2025年各大高校陆续引入AI检测系统,知网AIGC、维普AI、万方智能检测三大平台形成围剿之势。更狠的是,这些系统每个月都在更新算法——上个月能过的文章,这个月可能就亮红灯了。单纯的同义词替换、语序调整已经完全失效,降低ai率需要更专业的工具。 今天这篇文章,我实测了市面上10款主流降AI工具,手把手教你把AI率降到个位数,真正做到论文降ai无痕迹。 📌10款主流降AI工具 ⭐ 1. 笔灵降AI —— 性价比之王,学生党首选 笔灵降AI是我这次测试中最惊喜的发现。它最大的特点是采用"结构级优化"技术,不是简单粗暴地替换同义词,而是从语序、句型、逻辑节奏三个维度重构句子。 传送门:    https://ibiling.cn/paper-pass?from=ZEEKLOGjiangaizrcs 举个例子,AI生成的句子"研究表明,该方法在实验中取得了显著效果",经过笔灵处理后变成"实验数据证实,这一方法的应用效果较为突出"——意思没变,但表达方式完全人类化了。