资讯详情

零基础大模型开发入门:从RAG、提示词到本地部署的完整实践路径

📅 2026/10/20 18:05:08 | 华诺云谱 👁 阅读
零基础大模型开发入门:从RAG、提示词到本地部署的完整实践路径
零基础入门大模型开发不只是学个框架调个API。这两年我见过不少后端、测试、前端转大模型的同事大家最困惑的不是“模型怎么训练”而是“手里的技术栈跟大模型之间到底隔了多远”。这篇内容就是给小白程序员准备的完整上手路径从概念、环境、代码、部署到踩坑按我实际带人入门的顺序来讲目标是让你看完就能自己跑起一个能用的大模型小应用。1. 先转变思路零基础不等于从零训练模型很多小白一听到“大模型开发”第一反应是“我得先学会训练一个 ChatGPT”。这个想法是最大的误区也是劝退大多数人的门槛。1.1 你真正要做的是基于已有模型做应用开发OpenAI、Anthropic、Meta、阿里、智谱这些公司已经把海量文本训练成了很强的底座模型这些模型以开源权重或API的形式对外开放。所谓“大模型开发”绝大多数场景是这几件事调用现成模型API设计合适的提示词去完成任务用开源模型搭建本地服务自己控制数据和成本在模型外面接上你的业务逻辑、数据库、知识库做成一个完整功能把模型输出接入到现有系统里比如客服、文档处理、代码辅助工具做一个类比你不用会炼钢也能开工厂。底座模型就是钢材你干的是焊接、组装、调试的活儿。这个定位想清楚了学习路径就清晰了。1.2 入门需要掌握的最少知识集我总结过零基础能跑通一个项目的“最小知识包”就四方格Python基础语法函数、类、列表推导式、装饰器能看懂就行理解提示词工程的基本规则后面展开讲会装Python包、会用命令行、知道虚拟环境是干嘛的大概了解HTTP接口调用因为模型API基本都是HTTP服务至于深度学习原理、注意力机制、反向传播这些初学阶段不碰完全不影响你做应用。先跑通再补理论这是最高效的路径。我见过一个转行的前端同事完全不懂Transformer两周就做了一个基于开源模型的公司制度问答机器人。他就是先把“能用”做到了然后才回头补原理。2. 大模型开发必懂的核心概念用生活化方式讲清楚在没有这些概念之前你看大模型的文档就像看天书。但如果用类比讲其实特别好懂。2.1 Token、上下文窗口和温度参数Token是模型处理文字的最小单位。一个Token不是一个“字”它可能是半个词、一个词或一个标点。中文场景下一个字大约对应1到2个Token。你调用API的时候计费、上下文长度、输出长度全都按Token算。举个例子我做一个文档总结功能的时候用户上传一份1200字的合同我用API测了一下正好约1100个Token。但涉及英文混合、数字、表格的时候Token消耗会明显变大。这就意味着你要在代码里做文本截断否则模型会报“超出最大长度”错误。上下文窗口是你这一轮和模型对话中模型能“看得见”的最大范围。相当于它的工作记忆。我要提醒的是上下文窗口是“输入输出”的总和。比如模型是8K窗口你输入了7000字那回答最多就剩1000字左右的空间超出就会报错。很多人第一次写大模型程序都在这里栽跟头。温度Temperature控制回答的随机性。温度越接近0回答越稳定、越保守温度越高回答越发散、越有“创造性”。我做客服机器人这类场景温度通常设在0.2以下因为答案稳定比有趣重要得多。但写文案、生成创意故事的时候可以把温度调到0.7到0.9之间。2.2 系统提示词、用户提示词和少样本示例提示词不是“你问一句、它答一句”那么简单的。现在主流的模型API普遍支持三段结构系统提示词给模型设定人设、规则、边界相当于“入职培训”用户提示词用户实际输入的内容少样本示例在提示词里给出一两个“输入-正确输出”的例子相当于考前模拟题我测试过在同一个问题下加了系统提示词和没加回答质量的差距是肉眼可见的。整理一个业务知识问答时我加了这么一段系统提示词效果立刻就不一样了你是本公司的技术客服助理。你只回答与公司产品技术相关的问题。 对于未知问题请明确回答“该问题需要转接人工客服”。 禁止编造任何产品参数。回答请控制在150字以内。这行字看着简单但它把“回答边界”和“幻觉控制”一次性都做了这就是提示词工程的核心价值。2.3 RAG、微调和量化三个常被混淆的进阶概念RAG检索增强生成先把你的文档切块、向量化存进数据库用户提问时先去数据库搜出最相关的内容片段再连问题一起塞给模型。它解决的是“模型不知道你的私有知识”的问题。微调把模型拿你的数据继续训练一段时间改变模型内部的权重。它适合改变模型的“风格、语气、格式”不太适合硬塞新知识。量化把模型的权重从高精度压缩到低精度比如从16位压到4位换来的好处是显存占用大幅下降能在便宜的消费级显卡上跑。代价是回答质量和推理速度会有轻微损失。我的建议是零基础阶段先学会RAG就够了因为90%的企业私有知识问答场景靠RAG都可以解决。微调和量化可以等第一个项目跑通了再看。3. 环境准备和模型选型别在第一步就卡死环境配置是劝退重灾区。很多时候不是代码不会写是环境搞不定。这套组合是我带过多个新人后确定的低门槛方案。3.1 硬件需求和开发环境先说硬件很多人一听大模型就觉得要好几张A100其实不是。你要分清“训练”和“推理”的区别阶段硬件需求说明API调用开发任何普通电脑模型在云端你只发请求收结果本地跑7B以下模型16G内存以上电脑即可用CPU也能跑就是慢一点本地跑7B-13B模型消费级显卡8G-24G显存跑量化后的4位版本没问题本地跑70B以上模型多卡大显存服务器新手阶段完全不建议碰零基础入门的第一个项目我建议直接用在线API因为能把精力全部放在应用逻辑上不用被GPU驱动折磨。等到要做私有化部署的时候再切换成开源模型。3.2 我推荐的入门技术栈组合Node和Python要选一个。虽然你标题是程序员但做AI应用Python生态是绕不开的。我推荐的组合是Python 3.10以上版本pip和venvPython自带的虚拟环境或者condaOpenAI SDK、Ollama、LangChain、Streamlit向量数据库Chroma或FAISS写程序之前先建虚拟环境这一步是我的职业病强烈建议你也养成这个习惯python -m venv myllm_env source myllm_env/bin/activate # Windows上执行 myllm_env\Scripts\activate pip install openai ollama streamlit langchain sentence-transformers chromadb4. 第一个实战项目跑通本地大模型问答助手下面进入正题。我用一个案例带你把整套流程走一遍。这个项目的完整名字叫“企业制度智能问答助手”是一个可以跑在你自己电脑上的本地知识问答Demo。4.1 项目目标与整体设计这个项目的业务场景是某公司把内部的差旅制度、报销制度、考勤制度整理成几份Word文档。我们做一个工具员工输入“出差住宿标准是多少”系统能根据文档内容给出准确回答而不是让模型乱编。整体架构分成四层文档处理层 - 向量化存储层 - 检索层 - 生成层文档处理层负责把Word和PDF里的文字提取出来按段落切块向量化存储层把文本块转成向量并存入Chroma检索层根据用户问题算出最相关的3到5个文本块生成层把这几个文本块连同一个系统提示词一起发给大模型生成回答4.2 文档切块和向量化核心代码文档切块是RAG里面最容易被低估的环节。切太快语义不完整切太慢检索精度下降。行业里的经验值是每个块256到512个Token之间块与块之间再留一点重叠。from langchain.text_splitter import RecursiveCharacterTextSplitter # 按字符分割每个块500字符重叠100字符 splitter RecursiveCharacterTextSplitter( chunk_size500, chunk_overlap100, separators[\n\n, \n, 。, , , , ], ) documents splitter.split_text(company_policy_text) print(f原始文档被切成 {len(documents)} 个文本块)切完之后要做向量化。向量化的意思是把一段文字转换成一串几百维的数字让语义相近的文字在数字空间里离得更近。这里我推荐用一个开源的文本嵌入模型原因是免费、本地运行、隐私安全from sentence_transformers import SentenceTransformer import chromadb # 加载本地嵌入模型 embedding_model SentenceTransformer(BAAI/bge-small-zh-v1.5) # 初始化持久化向量数据库 chroma_client chromadb.PersistentClient(path./knowledge_db) collection chroma_client.get_or_create_collection( namecompany_policy, metadata{hnsw:space: cosine} ) # 逐个存储文本块和对应向量 for idx, doc in enumerate(documents): vector embedding_model.encode(doc) collection.add( ids[fdoc_{idx}], embeddings[vector.tolist()], documents[doc], metadatas[{source: 公司制度.docx}] )这里用的是bge-small-zh-v1.5这个中文嵌入模型体积小效果在中文场景下很稳。第一次运行会自动下载之后就能离线使用。4.3 接入大模型实现流式问答检索部分做完之后生成部分的逻辑就简单了。先用用户的问题去向量库里找相关内容然后拼成提示词发给模型。from openai import OpenAI client OpenAI( base_urlhttp://localhost:11434/v1, # 本地Ollama服务地址 api_keyollama # 本地服务不校验密钥填个占位符 ) def ask_gpt(question: str): # 步骤1检索相关文档片段 results collection.query( query_embeddings[embedding_model.encode(question).tolist()], n_results4 ) # 步骤2构建增强提示词 context \n\n.join(results[documents][0]) system_prompt ( 你是企业制度问答助手。请严格根据以下资料回答。 如果资料中找不到答案明确说‘公司制度里没有相关规定’。 ) user_content f相关资料\n{context}\n\n用户问题{question} # 步骤3调用模型生成回答开流式输出体验更好 stream client.chat.completions.create( modelqwen2.5:7b, messages[ {role: system, content: system_prompt}, {role: user, content: user_content}, ], temperature0.1, streamTrue ) for chunk in stream: delta chunk.choices[0].delta.content if delta: yield delta流式输出是最有“AI感”的地方。把streamTrue打开后模型是一个字一个字蹦出来的结果而不是等全部生成完一次性返回。做网页应用的时候用户看到打字机效果体验会好非常多。这段代码背后用到的模型是qwen2.5:7b通过Ollama运行在本地。Ollama可以理解成“大模型界的Docker”一条命令就能下载并启动模型服务自带的OpenAI兼容接口让我们可以少学一套SDK。这个组合是我实测性价比最高的方案。4.4 用Streamlit做一个带界面的Demo纯命令行交互不方便演示我用Streamlit做了个网页界面这也是把这个项目“做完整”的关键一步。import streamlit as st st.title(公司制度智能问答) question st.text_area(请输入你的问题, height100) if st.button(提问): if not question.strip(): st.warning(请输入问题) else: answer_so_far placeholder st.empty() for token in ask_gpt(question): answer_so_far token placeholder.markdown(f**回答** {answer_so_far}▌) placeholder.markdown(f**回答** {answer_so_far})界面里我特别用了st.empty()加markdown更新的方式让流式输出的每个字都能实时显示在网页上。如果直接使用默认的st.write要等全部输出完成才能一次显示打字机效果就没了。启动命令只有一行streamlit run app.py浏览器访问本地端口你就能看到自己做出来的问答助手页面。到这里“零基础入门大模型开发”就已经走通了从概念到环境、从代码到界面一个完整的本地RAG项目就算成型了。5. 让项目更上一层楼进阶配置与质量优化第一个Demo跑通之后你会遇到一个很现实的问题效果时好时坏。有的回答很准有的回答明显跑偏。这个章节讲怎么系统地优化。5.1 检索精度优化从切块到重排我实际测过RAG问答效果大约七成取决于检索质量三成取决于生成质量。检索不准确后面模型再聪明也无济于事。检索优化的几个方向调整切块大小制度文档条款式文字多块切成300字符反而比500更准。多试几组对比结果。增加检索数量n_results从4改成6上下文更全但别太多超过8个块容易把无关内容带进来。加一个重排步骤第一次检索回来20个块用一个轻量重排模型把最相关的5个排到最前面。这个技术叫Rerank是提升精度的利器。重排的代码实现非常短加了之后效果立竿见影from sentence_transformers import CrossEncoder reranker CrossEncoder(BAAI/bge-reranker-base) # 把查询和每个候选块拼成对计算相似度分数取Top5 pairs [[question, doc] for doc in candidate_docs] scores reranker.predict(pairs) top_indices sorted(range(len(scores)), keylambda i: -scores[i])[:5]5.2 系统提示词调优模板提示词调优是一个反复测试的过程但有几个方向是确定性有效的给模型“角色定位”和“回答边界”比什么都不给强得多明确告诉它“资料不够时怎么处理”能显著减少幻觉要求它“基于给定的资料回答”能大幅降低编造概率必要时设定回答格式比如“先给结论再列依据”这里分享一个模板是我在多个项目中验证过的通用型系统提示词你是{业务领域}专家助手。你的回答必须遵守以下规则 1. 仅依据提供的资料内容回答不得使用资料之外的知识 2. 资料信息不完整时回答“该问题暂时无法解答” 3. 引用资料时说明依据的条款或章节来源 4. 回答必须包含关键结论优先细节随后补充 5. 使用简洁、专业、客观的书面语注意第3点很重要。加了“说明来源”之后用户会明显更信任回答因为能看到这句话是从哪段资料里来的追查起来也容易。5.3 模型选型的下一步什么时候该上微调聊到这儿你应该能感受到RAG和微调的分工了。我个人判断是否微调的标准很简单如果你想让模型“知道”某个私有知识库里的事情先试RAG一般够用了如果你想让模型“像某种风格的人一样说话”比如“像财务负责人一样审核差旅单”微调更适合企业项目落地时两种经常会结合用微调负责“学会说话的方式”RAG负责“拿到说话的内容”。零基础阶段不需要急着学微调先把RAG调到最佳状态你就已经超越了大多数只会调API的开发者。5.4 部署与性能优化小贴士项目做完要给别人用部署就绕不开。本地跑模型和线上放在一起对比项目本地部署线上API数据隐私数据不出内网安全可控需要看服务商的数据政策成本硬件一次投入按Token计费量大会很贵并发能力受显卡限制弹性扩缩容起步门槛需要折腾驱动和显存注册即用如果在本地部署有几个重要的性能经验是我踩过坑才记住的用4位量化模型Ollama里默认就是4位显存需求大减首次推理冷启动慢可以用“预热机制”在服务启动时发一个空请求并发请求多时GPU显存会被打满导致OOM需要做排队处理或者用vLLM这类专业推理框架CPU也能跑7B模型就是速度慢大概每秒几个字做个内部体验Demo可以接受6. 零基础入门最容易踩的坑我的排查实例和心得最后这部分是我最想分享的实操经验都是真实调试日志提炼出来的没有一个是书上能看到的。6.1 现象一同样的代码别人能跑你不能跑——环境版本冲突这是我带新人时最常遇到的情况。很多新手在全局环境里直接装包装了什么冲突了什么自己都不知道。解决办法就是一开始就用虚拟环境并且固定关键版本。我目前的基线版本是自己验证过的python 3.10 或 3.11 torch 2.3.0CPU版本用cpuindexGPU版本按CUDA版本对应 sentence-transformers 3.0.1 或以上 chromadb 0.5.5 左右 langchain 0.3.x注意0.1到0.2、0.2到0.3有不少API变化安装依赖的时候不要无脑装最新版。langchain这个大库里API变动很频繁照着老教程写经常报错最好的办法是按照一个文档的版本说明来。6.2 现象二回答看似合理但其实是编的——幻觉问题我在测试财务报销问答的时候问它“加班餐补上限是多少”它居然答出了“80元”。我翻了半天制度文档发现根本没有这个条款。这就是典型的幻觉。排查后发现原因是检索模块返回的4个文本块里有一个提到了餐补相关字样模型就把那个块里的数字和另一个无关块的内容拼接组合了。解决办法是双管齐下一是上面提到的“必须严格依据资料回答”的系统提示词二是在生成之前检查检索结果的相关度分数低于某个阈值的检索内容直接丢弃。6.3 现象三中文乱码和截断问题页面显示回答时出现“”这类乱码大概率是字符编码问题。Windows的老毛病主要是终端编码不是UTF-8写代码的时候注意所有文件统一UTF-8网页层配置好charset就行了。截断问题更有意思我用API调用的时候明明没超长但模型只答了一半就停了。查了一下原因是上下文窗口里把“输入输出”都算进去了而且系统提示词和检索出来的文本块也占了很多Token。解决思路就是控制检索块数量和文本长度给输出预留空间。6.4 现象四检索出来一堆相关但其实没用的内容这一个非常典型我塞进去一堆规章制度问“请假流程是什么”检索出来的块可能包含了考勤制度、年假制度、加班制度看着都相关但真正讲“请假流程”的那句话分散在各个块里模型就答得很笼统。我尝试的解决方案是给每块文本加了“元数据标签”比如来源章节、标题名称然后检索时把where条件限定在匹配的文档子集里。这个操作对结构化文档特别有效相当于先按类别过滤再语义搜索精度提升明显。6.5 现象四Token费用超出了预期的小项目怎么控制成本第一次跑完整流程的时候我明明输入输出才几千字账单出来却吓一跳。后来发现是后台自动重试导致的。大模型API在超时或服务抖动时会自动重试每次重试都重新计费而且流式输出中断后重连也会重复计算输入Token。控制这块的三个做法设置合理的超时时间别默认60秒傻等给每次请求设置max_tokens防止模型输出失控监控层面记录每次调用的Token用量做对应控制7. 写在最后小白入门的行动路线图我从最开始就强调零基础入门大模型开发核心不是“学”而是“做出第一个能跑的项目”。以下是我建议你接下来这一周的行动路线第1天装好Python虚拟环境装依赖跑通一个最简调用Demo第2天用Ollama拉一个7B模型通过OpenAI兼容接口调用体验流式输出第3-4天把几份文档喂给切块工具自己动手写向量化和存入第5-6天实现RAG检索、重排、提示词拼装完成问答主流程第7天用Streamlit包装成网页部署到云服务器或内网机器这条路线跑完之后你就不再是“零基础”了。你已经拥有了自己动手搭建大模型应用的能力下一步再去深挖模型原理、阅读论文、学习微调就有了具体的应用背景做支撑不会再觉得是在看天书。我自己的体会是做这份工作最有成就感的一刻不是算法指标多好看而是第一次把一个内部工具真正交到使用者手上听到对方说“这个比我搜文档快多了”。如果你在跑这个流程的时候卡住了回顾这篇内容里的排查清单大部分问题都能在这找到答案。剩下的少数问题那就属于你超越这条路线图的价值了。
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。

↑