DeepSeek + RAG 手把手实战:从 0 到 1 打造你的个人知识库助手(附 Python 源码)

作者:飞哥(一位喜欢讲故事的全栈开发者,擅长把复杂的代码翻译成“人话”)
阶段:GenAI 与大模型应用
关键词:RAG, Embedding, 向量数据库, 知识库问答

大家好,我是飞哥。

前两周我们学会了让 AI “好好说话”(Prompt)和“动手干活”(Function Calling)。
但你在实际开发中,一定遇到过这样的尴尬场景:

  • 你问 ChatGPT:“评价一下我们公司最新的 V3.0 架构。”
  • ChatGPT 一脸懵逼:“亲,我只知道 2023 年以前的互联网公开信息,我不认识你们公司啊。”

或者更惨的:

  • ChatGPT 为了迎合你,开始一本正经地胡说八道(这叫幻觉 Hallucination)。

怎么解决?重新训练一个模型?太贵太慢了!
最聪明的办法是:考试时允许 AI “开卷”查资料
这就是RAG (Retrieval-Augmented Generation,检索增强生成)


1. 什么是 RAG?(三步理解法)

第一步:锚定已知 ⚓️

回想一下你做“开卷考试”的过程:

  1. 看到题目(用户提问)。
  2. 翻书,找到相关的段落(检索 Retrieval)。
  3. (或者总结)到试卷上(生成 Generation)。

RAG 的流程一模一样:先查库,再回答。

第二步:生动类比 📖

  • 纯 LLM (ChatGPT):像一个博学但与世隔绝的老教授。他懂历史天文,但不知道今天的新闻,也不知道你公司的机密。
  • RAG:就是给这位老教授配了一个超级图书管理员
    • 当你问问题时,图书管理员先去档案室(你的私有数据库)把相关文件找出来,递给教授。
    • 教授看着文件,结合自己的学识,给你一个完美的答案。

第三步:提炼骨架 🦴

RAG =检索 (Retrieval)+增强 (Augmented)+生成 (Generation)

  1. 用户提问:“怎么配置 Android 混淆?”
  2. 检索:系统去你的文档库里找,找到了proguard-rules.pro相关的三个段落。
  3. 增强:把这三个段落拼在 Prompt 里:“请根据以下资料回答用户问题…”
  4. 生成:AI 输出最终答案。

2. 核心技术:AI 怎么知道“哪段话”是相关的?

这里涉及到一个魔法概念:Embedding (嵌入/向量化)
计算机不认识字,只认识数字。Embedding 就是把一段文字变成一串数字坐标

2.1 什么是 Embedding?📍

  • 类比:图书馆的索书号
    • “苹果”和“香蕉”的索书号会离得很近(都是水果)。
    • “苹果”和“iPhone”的索书号也会离得很近(科技语境)。
    • “苹果”和“卡车”的索书号就会离得很远。

Embedding 模型会把每一句话变成一个高维向量(比如 OpenAI 的text-embedding-3-small模型生成的向量长度是 1536)。
意思越相近的话,它们在数学空间里的距离(余弦相似度 Cosine Similarity)就越近。

2.2 关键步骤:切片 (Chunking) 🔪

你可能会问:“为什么不把整本书直接塞给 AI?”

  1. 窗口限制 (Context Window):就像人的短期记忆有限。
    • 大模型一次只能处理一定长度的文字(称为Token,比如 4k、32k 或 128k)。
    • 如果你把整本《红楼梦》一次性发给它,超出的部分它根本“看不见”,或者会直接报错。
  2. 精度问题:即使模型能吃下整本书,关键信息也容易被淹没在大量的“废话”中(大海捞针),导致回答不准确。

所以,我们需要把大文档切成小块(Chunk)。

  • 不仅是切断:好的切片策略会保留上下文(比如句子不能切一半,段落之间要有重叠 Overlap)。
  • 常用策略:固定字符数切分、按段落切分、递归字符切分(Recursive)。

3. 实战作业:构建你的第一个“个人知识库” 📚

任务背景:你有一份本地的Android开发规范.md,你希望做一个问答工具,能回答关于这份文档的问题。

3.1 架构流程图

1.切片 Chunking

2.Embedding

3.Embedding

4.检索 Search

5.Top K 相关资料

6.生成回答

文档 Document

文本块 Chunks

向量数据库 Vector DB

用户提问 Query

问题向量

LLM 大模型

最终答案

3.2 核心组件选择

  • Embedding 模型:推荐 OpenAItext-embedding-3-small(便宜、效果好)或 HuggingFace 开源模型(如 BGE, M3E)。
  • 向量数据库
    • 入门/本地:ChromaDB, FAISS(轻量级,Python 直接调)。
    • 生产/云端:Pinecone, Weaviate, Milvus(高性能,支持亿级数据)。

3.3 极简代码实现 (Python)

这是一个可以运行的最小化 RAG Demo(不依赖复杂的向量数据库,直接用内存模拟,方便理解原理)。

前置准备:pip install openai numpy

importosimportnumpyasnpfromopenaiimportOpenAI# 1. 初始化客户端# 注意:这里我们需要两个客户端,因为 DeepSeek 目前只负责对话,向量化还得找 OpenAI (或其他)# 客户端 A:负责 Embedding (使用 OpenAI)# client_emb = OpenAI(api_key="YOUR_OPENAI_API_KEY")# 客户端 B:负责对话生成 (使用 DeepSeek)client_llm=OpenAI(api_key="YOUR_DEEPSEEK_API_KEY",base_url="https://api.deepseek.com")# 2. 模拟知识库:公司内部报销政策 (这是大模型绝对不知道的私有知识)knowledge_base=["出差补贴政策:一线城市(北上广深)每天补贴 300 元,其他城市每天补贴 150 元。","交通报销规定:高铁二等座全额报销,飞机经济舱需提前 3 天申请,打车仅限晚 9 点后。","餐饮报销额度:单人单餐上限 50 元,超过部分自理,禁止报销酒水。","住宿标准:一线城市上限 600 元/晚,非一线城市上限 400 元/晚,必须提供增值税专用发票。"]# 辅助函数:获取文本的 Embedding 向量 (本地模拟版,方便教学)defget_embedding(text):# === 教学模式:本地模拟 Embedding (无需 API Key) ===# 原理:关键词匹配模拟向量相似度# 定义向量的维度意义:[补贴相关, 交通相关, 餐饮相关, 住宿相关]vector=[0.0,0.0,0.0,0.0]if"补贴"intextor"一线城市"intext:vector[0]=1.0if"交通"intextor"高铁"intextor"飞机"intextor"打车"intext:vector[1]=1.0if"餐饮"intextor"吃"intextor"酒水"intext:vector[2]=1.0if"住宿"intextor"酒店"intextor"发票"intext:vector[3]=1.0ifsum(vector)==0:returnnp.random.rand(4)returnvector# === 如果您有 OpenAI Key,可以使用下面的真实代码 ===# response = client_emb.embeddings.create(# input=text,# model="text-embedding-3-small"# )# return response.data[0].embedding#辅助函数:计算余弦相似度defcosine_similarity(v1,v2):returnnp.dot(v1,v2)/(np.linalg.norm(v1)*np.linalg.norm(v2))defsimple_chat(user_query):print(f"\n[无 RAG] 正在直接问大模型:{user_query}...")response=client_llm.chat.completions.create(model="deepseek-chat",messages=[{"role":"system","content":"你是一个有用的助手。"},{"role":"user","content":user_query},],temperature=0.7,# 闲聊模式可以稍微高一点,更有创造性)returnresponse.choices[0].message.contentdefrag_chat(user_query):print(f"\n[有 RAG] 正在思考问题:{user_query}...")# === 步骤 1:检索 (Retrieval) ===# 1.1 把用户问题变成向量query_vector=get_embedding(user_query)# 1.2 遍历知识库,计算相似度similarities=[]fordocinknowledge_base:doc_vector=get_embedding(doc)score=cosine_similarity(query_vector,doc_vector)similarities.append((score,doc))# 1.3 找出最相似的 Top 1similarities.sort(key=lambdax:x[0],reverse=True)best_doc=similarities[0][1]print(f"✅ 找到最相关资料 (相似度{similarities[0][0]:.4f}):\n ->{best_doc}")# === 步骤 2:生成 (Generation) ===# 2.1 组装 Promptprompt=f""" 你是一个公司的行政助手。请基于以下【公司内部政策】回答员工问题。 ⚠️ 严格基于参考资料回答,不要编造。 参考资料:{best_doc}员工问题:{user_query}"""# 2.2 调用 LLMresponse=client_llm.chat.completions.create(model="deepseek-chat",messages=[{"role":"system","content":"你是一个有用的助手。"},{"role":"user","content":prompt}],temperature=0.1# 关键设置:RAG 任务建议设低温度,让回答更严谨,减少幻觉)returnresponse.choices[0].message.content# Main 运行if__name__=="__main__":test_query="我去上海出差,每天补贴多少钱?"# 1. 对比:无 RAG (直接问)answer_no_rag=simple_chat(test_query)print(f"\n❌ [无 RAG] AI 回答:\n{answer_no_rag}\n")print("-"*50)# 2. 对比:有 RAG (查资料后再问)answer_rag=rag_chat(test_query)print(f"\n✅ [有 RAG] AI 回答:\n{answer_rag}")

4. 总结

  1. RAG 是企业级 AI 应用的基石。它解决了 AI知识过时数据隐私两大痛点。
  2. Embedding是 RAG 的核心,它实现了“语义搜索”(搜意思,而不是搜关键词)。

下一篇预告
基本的 RAG 做出来了,但你会发现效果有时候并不好:

  • 切片切断了上下文怎么办?
  • 搜出来的资料不准怎么办?
    下一篇,我们将学习RAG 进阶与评估,引入Rerank (重排序)混合检索,打造生产级别的 RAG 系统!

📢 关注“飞哥”

看得懂、学得会、用得上,我是飞哥,一个拥有 10 年经验的全栈 AI 开发者。

  • 👍点赞/收藏:方便日后复习,也防止走丢。
  • 🗣️交流讨论:在评论区留下你的问题,飞哥看到必回!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1160127.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

手把手教你用8款免费AI神器,从零到一轻松搞定毕业论文

面对毕业论文这座大山,你是否感到无从下手?从选题、找文献、搭框架到撰写、修改、降重,每一步都让无数学生感到焦虑。别担心,AI时代已经到来,借助强大的AI工具,你完全可以更高效、更轻松地完成这项任务。 …

实用工具个人备忘录

1.Windows Terminal 可以在window10里面分页新建终端。 2.MouseWithoutBorders,可以使得在同一网络下的不同电脑鼠标互通,方便同时操作两个设备。 3.WSL,Todesk,飞书好用 4.vscode插件:commenttranslate&#xff1a…

免费商用素材网站推荐榜2026:高性价比之选 top5 自媒体/中小微企业/电商

一、引言:免费商用素材需求激增,选型痛点凸显据艾瑞咨询《2025年中国数字创意素材行业研究报告》显示,国内自媒体从业者及中小微企业对免费商用素材的年需求量已突破8亿次,同比增长45%。但与此同时,行业内素材版权纠纷…

生成式AI的内容安全测试:过滤有害输出

随着生成式AI(如GPT系列、扩散模型)在2026年的广泛应用,其内容安全已成为软件测试领域的核心挑战。据统计,2025年全球AI生成内容量同比增长300%,但有害输出(如仇恨言论、虚假信息、偏见内容)的泄…

别光说不练,10分钟带你从零搭建RustFS集群

看了那么多RustFS的文章,是不是已经手痒了,想亲自上手试试它到底有多猛? 别急,今天我就不带大家云评测了,直接上干货。咱们从最简单的Docker单机部署开始,一步步搭起一个生产可用的RustFS集群。跟着我的节…

2026年免费视频素材网站怎么选?权威推荐榜单top5 自媒体/影视创作/短视频

一、引言:短视频创作热潮下,优质免费视频素材缺口扩大据易观分析《2025年中国短视频行业发展报告》显示,2025年国内短视频创作用户规模突破8.5亿人,其中超70%的用户有免费视频素材使用需求,年使用频次平均达32次/人。但…

RustFS 保姆级上手指南:国产开源高性能对象存储

最近在给项目选型对象存储的时候,发现一个挺有意思的现象:一边是MinIO社区版功能逐渐“躺平”,另一边是大家对存储性能和安全性的要求越来越高。就在这时,一个叫 RustFS 的国产开源项目闯入了我的视野。 折腾了一阵子后&#xff…

持续训练中的测试:监控模型退化

持续训练与模型退化的挑战 在当今快速迭代的软件开发环境中,持续训练(Continuous Training, CT)已成为机器学习(ML)系统部署的核心实践。它通过自动化流水线,实时更新模型以适应新数据,提升预测…

基于出行链的电动汽车空间负荷预测:MATLAB编写的注释详解,帮助初学者快速上手计算节点充电负...

基于出行链的电动汽车空间负荷预测,MATLAB,有注释,方便初学者理解上手,此程序用来计算节点处电动汽车充电负荷,不是商业区,住宅区等注意区分。 有参考文献。手把手实现电动汽车充电负荷预测最近在搞城市电网…

测试AI的鲁棒性:极端案例生成

AI鲁棒性测试的必要性与挑战 人工智能(AI)系统的广泛应用已渗透至金融、医疗、自动驾驶等关键领域,但其“黑箱”特性带来了独特的脆弱性。鲁棒性测试旨在评估AI在异常输入或极端条件下的稳定性,防止因小概率事件导致的灾难性失败…

大模型产品经理完整学习路线:从零基础到精通,助你月薪30K+_大模型产品经理学习路线,2026最新

文章提供大模型产品经理系统学习路线,涵盖计算机科学基础、AI/ML知识、大模型技术、产品管理及实战经验五大阶段。结合行业数据,指出国内大模型岗位缺口47万,初级工程师平均薪资28K。文章还提供四阶段学习计划(初阶应用、高阶应用…

Cadence 1.8V LDO电路设计之旅

cadance 1.8v LDO电路 cadance virtuoso 设计 模拟电路设计 LDO带隙基准电路设计 带设计报告(14页word) 基于tsmc18工艺,模拟ic设计 bandgapLDO 1.8v LDO电路 包含工程文件和报告 可以直接打开在模拟电路设计的领域中,Cadence Vir…

一文读懂Agent模型思维链:从概念到实现,提升AI推理稳定性

本文解析了Agent模型中的思维链技术,介绍了Claude的Interleaved Thinking、MiniMax的Thinking-in-Tools等不同实现方式。将思考内容带入上下文可提升多轮推理稳定性,减少推理偏差,并通过签名校验和加密保障安全性。思维链已成为Agent多步骤推…

Marktech推出转模成型封装

Marktech推出新型光电二极管和LED封装,提升光学性能Marktech光电与制造合作伙伴Optrans正在推出新型转模成型光电二极管和LED封装技术,目前处于开发阶段,计划于2026年第二季度向首批客户提供。这些下一代光子学封装适用于355纳米至2300纳米的…

大模型推理服务冷启动优化:从10分钟到秒级的实现技巧

本文介绍百度智能云团队基于vLLM框架对大模型推理服务的冷启动优化,通过跨实例模型权重加载加速、中间状态复用、延迟CUDA Graph捕获、守护实例预铺等技术,将Qwen3-235B-A22B模型的推理服务启动时间从近10分钟缩短到6秒以内。文章详细分析了冷启动的主要…

2026本科生必备9个降AI率工具测评榜单

2026本科生必备9个降AI率工具测评榜单 2026年本科生必备降AI率工具测评:为何需要这份榜单? 近年来,随着AIGC检测技术的不断升级,越来越多的本科生在撰写论文时遭遇了AI率过高的问题。无论是课程论文、毕业设计还是科研项目&#x…

【路径规划】基于A-star、PRM、RRT、人工势场法实现机器人路径规划算法附matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和数学建模资料 &#x1f34…

2025年大模型深度解析:5个颠覆认知的技术真相,小白到程序员必看

本文揭示了2025年大语言模型的5个关键进展:模型训练成本远低于预期;AI排行榜可信度下降;真正的进步来自更聪明的推理与工具调用,而非单纯扩大规模;AI更像国际象棋搭档而非替代者;私有数据成为AI竞争新焦点。…

AI产品岗火爆招聘:校招1-2个月上岸,社招2-4个月转行!收藏这份大模型转行指南

文章介绍AI产品岗位招聘火爆情况,强调12月是转行AI最佳启动点,可避开内卷。详细列举2026年AI高薪岗位TOP4及薪资范围,提供校招1-2个月、社招2-4个月的转行路径。分享学员成功案例,展示双非本科、30等不同背景人士转行成果&#xf…