RAG 从零搭建:8 步搞定知识库问答
后端转AI第一课RAG是面试重中之重也是第一个简历项目的核心。RAG是什么RAG 给模型查资料再答。模型不记得你的文档那就先检索相关片段拼进提示词再让模型回答——答案有依据、能溯源、不胡说。8步全链路① 文档解析 → ② 切片分块 → ③ Embedding → ④ 向量库存储→ ⑤ 语义检索 → ⑥ 召回重排 → ⑦ Prompt拼接 → ⑧ 大模型生成① 文档解析PDF/Word→文本from langchain_community.document_loaders import PyPDFLoaderdocuments.extend(PyPDFLoader(path).load())documents.extend(Docx2txtLoader(path).load())documents.extend(TextLoader(path, encodingutf-8).load())# 坑表格/图片里的字读不出需要OCR或多模态② 切片分块200-500字重叠from langchain_huggingface import HuggingFaceEmbeddingssplitter RecursiveCharacterTextSplitter(chunk_size300, # 块大小chunk_overlap50, # 重叠防切断语义separators[\n\n, \n, 。, , , , ])chunks splitter.split_documents(documents)# 坑块太大召回糙太小丢上下文③ Embedding中文用bgefrom langchain_community.embeddings import HuggingFaceBgeEmbeddingsembeddings HuggingFaceEmbeddings(model_nameembed_model_name,model_kwargs{device: cpu}, # 无显卡固定cpuencode_kwargs{normalize_embeddings: True} # BGE模型强制归一化向量)# 中文场景用bge/m3e比通用英文模型准④ 向量库存储Chroma最轻from langchain_chroma import Chromavectorstore Chroma(persist_directory./chroma_db,embedding_functionembeddings)⑤⑥ 语义检索 重排retriever vectorstore.as_retriever(search_kwargs{k: 5} # 初召回K块)# 重排Rerank用交叉编码器挑最相关Top-Nfrom langchain_community.cross_encoders import HuggingFaceCrossEncoderfrom langchain.retrievers import ContextualCompressionRetrieverfrom langchain.retrievers.document_compressors import CrossEncoderRerankerreranker CrossEncoderReranker(modelHuggingFaceCrossEncoder(model_nameBAAI/bge-reranker-base),top_n3)compression_retriever ContextualCompressionRetriever(base_compressorreranker, base_retrieverretriever)⑦⑧ Prompt拼接 生成from langchain_community.document_loaders import (PyPDFLoader,TextLoader,Docx2txtLoader,)prompt ChatPromptTemplate.from_messages([(system, 你是一个知识库问答助手。只根据提供的资料回答资料里没有的明确说不知道。回答末尾标注引用来源。),(user, 资料\n{context}\n\n问题{question})])llm ChatOpenAI(modelqwen-max, temperature0.2)def ask(question: str):docs compression_retriever.invoke(question)context \n.join(f[{i1}] {d.page_content} for i, d in enumerate(docs))chain prompt | llmreturn chain.invoke({context: context, question: question})完整示例question 什么是RAGanswer ask(question)print(answer.content)关键认知RAG的稳靠检索质量不是模型多强。召回差模型再强也胡说。过关清单☐ 上传PDF能解析出文本☐ 分块有重叠参数可配置☐ 中文Embeddingbge检索语义相关☐ 回答带引用来源☐ 知识库无答案时明确说不知道 配套Demo代码Star支持backend-to-ai-guide/rag-demo/README.md at main · cxy-ai-gongfang/backend-to-ai-guide · GitHub下一篇RAG优化实战——去幻觉/提召回/成本控制。欢迎关注专栏持续更新。

相关新闻

如何用猫抓浏览器扩展轻松捕获网页上的任何媒体资源

如何用猫抓浏览器扩展轻松捕获网页上的任何媒体资源

如何用猫抓浏览器扩展轻松捕获网页上的任何媒体资源 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 还在为网页视频无法下载而烦恼吗?猫…

2026/9/1 4:53:33 阅读更多 →
国产替代:MEMS红外测温传感器在激光头过热保护中的毫秒级响应

国产替代:MEMS红外测温传感器在激光头过热保护中的毫秒级响应

在工业激光加工设备中,激光头是最核心也是最昂贵的部件之一。光学镜片、透镜和激光二极管的损坏,修复成本动辄数千元,而绝大多数损坏的根源都可以追溯到同一个问题:过热。激光工作时产生的大量热量如果不能被及时感知和控制&#…

2026/9/3 6:19:40 阅读更多 →
计算机毕业设计之大学生成绩管理系统的设计与实现

计算机毕业设计之大学生成绩管理系统的设计与实现

人类现已迈入二十一世纪,科学技术日新月异,经济、资讯等各方面都有了非常大的进步,尤其是资讯与网络技术的飞速发展,对政治、经济、军事、文化等各方面都有了极大的影响。利用电脑网络的这些便利,发展一套大学生成绩管…

2026/9/1 5:40:13 阅读更多 →

最新新闻

试压包快速生成软件V2.10实战:焊口台账到压力试验资料一键搞定

试压包快速生成软件V2.10实战:焊口台账到压力试验资料一键搞定

简介:试压包快速生成软件V2.10(注册版,非源码)是一款面向管道工程、无损检测及施工单位技术人员的专业工具,核心价值在于将试压包文档从手工编制转为自动批量生成,显著提升工作效率并降低差错率。软件支持管…

2026/9/3 18:05:50 阅读更多 →
Camera2实战:从架构到填坑的完整指南

Camera2实战:从架构到填坑的完整指南

简介:Camera2Demo是一份面向Android开发者的Camera2 API封装示例,专门解决原生相机接口初始化复杂、业务耦合度高的问题。它把预览、拍照、保存等操作从Activity中剥离,通过统一封装降低API使用门槛,让开发者能够更专注于界面与业…

2026/9/3 18:05:50 阅读更多 →
MFC自绘CListCtrl完美实现:失焦保持高亮、斑马纹与自定义行高

MFC自绘CListCtrl完美实现:失焦保持高亮、斑马纹与自定义行高

简介:这是一份面向MFC开发者的自绘控件参考源码,重点演示如何通过重载OnDrawItem与OnDrawColumnHeader实现CListCtrl及CHeaderCtrl的完全自定义绘制,包括网格线、列表项样式与列头外观,并处理非Item区域的背景绘制,适合…

2026/9/3 18:05:50 阅读更多 →
基于S7-200 SMART的三拖三恒压供水系统设计与实现

基于S7-200 SMART的三拖三恒压供水系统设计与实现

简介:这是一套面向自动化工程师与工业现场调试人员的西门子200smart恒压供水三拖三程序资源,主要解决三台水泵和三台变频器一对一控制时的启停切换、运行稳定性问题;系统支持三台水泵循环软启、定时轮换,并采用PLC内部PID运算实现…

2026/9/3 18:05:50 阅读更多 →
网页FPS准星切换:用CSS变量实现狙击枪到步枪样式

网页FPS准星切换:用CSS变量实现狙击枪到步枪样式

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

2026/9/3 18:05:49 阅读更多 →
ROS语音识别实战:整合科大讯飞API与Python实现机器人听觉

ROS语音识别实战:整合科大讯飞API与Python实现机器人听觉

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

2026/9/3 18:04:49 阅读更多 →

日新闻

AI智能体辅助JS逆向:从V8环境搭建到补环境实战

AI智能体辅助JS逆向:从V8环境搭建到补环境实战

先别急着点开,这不是劝退文,而是想讲清楚一件事:用 AI 做逆向值不值得学?如果要用,怎么搭一套“V8 环境 AI 智能体”来提升效率。最近逆向圈、爬虫圈都在聊 AI Agent、AST 工程逆向、JS 逆向这些词,很多新手…

2026/9/3 0:00:29 阅读更多 →
安卓设备通过修改机型信息解锁游戏高帧率:原理、操作与风险指南

安卓设备通过修改机型信息解锁游戏高帧率:原理、操作与风险指南

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

2026/9/3 0:00:29 阅读更多 →
ARM版OpenJDK 11安装部署全攻略:下载、配置与避坑指南

ARM版OpenJDK 11安装部署全攻略:下载、配置与避坑指南

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

2026/9/3 0:00:29 阅读更多 →

周新闻

备战数据库管理工程师校招:索引、事务、备份恢复核心考点解析

备战数据库管理工程师校招:索引、事务、备份恢复核心考点解析

每年校招季我都会接触不少准备数据库方向笔试的同学,看到最多的状态就是:简历上写着“熟悉 MySQL”“了解索引优化”,一碰到数据库管理工程师的笔试卷,却在索引、事务、锁、备份恢复这些题目上翻车。网易这套 2018 校园招聘数据库…

2026/9/3 4:22:22 阅读更多 →
数字电路时序基石:深入理解建立时间与保持时间

数字电路时序基石:深入理解建立时间与保持时间

1. 这不是“背公式”的事:时间参数到底在约束什么你翻过数字电路教材,一定见过这两个词:建立时间(Setup Time)和保持时间(Hold Time)。它们常被并列写在触发器(Flip-Flop&#xff09…

2026/9/3 4:22:01 阅读更多 →
蓝桥杯国赛超声波测距机:从单片机原理到嵌入式系统实战

蓝桥杯国赛超声波测距机:从单片机原理到嵌入式系统实战

1. 项目缘起:从赛题到超声波测距机的诞生第八届蓝桥杯单片机设计与开发国赛的题目,我至今记忆犹新。它没有直接给出一个花哨的名字,而是用“超声波测距机”这个朴实无华的功能描述,精准地勾勒出了考核的核心。对于当时备赛的我而言…

2026/9/3 4:22:59 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/3 4:17:49 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/3 4:18:56 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/3 4:21:44 阅读更多 →