尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
小白程序员必看:手把手教你本地开发RAG知识库,轻松玩转大模型(收藏版)
本文介绍了如何利用RAG技术构建本地知识库以增强大模型在特定领域的回答能力。首先分析了在大模型中直接输入大量文本的局限性提出了微调和RAG两种解决方案并详细阐述了RAG的工作原理。接着通过代码实例展示了如何制作向量数据库、进行知识检索召回并最终生成用于大模型的prompt。文章适合想要深入了解并实践大模型应用的开发者尤其是对本地RAG知识库构建感兴趣的小白程序员。在很多大模型平台上其实都已经内置了RAG知识库的功能通常都是上传文档之后做好分段切分然后在调用大模型的时候就会关联上知识库进行输出。本篇就尝试本地开发一个RAG知识库来学习一下具体的实现逻辑。需求分析通常我们与大模型交互时大模型只能回复它所学习到的知识。 有的平台支持联网查询可以补充部分信息。 不过如果我们希望它回答在某个领域下更垂类的问题时效果可能就不尽人意。这个时候就需要给大模型一些参考资料让它根据资料进行“开卷作答”。但是这就涉及到一个问题我们当然可以将所需的内容比如一篇字数比较少的文章扔给大模型并让它根据文章内容回复。但是如果当参考资料是一本书的时候我们不可能将所有几万字甚至几十上百万字的内容都直接在交互对话的过程中扔给大模型根本不现实。那么就有两个主要的思路微调根据资料内容制作训练集在原模型的基础上进行在训练得到一个更垂类的模型RAG另一种方法就是本篇文章中要讲的RAG技术。RAGRAGRetrieval-augmented Generation检索增强生成是一种结合了语言模型的信息检索技术。从链路上来说该技术并不改变大模型本身而是在用户与大模型交互的过程中增加一个步骤从知识库检索资料的过程。具体如下可以看到相当于是在用户的输入到达大模型之前先送给RAG这边根据用户的输入先对知识库进行信息检索然后拿到相关的部分然后构造prompt合并到用户的输入中再送给大模型。prompt示例你是一位知识助手请根据用户的问题和下列的片段生成准确的回答。用户问题{query}相关片段{separator.join(chunks)}请基于上述内容作答不要编造信息这样知识库和大模型的耦合度更低是一种可插拔的实现方式通过更换知识库的内容就可以实现大模型知识的更替成本更低。技术实现这里将通过代码段的方式对实现步骤进行讲解制作向量数据库首先我们要对知识库做处理将其向量化来可被RAG使用from typing import Listfrom sentence_transformers import SentenceTransformerfrom sentence_transformers import CrossEncoderimport chromadb# step1. 知识库分片def split_info_chunks(doc_file: str) - List[str]: :param doc_file: 知识库的文件 :return: with open(doc_file, r, encodingutf8) as f: content f.read() # 按段落进行分块 return [chunk for chunk in content.split(/n/n)]# 传入你的知识库文件chunks split_info_chunks(doc.txt)# step2. 向量化 使用embedding模型进行向量化embedding_model SentenceTransformer(shibing624/text2vec-base-chinese)def embed_chunk(chunk: str) - List[float]: embedding embedding_model.encode(chunk) return embedding.tolist()embeddings [embed_chunk(chunk) for chunk in chunks]# step3. 存入将向量化后的数据存入向量数据库# 内存型向量数据库chromadb_client chromadb.EphemeralClient()# 创建一个数据库表chromadb_collection chromadb_client.get_or_create_collection(namedefault)def save_embedding(chunks: List[str], embeddings: List[List[float]]) - None: # 定义id chromadb需要定义好id ids [str(i) for i in range(len(chunks))] chromadb_collection.add( documentschunks, embeddingsembeddings, idsids )save_embedding(chunks, embeddings)特殊说明sentence_transformer库用于加载embedding和cross-encoder模型详细使用可以参考https://sbert.net/docs/quickstart.htmlchromadb库一个流行的向量数据库在本demo中主要是对中文做处理所以使用的是shibing624/text2vec-base-chinese该模型关于模型的选择可自行上hugging face找合适的embedding模型至此在用户提问前的服务对于知识库的处理便做好了后续将会对做好的向量数据库进行查阅。知识检索召回本质上这里实现的就是基于用户输入来对向量数据库检索的过程发生在用户提问后对用户输入的处理# 召回即选出最匹配的若干个chunkdef retrieve(query: str, top_k: int) - List[str]: :param query: 用户输入的问题 :param top_k: 最匹配的chunk知识块的数量 :return: query_embedding embed_chunk(query) results chromadb_collection.query( query_embeddings[query_embedding], n_resultstop_k ) return results[documents][0]# 由于召回功能不一定能把最优的知识块排序到最前面# 所以需要重排模型 CrossEncoder进行检索内容的进一步优化def rerank(query: str, retrieved_chunks: List[str], top_k: int) - List[str]: :param query: 用户输入的问题 :param retrieved_chunks: 召回的chunks列表 :param top_k: 重新去最匹配的若干 :return: cross_encoder CrossEncoder(cross-encoder/mmarco-mMiniLMv2-L12-H384-v1) # 将每个召回结果和问题进行关联 pairs [(query, chunk) for chunk in retrieved_chunks] # 重新计算找回结果和问题的匹配度计算得分 scores cross_encoder.predict(pairs) chunk_with_score_list [(chunk, score) for chunk, score in zip(retrieved_chunks, scores)] chunk_with_score_list.sort(keylambda pair: pair[1], reverseTrue) # print(chunk_with_score_list) return [chunk for chunk, _ in chunk_with_score_list][:top_k]至此数据库检索以及优化部分也完成了。demo演示接下来就演示一下实际的效果这里的知识库doc.txt我选用的是鲁迅先生的《狂人日记》来进行RAG演示# 假设用户的提问query 妹妹发生什么事了# 开始进行知识库召回检索和优化# 优先检索最匹配的5个知识块retrieved_chunks retrieve(query, 5)# 对知识块的关联性进行重新排序返回关联度最高的3个知识块reranked_chunks rerank(query, retrieved_chunks, 3)# 将用户提问和返回的知识块拼接成一个promptseparator /n/nprompt f你是一位知识助手请根据用户的问题和下列的片段生成准确的回答。用户问题{query}相关片段{separator.join(reranked_chunks)}请基于上述内容作答不要编造信息print(prompt)#后续就是将该prompt发送给大模型等待大模型的返回这里就不再实现了运行后最终prompt如上相关片段就是RAG的结果本篇主要是应用化实现实际产品中仍需进一步优化。如何学习大模型 AI 由于新岗位的生产效率要优于被取代岗位的生产效率所以实际上整个社会的生产效率是提升的。但是具体到个人只能说是“最先掌握AI的人将会比较晚掌握AI的人有竞争优势”。这句话放在计算机、互联网、移动互联网的开局时期都是一样的道理。我在一线科技企业深耕十二载见证过太多因技术卡位而跃迁的案例。那些率先拥抱 AI 的同事早已在效率与薪资上形成代际优势我意识到有很多经验和知识值得分享给大家也可以通过我们的能力和经验解答大家在大模型的学习中的很多困惑。我们整理出这套AI 大模型突围资料包✅ 从零到一的 AI 学习路径图✅ 大模型调优实战手册附医疗/金融等大厂真实案例✅ 百度/阿里专家闭门录播课✅ 大模型当下最新行业报告✅ 真实大厂面试真题✅ 2026 最新岗位需求图谱所有资料 ⚡️ 朋友们如果有需要《AI大模型入门进阶学习资源包》下方扫码获取~① 全套AI大模型应用开发视频教程包含提示工程、RAG、LangChain、Agent、模型微调与部署、DeepSeek等技术点② 大模型系统化学习路线作为学习AI大模型技术的新手方向至关重要。 正确的学习路线可以为你节省时间少走弯路方向不对努力白费。这里我给大家准备了一份最科学最系统的学习成长路线图和学习规划带你从零基础入门到精通③ 大模型学习书籍文档学习AI大模型离不开书籍文档我精选了一系列大模型技术的书籍和学习文档电子版它们由领域内的顶尖专家撰写内容全面、深入、详尽为你学习大模型提供坚实的理论基础。④ AI大模型最新行业报告2025最新行业报告针对不同行业的现状、趋势、问题、机会等进行系统地调研和评估以了解哪些行业更适合引入大模型的技术和应用以及在哪些方面可以发挥大模型的优势。⑤ 大模型项目实战配套源码学以致用在项目实战中检验和巩固你所学到的知识同时为你找工作就业和职业发展打下坚实的基础。⑥ 大模型大厂面试真题面试不仅是技术的较量更需要充分的准备。在你已经掌握了大模型技术之后就需要开始准备面试我精心整理了一份大模型面试题库涵盖当前面试中可能遇到的各种技术问题让你在面试中游刃有余。以上资料如何领取为什么大家都在学大模型最近科技巨头英特尔宣布裁员2万人传统岗位不断缩减但AI相关技术岗疯狂扩招有3-5年经验大厂薪资就能给到50K*20薪不出1年“有AI项目经验”将成为投递简历的门槛。风口之下与其像“温水煮青蛙”一样坐等被行业淘汰不如先人一步掌握AI大模型原理应用技术项目实操经验“顺风”翻盘这些资料真的有用吗这份资料由我和鲁为民博士(北京清华大学学士和美国加州理工学院博士)共同整理现任上海殷泊信息科技CEO其创立的MoPaaS云平台获Forrester全球’强劲表现者’认证服务航天科工、国家电网等1000企业以第一作者在IEEE Transactions发表论文50篇获NASA JPL火星探测系统强化学习专利等35项中美专利。本套AI大模型课程由清华大学-加州理工双料博士、吴文俊人工智能奖得主鲁为民教授领衔研发。资料内容涵盖了从入门到进阶的各类视频教程和实战项目无论你是小白还是有些技术基础的技术人员这份资料都绝对能帮助你提升薪资待遇转行大模型岗位。以上全套大模型资料如何领取
RELATED

相关推荐

专业实战指南:如何通过ACL动画压缩技术实现游戏性能飞跃

专业实战指南:如何通过ACL动画压缩技术实现游戏性能飞跃

专业实战指南:如何通过ACL动画压缩技术实现游戏性能飞跃 【免费下载链接】acl Animation Compression Library 项目地址: https://gitcode.com/gh_mirrors/acl/acl Animation Compression Library(ACL)动画压缩库作为专为实时动画数据…

📅 2026/11/4 1:34:30
弹性学制的大湾区 EMBA 测评|民企老板择校不踩坑,这几所性价比领先

弹性学制的大湾区 EMBA 测评|民企老板择校不踩坑,这几所性价比领先

不少民企老板读 EMBA 踩过坑:花重金只换来一纸证书,课程空泛难落地,校友圈层杂乱无资源。本次结合5年商科测评经验,从民企实业视角出发,客观拆解大湾区主流 EMBA,帮大家精准择校。本次测评核心标准共四项&a…

📅 2026/9/14 19:17:03
IL2CPP APK逆向工程实战:工具链与代码重建技巧

IL2CPP APK逆向工程实战:工具链与代码重建技巧

1. 项目概述:IL2CPP APK逆向工程的核心挑战逆向编译采用IL2CPP构建的Unity APK,本质上是一场与编译器的博弈。IL2CPP作为Unity的AOT(Ahead-Of-Time)编译方案,会将C#代码转换为C再编译为原生机器码,这个过程…

📅 2026/9/22 4:43:17
MORE NEWS

更多资讯

📰

如何高效使用Komikku:从新手到专家的完整指南

如何高效使用Komikku:从新手到专家的完整指南 Komikku是一款免费开源的Android漫画阅读器,专为漫画爱好者打造。它支持超过200个漫画源,提供个性化阅读体验和智能推荐功能,让你轻松探索和管理喜爱的漫画作品。无论你是漫画阅读新…

📰

探索Hermes Agent的计算机视觉模型集成:CNN、Transformer与生成模型

探索Hermes Agent的计算机视觉模型集成:CNN、Transformer与生成模型 Hermes Agent作为一款强大的AI代理框架,在计算机视觉领域展现出卓越的集成能力,能够无缝整合CNN、Transformer及生成模型等多种视觉技术。本文将深入探讨Hermes Agent如何…

📰

Hermes Agent 大模型部署实战:量化、推理加速与显存优化的组合拳

Hermes Agent 大模型部署实战:量化、推理加速与显存优化的组合拳 Hermes Agent 是一个支持任意模型接入的自进化 AI 代理框架。当你想在自有硬件上把大模型跑起来、跑得快、跑得省,这篇文章会讲清楚量化怎么选、vLLM 参数怎么配、上线后怎么验证。适合准…

📰

终极实战:为Hermes Agent构建专业级监控告警体系

终极实战:为Hermes Agent构建专业级监控告警体系 在AI代理服务日益成为企业核心基础设施的今天,Hermes Agent的性能监控不再是"可有可无"的选项,而是保障服务稳定性的生命线。想象一下,当你的AI助手在凌晨3点突然响应缓…

📰

Hermes Agent容器化部署实战指南:从零到生产级配置

Hermes Agent容器化部署实战指南:从零到生产级配置 在当今的AI代理开发领域,环境一致性和部署效率是决定项目成功的关键因素。Hermes Agent作为一款功能强大的AI代理工具,支持工具调用、交互式CLI、消息集成和定时任务,通过Docke…

📰

企业级AI代理部署实战:Hermes Agent容器化架构深度解析

企业级AI代理部署实战:Hermes Agent容器化架构深度解析 在当今快速发展的AI代理生态中,Hermes Agent以其独特的成长型架构脱颖而出。这款AI代理工具不仅支持多平台工具调用和交互式CLI,更通过先进的容器化部署方案为技术决策者提供了企业级的…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬