钦州市网站建设_网站建设公司_原型设计_seo优化
2025/12/30 15:12:09 网站建设 项目流程

摘要:在 ChatGPT 和 Claude 占据云端的时代,数据隐私和昂贵的 API 调用费用成为了企业与个人开发者的痛点。本文将带你通过 GitHub 上最热门的开源工具Ollama,结合LangChainChromaDB,在本地笔记本上从零搭建一个基于 Llama3 的 RAG(检索增强生成)应用。不花一分钱,守护你的数据隐私。


🚀 为什么选择本地 RAG?

在当前的 AI 浪潮中,RAG (Retrieval-Augmented Generation)是解决大模型“幻觉”和“知识截止”问题的最佳方案。但是,直接调用 OpenAI 的 API 存在两个问题:

  1. 数据安全:公司的私密文档(如合同、技术架构图)不能传到云端。

  2. 成本不可控:Token 数量一旦上来,账单非常感人。

今天我们要介绍的“全本地化技术栈”完美解决了这两个问题。

本次实战技术栈

  • LLM 运行时:Ollama(GitHub ⭐ 60k+) - 极其轻量级的本地大模型运行框架,被誉为 "LLM 界的 Docker"。

  • 编排框架:LangChain- 大模型应用开发的“胶水”层。

  • 向量数据库:ChromaDB- 轻量级、嵌入式的开源向量数据库。

  • 核心模型:Meta Llama 3 (8B)- 目前开源界最能打的小参数模型。


🛠️ 第一步:环境准备与 Ollama 部署

1.1 安装 Ollama

Ollama 是目前让小白也能在 1 分钟内跑起大模型的神器。

  • macOS/Linux: 直接访问官网下载或使用命令行。

  • Windows: 官方预览版已出,直接安装即可。

1.2 拉取 Llama 3 模型

安装完成后,打开终端(Terminal),输入以下命令拉取 Meta 的 Llama 3 模型:

Bash

ollama run llama3

实战经验注:8B 版本的 Llama 3 只需要约 4GB 显存或内存,M1/M2 芯片的 Mac 跑起来飞快,大部分集显 Windows 笔记本也能流畅运行。

1.3 验证 API

Ollama 默认会在本地开启11434端口。我们可以测试一下它是否在后台运行:

Bash

curl http://localhost:11434/api/generate -d '{ "model": "llama3", "prompt": "为什么天空是蓝色的?" }'

💻 第二步:Python 项目构建 (后端逻辑)

我们将使用 Python 来编写 RAG 的核心逻辑。

2.1 安装依赖库

创建一个新的虚拟环境,并安装 LangChain 社区版及相关依赖:

Bash

pip install langchain langchain-community langchain-chroma bs4

2.2 核心代码实现:从文档加载到问答

这里我们模拟一个场景:让 AI 读取一篇关于“Kubernetes 故障排查”的本地 Markdown 文档,并回答相关问题。

新建local_rag.py

Python

import os from langchain_community.llms import Ollama from langchain_community.document_loaders import TextLoader from langchain_text_splitters import RecursiveCharacterTextSplitter from langchain_community.embeddings import OllamaEmbeddings from langchain_chroma import Chroma from langchain_core.prompts import ChatPromptTemplate from langchain_core.runnables import RunnablePassthrough from langchain_core.output_parsers import StrOutputParser # 1. 初始化本地大模型 (连接到 Ollama) llm = Ollama(model="llama3") # 2. 加载本地数据 (这里假设你有一个 tech_guide.txt) # 实战技巧:生产环境中通常使用 PyPDFLoader 或 UnstructuredLoader 处理复杂格式 loader = TextLoader("./tech_guide.txt", encoding='utf-8') docs = loader.load() # 3. 文本分割 (Chunking) # 这一步至关重要,决定了检索的精准度 text_splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=50) splits = text_splitter.split_documents(docs) # 4. 向量化并存入 ChromaDB # 我们使用 nomic-embed-text 模型,这比用 llama3 直接做 embedding 快得多且效果好 # 需要先运行: ollama pull nomic-embed-text vectorstore = Chroma.from_documents( documents=splits, embedding=OllamaEmbeddings(model="nomic-embed-text") ) retriever = vectorstore.as_retriever() # 5. 构建 RAG Prompt 模板 template = """你是一个智能技术助手。请根据下面的上下文(Context)回答问题。 如果上下文中没有答案,请直接说“我不知道”,不要编造内容。 上下文: {context} 问题: {question} """ prompt = ChatPromptTemplate.from_template(template) # 6. 构建 LCEL (LangChain Expression Language) 链 rag_chain = ( {"context": retriever, "question": RunnablePassthrough()} | prompt | llm | StrOutputParser() ) # 7. 执行测试 query = "如果 Pod 状态是 CrashLoopBackOff,我该怎么排查?" print(f"User: {query}") print("-" * 20) print(f"AI: {rag_chain.invoke(query)}")

🔍 深度解析:为什么这么设计?

1. 嵌入模型(Embedding Model)的选择

在代码中我使用了nomic-embed-text而不是llama3来做 Embedding。

  • 实战经验:生成式模型(如 Llama3)虽然通用,但在将文本转化为向量(Embedding)这一特定任务上,不如专门的嵌入模型(如 Nomic 或 mxbai-embed-large)效果好,且速度慢很多。

  • 操作:记得在终端执行ollama pull nomic-embed-text

2. 文本分割(Chunking)的艺术

chunk_size=500是一个经验值。

  • 如果切分太小,AI 可能会丢失上下文逻辑。

  • 如果切分太大,检索时会包含太多无关噪音,且容易撑爆 Context Window(虽然 Llama3 支持 8k,但越短响应越快)。


📊 效果演示

假设tech_guide.txt中包含以下内容:

“当 Kubernetes Pod 出现 CrashLoopBackOff 时,首先使用 kubectl logs 查看日志,其次检查 Liveness Probe 配置...”

运行脚本后,控制台输出:

Plaintext

User: 如果 Pod 状态是 CrashLoopBackOff,我该怎么排查? -------------------- AI: 根据文档,针对 CrashLoopBackOff 状态,建议的排查步骤如下: 1. 首先使用 kubectl logs 命令查看容器日志,获取崩溃原因。 2. 检查 Liveness Probe(存活探针)的配置是否过于敏感导致频繁重启。

成功!模型没有瞎编乱造,而是精准地复述了我们本地文档中的知识。


🔮 总结与展望

通过Ollama + LangChain,我们仅用了不到 50 行代码,就实现了一个完全私有化、零成本的智能知识库。

接下来的进阶玩法(TODO):

  1. 前端化:使用 Streamlit 或 Next.js 封装成带 UI 的聊天机器人。

  2. 多模态:结合 Llama 3.2 Vision 版本,实现对图片的检索和理解。

  3. 微服务化:将此 Python 脚本封装为 FastAPI 接口,供业务系统调用。

如果你对AI 落地实战Linux 运维自动化GitHub 优质项目解析感兴趣,欢迎关注我的博客,我们下期见!


参考资料

  • Ollama GitHub: https://github.com/ollama/ollama

  • LangChain Docs: https://python.langchain.com/

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询