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/10/13 9:03:38 阅读更多 →
国产替代:MEMS红外测温传感器在激光头过热保护中的毫秒级响应

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

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

2026/10/13 9:03:08 阅读更多 →
计算机毕业设计之大学生成绩管理系统的设计与实现

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

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

2026/10/12 9:19:49 阅读更多 →

最新新闻

DCMTK Windows 64位解压即用:环境配置、命令行工具与C++集成实战

DCMTK Windows 64位解压即用:环境配置、命令行工具与C++集成实战

/* 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 9:02:58 阅读更多 →
对象存储跨区域复制与生命周期管理叠加使用的避坑指南

对象存储跨区域复制与生命周期管理叠加使用的避坑指南

/* 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 9:02:58 阅读更多 →
陕西各级公路SHP文件处理全攻略:从QGIS加载到MapGIS转换

陕西各级公路SHP文件处理全攻略:从QGIS加载到MapGIS转换

简介:《陕西各级公路shp文件》是一份面向GIS学习者、交通规划与城市规划从业者的矢量数据包,完整覆盖陕西省高速公路、一二级公路和三级公路的分级路网,并附带各地级市行政区划边界,适用于ArcGIS、QGIS等常用平台直接加载与空间分…

2026/10/13 9:02:58 阅读更多 →
微信小程序自定义数字键盘设计与实现

微信小程序自定义数字键盘设计与实现

/* 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 9:02:58 阅读更多 →
责任链模式在风控评估系统中的工程化实践

责任链模式在风控评估系统中的工程化实践

/* 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 9:02:58 阅读更多 →
SGI-STL空间配置器源码剖析:两级配置器与内存池设计

SGI-STL空间配置器源码剖析:两级配置器与内存池设计

第一次翻开SGI-STL源码时&#xff0c;大部分人都会在<stl_alloc.h>和<stl_uninitialized.h>面前停下来。这两个文件不像vector、list那样能让你立刻看到数据结构的样子&#xff0c;它们做的是更底层的事&#xff1a;在还没构造任何对象之前&#xff0c;先把裸内存准…

2026/10/13 9:01:55 阅读更多 →

日新闻

物联网系统集成避坑指南:从选型到验收的关键要点

物联网系统集成避坑指南:从选型到验收的关键要点

做了这么多年物联网系统集成的项目&#xff0c;我最大的感受是&#xff0c;大部分坑不是出在技术前沿&#xff0c;而是出在一些看起来很平常的地方。设备选了便宜的、协议没问清楚、现场没摸透、验收标准写得含糊——这些细枝末节&#xff0c;最后都会变成延期、超支和扯皮的大…

2026/10/13 0:00:57 阅读更多 →
ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

如果你玩ESP32有一阵子了&#xff0c;很难不碰到舵机控制这道坎。做智能小车要转方向&#xff0c;做机械臂要抬关节&#xff0c;做云台要偏航俯仰&#xff0c;背后都是同一个东西在干活&#xff1a;舵机。而我见过太多人卡在“代码能编译、舵机就是不听话”这个阶段&#xff0c…

2026/10/13 0:00:57 阅读更多 →
CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

1. 为什么CAN总线至今仍是工业现场的“硬通货”&#xff1f;——从汽车底盘到智能温室的真实需求你有没有拆过一辆老款燃油车的中控台&#xff1f;或者调试过某高校实验室里那台跑着Modbus协议却频频丢帧的PLC控制柜&#xff1f;又或者&#xff0c;在某个农业物联网项目里&…

2026/10/13 0:00:57 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 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/12 21:05:09 阅读更多 →
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/12 14:48:49 阅读更多 →
黑夜航拍船只数据集训练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/12 18:11:17 阅读更多 →