RAG原理-文本向量化
RAG 原理文本向量化Embedding文本向量化的核心是把人类语言映射成计算机可比较的数值向量。语义越接近的文本在向量空间中的距离通常越近。1. 为什么 RAG 需要文本向量化计算机无法直接判断两段自然语言在“语义上是否相似”。Embedding 模型会把词、句子或文档片段转换为固定维度的向量例如什么是 RAG - [0.0241, -0.3187, 0.1056, ...]向量化后就可以通过余弦相似度、点积或欧氏距离计算文本之间的相关性从而找出与用户问题最相关的知识片段。2. 文本向量化的本质文本向量化完成了从“符号空间”到“向量空间”的映射自然语言文本 - Embedding 模型 - 固定维度的稠密向量好的文本向量应尽量满足语义保持意思相近的文本向量更接近长度固定不同长度的文本都映射到相同维度可计算能够使用距离或相似度函数进行比较可检索可以建立向量索引快速完成 Top-K 召回。例如“如何重置密码”和“忘记密码怎么办”虽然用词不同但语义接近因此它们的向量也应该靠得较近。3. 常见向量化方式方法向量特点优点局限One-Hot高维、稀疏简单直观无法表达词义和词间关系词袋模型BoW统计词频、稀疏实现简单忽略词序与上下文TF-IDF稀疏、强调关键词适合关键词检索难以表达深层语义Word2Vec低维、稠密能表达词语相似性同一个词通常只有一个静态向量上下文 Embedding高维、稠密能理解上下文和句子语义计算与存储成本更高在现代 RAG 系统中通常使用句子级或段落级的稠密 Embedding实际工程中也常把稠密检索与关键词检索组合成混合检索。4. 文本向量化在 RAG 中的位置RAG 包含“离线建库”和“在线查询”两条链路。4.1 离线建库原始文档 - 文档解析与清洗 - 文本分块Chunk - Embedding 模型编码 - 向量 原文 Metadata - 写入向量数据库4.2 在线查询用户问题 - 使用同一 Embedding 模型编码 - 在向量数据库中计算相似度 - 召回 Top-K 文本片段 - 将问题与检索结果组成 Prompt - 交给大模型生成答案关键约束建库和查询必须使用同一个 Embedding 模型并保持向量维度、归一化方式和距离度量一致。否则两个向量不在同一语义空间中检索结果将失去意义甚至会直接出现维度不匹配错误。5. 如何计算向量相似度5.1 余弦相似度余弦相似度关注两个向量的方向而不是绝对长度是文本语义检索中最常见的度量方式cosine⁡(A,B)A⋅B∥A∥ ∥B∥ \operatorname{cosine}(A,B)\frac{A\cdot B}{\|A\|\,\|B\|}cosine(A,B)∥A∥∥B∥A⋅B​结果越接近1方向越一致通常表示语义越相似结果越接近0相关性通常越弱是否出现负值取决于具体 Embedding 模型和向量分布。5.2 点积与欧氏距离点积Inner Product值越大通常越相似但会受到向量模长影响欧氏距离L2 Distance值越小表示距离越近对向量做 L2 归一化后点积、余弦相似度与欧氏距离之间存在确定的换算关系。选择哪种度量方式应以 Embedding 模型说明和向量数据库的索引配置为准。6. 余弦相似度的 Python 实现下面的实现不依赖第三方库并对维度和零向量进行了检查frommathimportsqrtfromtypingimportSequencedefcosine_similarity(vector_a:Sequence[float],vector_b:Sequence[float],)-float:计算两个等长非零向量的余弦相似度。iflen(vector_a)!len(vector_b):raiseValueError(两个向量的维度必须一致)dot_productsum(a*bfora,binzip(vector_a,vector_b))norm_asqrt(sum(a*aforainvector_a))norm_bsqrt(sum(b*bforbinvector_b))ifnorm_a0.0ornorm_b0.0:raiseValueError(余弦相似度不能用于零向量)returndot_product/(norm_a*norm_b)query_vector[0.2,0.1,0.7]document_vector[0.3,0.2,0.6]scorecosine_similarity(query_vector,document_vector)print(f相似度{score:.4f})7. RAG 向量化代码结构下面展示的是框架无关的核心流程。实际项目中只需把embedding_model和vector_db替换成选定模型与数据库的客户端即可。# 离线阶段文档分块并写入向量数据库forchunk_id,chunk_textinenumerate(document_chunks):chunk_vectorembedding_model.encode(chunk_text,normalizeTrue,)vector_db.upsert(item_idstr(chunk_id),vectorchunk_vector,metadata{text:chunk_text,source:document_source,chunk_id:chunk_id,},)# 在线阶段向量化问题并召回最相关的文本块query_vectorembedding_model.encode(user_question,normalizeTrue,)resultsvector_db.search(vectorquery_vector,top_k3,)context\n\n.join(item.metadata[text]foriteminresults)8. Embedding 模型选型要关注什么语言与领域是否适合中文、代码、法律、医疗等目标场景向量维度维度越高并不必然越好同时会增加存储和检索成本最大输入长度超长文本可能被截断因此需要合理设置 Chunk 大小检索任务类型查询和文档是否需要不同的前缀或编码方式归一化要求确认模型输出是否需要 L2 归一化性能与成本综合评估批处理吞吐、延迟、显存占用和 API 费用真实数据评测最终应使用业务查询集通过 RecallK、MRR、nDCG 等指标验证效果。9. 常见问题与避坑9.1 建库和查询使用了不同模型即使向量维度恰好相同不同模型的语义空间通常也不兼容。更换模型后应重新生成全部文档向量并重建索引。9.2 文本块太大或太小太大主题混杂向量语义被稀释还可能超过模型输入上限太小上下文不足召回内容难以支撑回答建议根据文档结构切分并保留适量重叠区域。9.3 只保存向量不保存原文和元数据向量负责检索真正交给大模型的是原始文本。因此应同时保存id vector text source chunk_id page/section version这样才能完成上下文拼接、来源引用、权限过滤和数据更新。9.4 只看相似度不做效果评估相似度高不代表一定能回答问题。生产系统通常还需要设置 Top-K、相似度阈值、Metadata 过滤、关键词混合召回和 Rerank并通过真实问答集持续评估。10. 总结文本向量化是 RAG 检索链路的桥梁它把自然语言转换为可计算、可索引、可比较的向量使系统能够按语义而不只是按关键词查找内容。可以记住下面这条主线文本分块 - 向量化 - 向量存储 - 问题向量化 - 相似度检索 - Top-K 上下文 - 大模型生成其中最容易影响最终效果的因素是Embedding 模型、Chunk 策略、距离度量、Top-K 与重排策略。只有整条链路保持一致并经过业务数据评测RAG 的检索质量才会稳定。

相关新闻

当AI“知道”却“归类错”:一个分类混淆的机制分析

当AI“知道”却“归类错”:一个分类混淆的机制分析

当AI“知道”却“归类错”:一个分类混淆的机制分析摘要:AI分类混淆的根源不在知识,而在机制。本文拆解概率性共现、上下文污染、纠正副作用三层机制,揭示为何“纠正”常无效,并借助向量检索与RAG,以外部规则…

2026/9/25 21:25:12 阅读更多 →
同等学力申硕和双证非全,差的不止一张证,先看你拿证干嘛用

同等学力申硕和双证非全,差的不止一张证,先看你拿证干嘛用

"同等学力申硕"和"非全双证硕士"到底差在哪?很多人纠结这个,其实可以换个问法:你拿这个证,是干嘛用的。区别先摊开说:入学:同等学力申硕免试入学、先修课;非全双证要参加12…

2026/9/25 21:25:12 阅读更多 →
KillerPDF 内置 PDF 2.0 引擎:免费生成 PDF/A-4 归档与 PDF/UA-2 无障碍文档的完整指南

KillerPDF 内置 PDF 2.0 引擎:免费生成 PDF/A-4 归档与 PDF/UA-2 无障碍文档的完整指南

KillerPDF 内置 PDF 2.0 引擎:免费生成 PDF/A-4 归档与 PDF/UA-2 无障碍文档的完整指南 【免费下载链接】KillerPDF Free and open-source PDF editor for Windows with a built-in PDF 2.0 engine. View, annotate, OCR, merge, split, crop, rotate, compare, edi…

2026/9/25 21:25:12 阅读更多 →

最新新闻

Linux网卡驱动从内核匹配到性能调优:Debian/Ubuntu实操与高性能网卡调试指南

Linux网卡驱动从内核匹配到性能调优:Debian/Ubuntu实操与高性能网卡调试指南

先把话放在前面:这篇不是教科书,是我这些年折腾服务器和桌面机积累下来的实操笔记。网卡驱动的坑,十个里有九个出在“驱动和内核没对上”上——版本没对上、符号表没对上、固件没对上,表现出来就是装完系统没网、升级内核后网卡突…

2026/9/26 23:59:34 阅读更多 →
WPF C#视频播放器底层架构设计与FFmpeg硬解实战

WPF C#视频播放器底层架构设计与FFmpeg硬解实战

1. 项目概述:为什么一个“WPF C# 视频播放器”值得从零手写一遍你打开VS,新建一个WPF项目,拖一个MediaElement进去,设置Source,点运行——视频播出来了。看起来很简单。但如果你真在工业上位机、医疗影像终端、安防监控…

2026/9/26 23:59:34 阅读更多 →
杭州网站建设公司4000262263报价揭秘:避开3大坑,官网到底多少钱

杭州网站建设公司4000262263报价揭秘:避开3大坑,官网到底多少钱

杭州网站建设公司4000262263报价揭秘:避开3大坑,官网到底多少钱 找杭州网站建设公司怕被坑高价?别急,先看你心里那杆秤。很多老板拿到报价单看到“8000起”就慌了,看到“5000全包”又觉得有诈。其实,…

2026/9/26 23:59:34 阅读更多 →
2026最新搜狐做app的网站:解决没人访问的UI实战

2026最新搜狐做app的网站:解决没人访问的UI实战

2026最新搜狐做app的网站:解决没人访问的UI实战 网站做好了却没人访问,这是很多老板最头疼的事。 2026年的流量逻辑变了,用户体验(UX)直接决定生死。 今天拆解搜狐做app的网站背后的设计逻辑,教你用专业UI留住用户。…

2026/9/26 23:59:34 阅读更多 →
DeskcommCRM深度体验:从通话留痕到客户管理的销售工作台

DeskcommCRM深度体验:从通话留痕到客户管理的销售工作台

1. 先聊聊为什么我会盯上 DeskcommCRM我接触 DeskcommCRM 这个项目,起因是帮一个做企业服务的团队做销售流程梳理。他们的客户量不算大,每天线索三五十条,客单价高,靠销售一对一跟进。问题在于:客户资料散在销售个人微…

2026/9/26 23:59:33 阅读更多 →
Creo 2.0分解动画实战:从爆炸图到可验证装配工艺

Creo 2.0分解动画实战:从爆炸图到可验证装配工艺

简介:本资源是一份面向Creo 2.0初学者与机械设计工程师的实操型技术教程,聚焦产品装配体的可视化表达核心能力——分解装配创建与动画演示。内容系统覆盖分解状态的建立与管理、运动类型(平移/旋转/复制位置/切换位置)与移动参考设…

2026/9/26 23:58:33 阅读更多 →

日新闻

周新闻

月新闻

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

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

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

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

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

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

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

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

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

2026/9/26 22:52:30 阅读更多 →