AI Agent从无到有42: RAG 数据预处理实战 — 文档加载、切片与向量化
纲要RAG核心概念检索增强生成的原理与价值解决大模型数据时效性与领域知识缺失的关键技术数据预处理全流程Document Loader从多种数据源加载原始文档Text Splitter将大文档切分为语义连贯的片段Embedding Model将文本片段转换为向量Vector Store持久化存储向量并支持相似性检索LangChain实现组件TextLoader、RecursiveCharacterTextSplitterFakeEmbeddings与Chroma向量数据库完整可运行代码从文本到向量存储的端到端示例引言大语言模型虽然具备广泛的通用知识但普遍存在两个固有局限一是知识截止日期Knowledge Cutoff Date问题模型无法获知训练数据截止时间之后的最新信息二是领域知识盲区对于企业内部文档、专业法规等非公开或垂直领域知识模型难以给出准确回答。检索增强生成通过将外部知识库与模型生成能力相结合在回答用户问题前先从知识库中检索相关文档片段并将其作为上下文注入提示词从而显著提升答案的准确性、时效性与可追溯性。本文聚焦RAG流水线的第一环——数据预处理介绍如何利用LangChain将原始文档转化为可供语义搜索的向量存储并提供可直接运行的代码示例。RAG基本原理RAG的核心理念可概括为“先检索后生成”。当用户提出问题时系统执行以下步骤向量化用户问题使用与知识库相同的嵌入模型将问题转换为向量。向量相似性搜索在向量数据库中检索与问题向量最接近的若干文档片段。构建增强提示词将检索到的文档片段与原始问题拼接为最终的模型输入。调用大模型生成模型基于提供的上下文生成可靠答案。用户提问问题向量化向量相似性搜索获取相关文档片段拼接增强提示词大模型生成回答上述流程顺畅运转的前提是知识库的数据预处理——将原始文档加工成适合向量检索的格式这也是本文的核心内容。数据预处理四步骤一个典型的RAG数据预处理流水线包含四个关键环节加载 → 切片 → 嵌入 → 存储。文档加载LangChain提供了多种内置加载器支持TXT、PDF、Markdown、CSV、HTML、Notion等主流格式。所有加载器的输出统一为Document对象包含page_content文本内容和metadata元数据两个字段。TextLoader是最基础的文本文件加载器默认将整个文件作为一个Document返回。文本切片大语言模型的上下文窗口有限过长的文档无法直接输入模型也不利于精确检索——过大的文本块会降低检索的语义粒度。切片器负责将长文本分割为较小的语义块。RecursiveCharacterTextSplitter是LangChain官方推荐的最常用的文本分割器。它通过递归地尝试多个分隔符段落、句子、词等边界来切分文本尽量保持语义单元的完整性。向量化嵌入嵌入模型将文本片段映射为高维空间中的稠密向量语义相近的文本在向量空间中距离更近。LangChain支持OpenAI、HuggingFace以及各类国产嵌入模型。为便于本地测试和流程验证LangChain提供了FakeEmbeddings类可生成随机向量模拟嵌入过程无需任何外部API密钥。生产环境需替换为真实的嵌入模型。向量存储将向量与对应的文本片段存入向量数据库并提供快速的相似性搜索接口。Chroma是一个轻量级的开源向量数据库专为LLM应用设计非常适合本地开发和原型验证。Chroma支持内存模式和持久化模式。LangChain数据预处理实战以下代码演示从原始文本出发完成加载、切片、嵌入和存储的完整流程。使用FakeEmbeddings模拟嵌入无需任何外部API即可运行。环境准备安装所需依赖包pipinstalllangchain langchain-core langchain-community langchain-text-splitters chromadb注意LangChain 0.2.0及以上版本对模块结构进行了重构文档加载器需从langchain_community导入文本分割器需从langchain_text_splitters导入。Chroma的导入可通过langchain_community.vectorstores或独立的langchain_chroma包。完整代码fromlangchain_community.document_loadersimportTextLoaderfromlangchain_community.embeddingsimportFakeEmbeddingsfromlangchain_community.vectorstoresimportChromafromlangchain_core.documentsimportDocumentfromlangchain_text_splittersimportRecursiveCharacterTextSplitter# ---------- 1. 准备原始文本 ----------# 模拟一段产品手册raw_text 产品名称智能温控水杯 X-200 功能描述 1. 实时显示水温精确到 ±0.5°C。 2. 支持手机 App 远程设置目标温度。 3. 内置 5000mAh 电池可续航 48 小时。 4. 采用 316 不锈钢内胆安全健康。 5. 具有过热保护功能超过 99°C 自动断电。 使用说明 - 首次使用前请用清水冲洗内胆。 - 长按电源键 3 秒开机蓝牙自动配对。 - 可通过 App 调节温度范围40°C~100°C。 注意事项 - 请勿将杯体浸入水中清洗。 - 充电时请使用 5V/2A 适配器。 # ---------- 2. 文档加载 ----------# 从字符串直接构造 Document 列表实际使用中可从文件加载docs[Document(page_contentraw_text.strip(),metadata{source:产品手册})]print(f加载文档数:{len(docs)})print(f文档长度:{len(docs[0].page_content)}字符)# ---------- 3. 文本切片 ----------text_splitterRecursiveCharacterTextSplitter(chunk_size100,# 每个块的最大字符数chunk_overlap20,# 相邻块之间的重叠字符数保证语义连贯separators[\n\n,\n,。,, ,]# 优先按段落、换行、标点切分)split_docstext_splitter.split_documents(docs)print(f切片数量:{len(split_docs)})fori,docinenumerate(split_docs):print(f切片{i1}:{doc.page_content[:50]}... (长度{len(doc.page_content)}))# ---------- 4. 向量化与存储 ----------# 使用 FakeEmbeddings 模拟嵌入维度设为 128embeddingsFakeEmbeddings(size128)# 初始化 Chroma 向量库默认存储于内存vectorstoreChroma.from_documents(documentssplit_docs,embeddingembeddings,collection_nameproduct_manual)print(f向量库中文档数量:{vectorstore._collection.count()})# ---------- 5. 相似性检索测试 ----------query如何给水杯充电print(f\n查询:{query})# 将查询向量化并搜索最相似的 2 个文档resultsvectorstore.similarity_search(query,k2)foridx,docinenumerate(results):print(f检索结果{idx1}:{doc.page_content})运行结果解析加载阶段原始文本被封装为一个Document对象包含文本内容和元数据。切片阶段根据chunk_size100和chunk_overlap20文本被分割为多个语义块每个块尽可能保持语义完整。嵌入与存储阶段FakeEmbeddings生成随机向量维度128并存入Chroma向量库。实际应用中应替换为OpenAIEmbeddings或HuggingFaceEmbeddings。检索测试阶段对于“如何给水杯充电”这一查询向量搜索返回了包含充电相关信息的文档片段验证了语义匹配的基本能力。注意事项与最佳实践切片大小选择chunk_size需根据嵌入模型的上下文窗口和业务需求调整。通用场景下500~1000字符通常效果较好过小会丢失上下文过大会降低检索精度。重叠尺寸设置保留chunk_overlap可避免关键信息在切片边界被截断一般设为chunk_size的10%~20%。嵌入模型选型中文场景推荐使用OpenAI的text-embedding-ada-002或HuggingFace的bge-large-zh-v1.5两者均具备良好的中文语义理解能力。向量数据库选型原型开发阶段可使用Chroma内存模式或FAISS生产环境可考虑Pinecone、Weaviate或Milvus等具备分布式能力的方案。导入路径注意事项LangChain 0.2.0及以上版本中TextLoader应从langchain_community.document_loaders导入RecursiveCharacterTextSplitter应从langchain_text_splitters导入Chroma可从langchain_community.vectorstores或langchain_chroma导入。总结数据预处理是构建高质量RAG应用的基石。通过LangChain的文档加载器、文本分割器、嵌入模型和向量数据库四件套开发者可以快速将海量非结构化文本转化为可供语义搜索的知识库。本文的完整代码使用FakeEmbeddings模拟嵌入无需任何外部API密钥便于初学者在本地即刻体验RAG预处理全流程。掌握这些基础后下一步可将检索结果接入大模型构建完整的智能问答系统。

相关新闻

你的围棋AI为什么又慢又飘?手把手KataGo引擎配置与调优完整指南

你的围棋AI为什么又慢又飘?手把手KataGo引擎配置与调优完整指南

你的围棋AI为什么又慢又飘?手把手KataGo引擎配置与调优完整指南 【免费下载链接】katrain Improve your Baduk skills by training with KataGo! 项目地址: https://gitcode.com/gh_mirrors/ka/katrain 同样是打开围棋AI训练软件,别人的KataGo引擎…

2026/8/18 13:31:19 阅读更多 →
Swift 字符串详解:从基础到实战

Swift 字符串详解:从基础到实战

1. 引言 字符串是 Swift 开发中使用频率最高的数据类型之一。无论是处理用户输入、解析网络数据,还是拼接展示文本,都离不开字符串操作。Swift 的字符串在设计上兼顾了安全性与性能,同时也引入了一些与其他语言不同的特性,例如字…

2026/8/19 14:56:50 阅读更多 →
单片机毕设项目:基于 STM32/51 单片机的水体 pH 浊度温度一体化监测系统 基于 STM32/51 单片机的 ADC 模数转换水质采集终端设计(021603)

单片机毕设项目:基于 STM32/51 单片机的水体 pH 浊度温度一体化监测系统 基于 STM32/51 单片机的 ADC 模数转换水质采集终端设计(021603)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于嵌入式单片机,Java、小程序技术领域和毕业项目实战 ✌️…

2026/8/19 16:21:45 阅读更多 →

最新新闻

从0到1玩转Chrome-QRCode:让二维码成为跨设备分享的终极捷径

从0到1玩转Chrome-QRCode:让二维码成为跨设备分享的终极捷径

从0到1玩转Chrome-QRCode:让二维码成为跨设备分享的终极捷径 【免费下载链接】chrome-qrcode :zap: A Chrome plugin to Genrate QRCode of URL / Text, or Decode the QRcode in website. 一个Chrome浏览器插件,用于生成当前URL或者选中内容的二维码&am…

2026/8/20 1:11:21 阅读更多 →
智能体驱动与协同进化验证:构建敏捷参考模型生成引擎

智能体驱动与协同进化验证:构建敏捷参考模型生成引擎

1. 从“画图”到“造引擎”:为什么我们需要敏捷参考模型生成?在软件工程、业务流程设计乃至系统架构领域,我们常常需要一种“蓝图”——也就是参考模型。它可能是一个标准化的数据模型、一个通用的业务流程框架,或者一个可复用的软…

2026/8/20 1:10:21 阅读更多 →
HS2-HF Patch 完整安装指南:十分钟一键搞定 HoneySelect2 汉化与去和谐

HS2-HF Patch 完整安装指南:十分钟一键搞定 HoneySelect2 汉化与去和谐

HS2-HF Patch 完整安装指南:十分钟一键搞定 HoneySelect2 汉化与去和谐 【免费下载链接】HS2-HF_Patch Automatically translate, uncensor and update HoneySelect2! 项目地址: https://gitcode.com/gh_mirrors/hs/HS2-HF_Patch 前几天有朋友跟我诉苦&#…

2026/8/20 1:10:21 阅读更多 →
League Director 完整上手指南:把英雄联盟回放变成专业级视频的终极方案

League Director 完整上手指南:把英雄联盟回放变成专业级视频的终极方案

League Director 完整上手指南:把英雄联盟回放变成专业级视频的终极方案 【免费下载链接】leaguedirector League Director is a tool for staging and recording videos from League of Legends replays 项目地址: https://gitcode.com/gh_mirrors/le/leaguedire…

2026/8/20 1:10:21 阅读更多 →
UE4SS 加载失败别急着删了重装:一张问题分级地图加 3 步排查,让 “Failed to load UE4SS.dll“ 一次说再见

UE4SS 加载失败别急着删了重装:一张问题分级地图加 3 步排查,让 “Failed to load UE4SS.dll“ 一次说再见

UE4SS 加载失败别急着删了重装:一张问题分级地图加 3 步排查,让 "Failed to load UE4SS.dll" 一次说再见 【免费下载链接】RE-UE4SS Injectable LUA scripting system, SDK generator, live property editor and other dumping utilities for …

2026/8/20 1:10:21 阅读更多 →
从全核-25开始:SMUDebugTool实战,把AMD Ryzen底层调校玩明白

从全核-25开始:SMUDebugTool实战,把AMD Ryzen底层调校玩明白

从全核-25开始:SMUDebugTool实战,把AMD Ryzen底层调校玩明白 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目…

2026/8/20 1:10:21 阅读更多 →

日新闻

Framework笔记本BIOS更新变砖,“可维修”承诺遭遇芯片级维修考验!

Framework笔记本BIOS更新变砖,“可维修”承诺遭遇芯片级维修考验!

Framework笔记本BIOS更新引“变砖”危机2026年7月7日,Framework向用户quantum5发送邮件,建议其安装BIOS 3.20更新。然而,更新后电脑出现严重问题,屏幕显示三角形和随机像素图案,风扇狂转,系统完全挂起。qua…

2026/8/20 0:00:46 阅读更多 →
2026还在担忧建站平台哪家好?手把手带你搭建自家网站!

2026还在担忧建站平台哪家好?手把手带你搭建自家网站!

2026还在担忧建站平台哪家好?手把手带你搭建自家网站!据艾瑞咨询发布的《2026年中国企业数字化服务市场研究报告》,2025年国内网站建设市场规模已达896亿元,同比增长18.7%。中国互联网络信息中心数据显示,截至2025年底…

2026/8/20 0:00:46 阅读更多 →
2026高端网站建设公司哪家好?怎么选才能不花冤枉钱?

2026高端网站建设公司哪家好?怎么选才能不花冤枉钱?

2026高端网站建设公司哪家好?怎么选才能不花冤枉钱?据艾瑞咨询《2026年中国企业数字化服务市场研究报告》,2025年国内网站建设市场规模已达896亿元,其中高端定制网站服务占比突破42%。更值得关注的是,91%的规模以上企业…

2026/8/20 0:00:46 阅读更多 →

周新闻

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

如果你是一名开发者,最近可能已经感受到了AI大模型正在从“玩具”变成“生产力工具”的强烈信号。从代码补全到智能Agent,从本地部署到云端API,我们正处在一个技术栈快速重构的节点。然而,面对层出不穷的模型、框架和工具&#xf…

2026/8/19 11:55:18 阅读更多 →
工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

第四篇:反射——高频能量撞墙之后会发生什么? —— 你以为信号已经过去了,其实它正在回来打你 老Q的现场笔记 第五季,我们正式进入工业神经系统层。这里不再是单个设备的战斗,而是整个工厂“经脉”层面的秩序之战。从这一篇开始,你将第一次看清:看似简单的信号传播,背…

2026/8/19 9:46:27 阅读更多 →
【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

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

2026/8/19 11:55:16 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/19 5:04:55 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/19 7:42:22 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/19 11:55:13 阅读更多 →