DeepSeek + 本地知识库:30 分钟给团队搭一个能回答内部问题的问答机器人
最近有几个同事老在群里问报销流程是啥“请假怎么走”明明文档里都写了就是没人翻。我想着干脆用 DeepSeek 搭一个能读我们资料的问答机器人贴到群里谁想问就直接问。折腾了一下午跑通了代码不多这里把过程和踩的坑记一下。为什么非要搞 RAG 而不是直接问大模型很多人一开始都有这个疑问。大模型确实强但有两个毛病它训练数据的截止时间摆在那你公司上个月新改的制度它根本不知道。它不懂的东西会一本正经给你编这就很要命。RAG 的思路其实很朴素把你的资料先切成一小块一小块存进向量库别人提问的时候先从那堆块里把最相关的几段捞出来再连问题一起丢给大模型让它照着资料回答。资料是真实的答案自然就靠谱幻觉也少很多。整体流程把文档切成块 → 每块转成向量存起来 → 提问时按相似度把最相关的块捞出来 → 连同问题一起给大模型 → 得到基于资料的答案。就这四步没有别的玄机。装环境pipinstalllangchain langchain-community chromadb sentence-transformers openaiDeepSeek 提供的是 OpenAI 兼容接口所以不用装它专用的包直接用 openai 库就行。代码1. 先接上 DeepSeekimportosfromlangchain_openaiimportChatOpenAI os.environ[DEEPSEEK_API_KEY]sk-你的key# 在 https://platform.deepseek.com 申请llmChatOpenAI(modeldeepseek-chat,api_keyos.environ[DEEPSEEK_API_KEY],base_urlhttps://api.deepseek.com/v1,temperature0.1,# 问答场景温度调低点别让它自由发挥)2. 读文档 切块fromlangchain_community.document_loadersimportDirectoryLoader,TextLoaderfromlangchain.text_splitterimportRecursiveCharacterTextSplitter loaderDirectoryLoader(./docs,glob*.md,loader_clsTextLoader)documentsloader.load()splitterRecursiveCharacterTextSplitter(chunk_size512,# 一块约 512 字chunk_overlap80,# 相邻块重叠 80 字防止关键句被切裂separators[\n\n,\n,。,,,,, ,],# 按中文标点切)chunkssplitter.split_documents(documents)print(f切出了{len(chunks)}块)3. 向量化存库fromlangchain_community.embeddingsimportHuggingFaceEmbeddingsfromlangchain_community.vectorstoresimportChroma# 本地中文 embedding 模型免费不用联网embeddingsHuggingFaceEmbeddings(model_nameshibing624/text2vec-base-chinese)vectorstoreChroma.from_documents(documentschunks,embeddingembeddings,persist_directory./chroma_db,)4. 检索问答fromlangchain.chainsimportRetrievalQA retrievervectorstore.as_retriever(search_kwargs{k:4})# 取最相关的 4 块qa_chainRetrievalQA.from_chain_type(llmllm,retrieverretriever,return_source_documentsTrue,# 把依据的来源也返回方便核对)resultqa_chain.invoke({query:报销流程是什么})print(result[result])print(\n--- 依据的来源 ---)fori,docinenumerate(result[source_documents][:3]):print(f[{i1}]{doc.page_content[:120]}...)跑出来的效果大致是回答 按公司制度报销要填报销单并附发票直属主管先批财务在 3 个工作日内 复核打款单笔超 5000 元需 CTO 再批一次。 --- 依据的来源 --- [1] 报销管理制度……5000 元以上需 CTO 审批…… [2] 财务指引……报销单需在当月月底前提交……中文 RAG 最容易踩的 5 个坑这 5 个坑我基本全踩过一遍写出来帮你们省点时间。坑现象怎么解分块把信息切裂一句话被切成两半检索不到overlap 调到 60~100 字按英文标点切中文长句被粗暴切断separators 加上 。默认 embedding 不适配中文检索结果对不上问题换 text2vec / bge 这类中文模型温度设太高答案开始自己发挥问答场景 temperature 压到 0.1 以下不返回来源答错了没法排查打开 return_source_documentsTrue翻车后调出来的实测对比指标刚开始调完之后中文检索命中率61%93%平均回答时间4.2s2.8s幻觉率抽检18%4%主要就是换了中文 embedding、把 overlap 调大、温度压低了效果差别挺明显。还能往哪走要支持多轮对话换ConversationalRetrievalChain把历史带上。要是 PDF加载器换成PyMuPDFLoader。数据量大了Chroma 会有点吃力换 Faiss 或 Milvus。想给多人用用 FastAPI 包个 HTTP 接口就行。收个尾说白了 RAG 不复杂核心就是把块切好、中文向量化、检索生成这三步。难点不在大模型而在中文分块和检索质量。上面 5 个坑避开基本就能交付一个能真正用的内部问答机器人了。你在搭 RAG 的时候还踩过哪些坑评论区说说我看看能不能一起解决。

相关新闻

解锁500+AI模型:开源AI生成平台的完全自托管方案

解锁500+AI模型:开源AI生成平台的完全自托管方案

解锁500AI模型:开源AI生成平台的完全自托管方案 【免费下载链接】Open-Generative-AI Unrestricted Open-source alternative to AI video platforms — Free AI image & video generation studio with 500 models (Flux, Midjourney, Kling, Sora, Veo). No co…

2026/10/14 18:50:56 阅读更多 →
HelloGitHub:发现有趣开源项目的终极指南

HelloGitHub:发现有趣开源项目的终极指南

HelloGitHub:发现有趣开源项目的终极指南 【免费下载链接】HelloGitHub :octocat: 分享 GitHub 上有趣、入门级的开源项目。Share interesting, entry-level open source projects on GitHub. 项目地址: https://gitcode.com/GitHub_Trending/he/HelloGitHub …

2026/9/30 19:24:28 阅读更多 →
海淀区科技创新生态:顶天立地与铺天盖地的双轮驱动

海淀区科技创新生态:顶天立地与铺天盖地的双轮驱动

1. 项目背景与核心概念解析 "顶天立地"与"铺天盖地"这两个看似对立的词组,实际上描绘了科技创新生态系统的完整图景。作为全国科技创新中心核心区,海淀区在新年伊始的工作部署中,用这组形象比喻勾勒出区域创新发展的战略…

2026/10/8 7:42:14 阅读更多 →

最新新闻

基于 SpringBoot + Vue3 的跨境小型商品订单管理系统

基于 SpringBoot + Vue3 的跨境小型商品订单管理系统

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 1. 项目背景与需求分析 随着跨境电商的快速发展,小型商家在订单管理方面面临着诸多挑战:订单来源分散、库存同步困难、物流状态跟踪繁琐、客户信…

2026/10/14 18:51:05 阅读更多 →
微信小程序案例:自动随机变化的颜色

微信小程序案例:自动随机变化的颜色

一、项目介绍本次完成小程序案例《自动随机变化的颜色》,展示古诗《望庐山瀑布》。基础功能为点击按钮,四句诗句文字随机更换颜色;根据作业要求做功能扩展,古诗标题颜色与第一行正文颜色保持一致,无论是定时自动变色&a…

2026/10/14 18:51:05 阅读更多 →
STM32F103C8T6裸机工程模板:开箱即用的寄存器级开发基座

STM32F103C8T6裸机工程模板:开箱即用的寄存器级开发基座

简介:本资源是面向STM32嵌入式初学者与项目开发者的C8T6工程模板(库)压缩包,专为快速启动基于STM32F103C8T6芯片的裸机开发而设计,有效解决环境搭建耗时、外设驱动配置复杂、标准库集成繁琐等入门痛点,适用…

2026/10/14 18:51:05 阅读更多 →
告别SecureCRT破解:用Windows Terminal与OpenSSH实现多标签会话管理

告别SecureCRT破解:用Windows Terminal与OpenSSH实现多标签会话管理

简介:这是一份面向 Linux 运维与网络管理人员的 SecureCRT 32 位便携集成包,可在 32 位 Windows 环境下直接运行,解决 SSH/Telnet 远程登录、串口连接与 SFTP 文件传输等日常管理需求。压缩包约 14.38MB,共 97 个文件,…

2026/10/14 18:51:05 阅读更多 →
GoModel 会话保持机制完全指南:固定客户端会话让提供商 Prompt 缓存保持温热

GoModel 会话保持机制完全指南:固定客户端会话让提供商 Prompt 缓存保持温热

【免费下载链接】GoModel AI gateway / AI control plane / AI proxy written in Go. Unified OpenAI-compatible and Anthropic-compatible API for OpenAI, Anthropic, Gemini, Groq, xAI, Ollama, vLLM and more. A LiteLLM alternative with observability, guardrails, st…

2026/10/14 18:51:05 阅读更多 →
pyTEP 实战指南:从环境搭建到强化学习环境集成

pyTEP 实战指南:从环境搭建到强化学习环境集成

简介:pyTEP 是面向过程控制、化工仿真与机器学习研究者的开源 Python 仿真 API,用于田纳西伊士曼(Tennessee Eastman)流程的交互式模拟。它通过高级接口简化复杂工况的设置,用户无需深入理解底层模拟器原理&#xff0c…

2026/10/14 18:50:04 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/14 16:30:29 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 22:01:27 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 7:53:34 阅读更多 →