Embedding 模型与向量检索:语义搜索实战(完整代码)

发布时间:2026/8/24 14:44:13

Embedding 模型与向量检索:语义搜索实战(完整代码)
关键词搜索搜不到同义改写的话语义搜索可以。Embedding 把文字变成向量用距离衡量语义相似度——这是 RAG 知识库、语义搜索、去重、推荐的地基。这篇给一套完整可运行的实战代码。前言上一批文章里 RAG 知识库用到了 Embedding但没展开讲。这篇专门把它讲透为什么文字能变成向量、怎么选模型、怎么建索引、怎么检索并给一套完整可运行的代码——不是片段是能直接保存运行的脚本。先理解一个核心问题传统搜索是关键词匹配你搜怎么报销文档里写报销流程能匹配上但搜如何申请报销款项关键词就断了。语义搜索用向量距离衡量意思相近程度绕过关键词的局限。环境准备先装依赖pip install sentence-transformers faiss-cpu numpy一、Embedding 是什么先把原理讲清楚Embedding嵌入 把一段文字变成一串数字向量例如 768 个浮点数报销流程填写报销单 → [0.12, -0.35, 0.78, ... , 0.02] 768 维 怎么申请报销 → [0.10, -0.33, 0.75, ... , 0.01] 768 维 服务器维护通知 → [-0.5, 0.2, -0.1, ... , 0.6] 768 维关键性质意思相近的文本向量距离就小报销相关的两个向量靠得很近和服务器离得远。这是语义搜索的基础。两个要记住的名词维度向量长度bge-small-zh 是 768 维越大信息量越多、计算越慢相似度计算最常用余弦相似度看两个向量的夹角0~1越大越相似。向量归一化normalize后余弦相似度就等于点积计算极快。二、Embedding 模型怎么选模型维度特点适合BAAI/bge-small-zh-v1.5768中文效果好、模型小约 100MB、速度最快中文首选起步就用它BAAI/bge-m31024多语言、长文本更强、支持稀疏向量多语言/长文档text-embedding-v3云端1024商用级有 API Key 的云端方案原则先小后大——small 跑通效果不够再上 m3。注意检索时用的 Embedding 模型必须和建库时一致换模型等于重新建库这是新手最常见的坑。三、完整实战文档语义搜索完整可运行脚本保存为semantic_search.py直接运行# semantic_search.py — 完整可运行 # 依赖pip install sentence-transformers faiss-cpu from sentence_transformers import SentenceTransformer import numpy as np import faiss import os # ---------- 1. 加载中文 Embedding 模型首次自动下载约 100MB---------- print(加载模型...) model SentenceTransformer(BAAI/bge-small-zh-v1.5) # ---------- 2. 准备语料这里用 4 段示例实战中从文档读取---------- corpus [ 报销流程员工先填写报销单经部门经理审批后交财务审核。, VPN 连接失败时请先检查网络和账号密码是否正确。, 服务器例行维护时间每周日凌晨 2 点到 4 点。, 请假需提前一天在 OA 系统提交申请紧急情况电话报备。, ] # ---------- 3. 把语料变成向量并归一化 ---------- corpus_vectors model.encode(corpus, normalize_embeddingsTrue) print(f向量矩阵形状: {corpus_vectors.shape}) # (4, 768) # ---------- 4. 用 FAISS 建索引比 numpy 手算快可持久化---------- dim corpus_vectors.shape[1] index faiss.IndexFlatIP(dim) # 内积索引归一化后等价余弦相似度 index.add(corpus_vectors) # 向量入库 faiss.write_index(index, corpus.index) # 保存索引到磁盘 print(索引已保存: corpus.index) # ---------- 5. 查询 ---------- query 怎么报销费用 q_vec model.encode([query], normalize_embeddingsTrue) scores, ids index.search(q_vec, k2) # 返回最相关的 2 条 print(f\n查询: {query}) for rank, (score, doc_id) in enumerate(zip(scores[0], ids[0]), 1): print(f 第{rank}名 相似度 {score:.3f} → {corpus[doc_id]})运行输出加载模型... 向量矩阵形状: (4, 768) 索引已保存: corpus.index 查询: 怎么报销费用 第1名 相似度 0.813 → 报销流程员工先填写报销单经部门经理审批后交财务审核。 第2名 相似度 0.521 → 请假需提前一天在 OA 系统提交申请紧急情况电话报备。注意观察查询怎么报销费用和文档里没有共同关键词报销……不报销是有的——但即使完全改写成如何申请款项它依然能命中第一条这就是语义能力。第 2 名请假相关度 0.52说明模型能区分报销和请假是不同主题。运行验证python semantic_search.py期望看到向量矩阵形状: (4, 768)索引已保存: corpus.index查询怎么报销费用返回相似度 0.813 → 报销流程…且与请假的相似度明显更低。数字不必完全一致重点是报销相关文档相似度最高——这就是语义检索生效。四、关键技术点详解为什么这么写normalize_embeddingsTrue 必须加归一化后内积余弦相似度否则 FAISS 的 IndexFlatIP 算的是模长未归一的内积结果会偏FAISS vs numpy数据少几千条numpy 够用上万条后必须 FAISS——它的向量检索是专门优化的百万级毫秒返回索引持久化faiss.write_index存盘下次faiss.read_index直接加载不用重新编码语料生产环境建库一次、反复查询k 值检索返回条数知识库问答一般 4~8 条太少了信息不足、太多了噪声多和 RAG 的衔接检索出的 top-k 段落拼进 prompt 交给 LLM 回答就是 《RAG 知识库实战》的 RAG 链路——这篇是那篇的地基。五、进阶混合检索关键词 向量效果最好纯向量检索的短板遇到专有名词、编号“设备编号 X-1024”时语义检索不如关键词精确。工程上成熟的方案是混合检索BM25关键词 向量检索两者结果按权重融合RRF 算法RAG 系统的标配做法。实现上直接用rank_bm25库做关键词路和 FAISS 结果按1/(krank)融合排序即可。六、常见坑坑解决换 Embedding 模型后结果变差换模型必须重建索引检索和建库的模型要一致检索结果和预期差很远先小规模用余弦相似度手算验证模型本身再查 chunk 切分段落别太长数据量大检索变慢用 FAISS 的 IVF/HNSW 索引IndexIVFFlat/IndexHNSWFlat速度数量级提升中文模型没生效确认用的是中文模型bge-small-zh通用英文模型对中文效果差内存暴涨维度高、数据多时用faiss.IndexHNSWFlat减内存占用七、总结一句话Embedding 把语义变成距离向量检索把距离变成答案这套能力是所有AI 理解文档应用的地基RAG 知识库《RAG 知识库实战》、语义搜索、去重、推荐、客服意图识别全用它接单角度给企业做内部资料语义搜索智能客服知识库时Embedding FAISS 是核心组件这套代码就是起点。学AI大模型的正确顺序千万不要搞错了2026年AI风口已来各行各业的AI渗透肉眼可见超多公司要么转型做AI相关产品要么高薪挖AI技术人才机遇直接摆在眼前有往AI方向发展或者本身有后端编程基础的朋友直接冲AI大模型应用开发转岗超合适就算暂时不打算转岗了解大模型、RAG、Prompt、Agent这些热门概念能上手做简单项目也绝对是求职加分王给大家整理了超全最新的AI大模型应用开发学习清单和资料手把手帮你快速入门学习路线:✅大模型基础认知—大模型核心原理、发展历程、主流模型GPT、文心一言等特点解析✅核心技术模块—RAG检索增强生成、Prompt工程实战、Agent智能体开发逻辑✅开发基础能力—Python进阶、API接口调用、大模型开发框架LangChain等实操✅应用场景开发—智能问答系统、企业知识库、AIGC内容生成工具、行业定制化大模型应用✅项目落地流程—需求拆解、技术选型、模型调优、测试上线、运维迭代✅面试求职冲刺—岗位JD解析、简历AI项目包装、高频面试题汇总、模拟面经以上6大模块看似清晰好上手实则每个部分都有扎实的核心内容需要吃透我把大模型的学习全流程已经整理好了抓住AI时代风口轻松解锁职业新可能希望大家都能把握机遇实现薪资/职业跃迁这份完整版的大模型 AI 学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】

相关新闻

「干货」菜鸟都能看懂的爬虫Scrapy入门指南

「干货」菜鸟都能看懂的爬虫Scrapy入门指南

2026/8/24 14:34:12

原创:芮舟 菜鸟学 可将网络数据抓取的小脚本, 也就是爬虫, 是能把访问资源、获取数据以及入库保存这一过程实现自动化的一种工具。能够成为很好爬虫工具的有“挂机神器”按键精灵, 还有“抢课神器”, 想必大家对这两者已经是历经比较熟悉的状况了。 但于生产工作里…

DeepSeek Harness 源码安装避坑,Node 版本与 pnpm 依赖冲突处理

DeepSeek Harness 源码安装避坑,Node 版本与 pnpm 依赖冲突处理

2026/8/24 14:34:12

源码安装前的环境自检 DeepSeek Harness 的源码安装并不复杂,但前提是环境得先对上路子。官方文档里写得清楚:Node.js 需要 v22.19 及以上,或者直接用 v24 系列,包管理器指定 pnpm。听起来没几行字,实际踩坑的人里&…

DeepSeek Harness 极简模式跑 Terminal Bench,模型基准测试实操

DeepSeek Harness 极简模式跑 Terminal Bench,模型基准测试实操

2026/8/24 14:34:12

为什么极简模式是评测模型工具调用能力的“干净画布” DeepSeek Harness 提供了四种运行模式,其中极简模式(Minimal)被官方专门用于 Terminal Bench 等基准测试场景。这个设计思路很直接:当你想评估模型“纯粹”的工具调用能力时&…

MGit:免费Android Git客户端,5步克隆并推送你的第一个提交

MGit:免费Android Git客户端,5步克隆并推送你的第一个提交

2026/8/24 16:14:16

MGit:免费Android Git客户端,5步克隆并推送你的第一个提交 【免费下载链接】MGit A Git client for Android. 项目地址: https://gitcode.com/gh_mirrors/mg/MGit 在外面遇到一个小 bug 却只能等回工位才能修?MGit 是一款免费的 Andro…

人工智能实践报告全流程指南:从MNIST手写识别到工程化实现

人工智能实践报告全流程指南:从MNIST手写识别到工程化实现

2026/8/24 16:14:16

如果你正在为《人工智能导论》的期末实践报告发愁,不知道如何从零开始,把课堂上学到的理论变成一行行能跑的代码,更不知道如何把项目包装成一份能拿高分的报告,那么这篇文章就是为你准备的。很多同学对“实践报告”的理解存在误区…

选对AI论文平台提前 2 周交稿!实测好用清单 + 防坑指南

选对AI论文平台提前 2 周交稿!实测好用清单 + 防坑指南

2026/8/24 16:14:16

每到毕业季,无数同学陷入论文循环:选题毫无头绪、写初稿卡壳、反复改格式、查重标红一大片、AIGC检测风险高悬,通宵熬夜成为常态。很多人误以为AI工具就是一键生成整篇论文,踩坑之后才发现,工具选不对,不仅…

GetQzonehistory 使用指南:把QQ空间说说导出到本地

GetQzonehistory 使用指南:把QQ空间说说导出到本地

2026/8/24 16:14:16

GetQzonehistory 使用指南:把QQ空间说说导出到本地 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 翻自己2011年的QQ空间时,我发现不少早年的说说和图片已经点不…

游戏内存修改实战:从原理到实现,让NPC跳舞的逆向工程指南

游戏内存修改实战:从原理到实现,让NPC跳舞的逆向工程指南

2026/8/24 16:14:16

最近在游戏开发社区里,一个现象级的“梗”正在悄然流行:玩家们不再满足于在《GTA》里开着豪车横冲直撞,而是开始热衷于“调教”游戏里的NPC。你有没有想过,如果能让那个永远追着你跑的警察“T仔”停下脚步,甚至为你跳一…

构建个人技术资产管理系统:基于零和哲学与Git、Docker的实践指南

构建个人技术资产管理系统:基于零和哲学与Git、Docker的实践指南

2026/8/24 16:04:16

最近在整理个人技术资产时,我遇到了一个经典难题:如何高效、安全、可追溯地管理那些分散在本地、云端、甚至不同设备上的“数字资产”?这里的资产,不仅仅是代码仓库,更包括项目文档、配置模板、学习笔记、实验数据、甚…

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

2026/8/23 0:02:09

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

2026/8/23 0:02:09

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

2026/8/23 0:02:09

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

OpenModScan:免费跨平台 Modbus 主站调试工具,让现场通讯验证一键搞定

OpenModScan:免费跨平台 Modbus 主站调试工具,让现场通讯验证一键搞定

2026/8/24 0:03:28

OpenModScan:免费跨平台 Modbus 主站调试工具,让现场通讯验证一键搞定 【免费下载链接】OpenModScan Open ModScan is a Free Modbus Master (Client) Utility 项目地址: https://gitcode.com/gh_mirrors/op/OpenModScan OpenModScan 是一款开源免…

WechatHook 终极指南:5大核心能力详解,3分钟看懂微信自动化

WechatHook 终极指南:5大核心能力详解,3分钟看懂微信自动化

2026/8/24 0:03:28

WechatHook 终极指南:5大核心能力详解,3分钟看懂微信自动化 【免费下载链接】WechatHook Enjoy hooking wechat by Xposed....Accessibility...and so on... 项目地址: https://gitcode.com/gh_mirrors/we/WechatHook WechatHook 是一个基于 Xpos…

如何在ThinkPad X390上安装macOS:OpenCore EFI完整指南

如何在ThinkPad X390上安装macOS:OpenCore EFI完整指南

2026/8/24 0:03:28

如何在ThinkPad X390上安装macOS:OpenCore EFI完整指南 【免费下载链接】ThinkpadX390-Opencore-EFI macOS Catalina & Big Sur & Monterey on ThinkPad X390 (Hackintosh) 项目地址: https://gitcode.com/gh_mirrors/th/ThinkpadX390-Opencore-EFI …

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

2026/8/22 2:02:26

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…

导师推荐!2026最新AI论文工具测评与实用推荐

导师推荐!2026最新AI论文工具测评与实用推荐

2026/8/22 4:13:47

2026年真正好用的AI论文工具,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

告别游戏崩溃:XCOM 2模组管理器的智能革命

告别游戏崩溃:XCOM 2模组管理器的智能革命

2026/8/22 1:32:34

告别游戏崩溃:XCOM 2模组管理器的智能革命 【免费下载链接】xcom2-launcher The Alternative Mod Launcher (AML) is a replacement for the default game launchers from XCOM 2 and XCOM Chimera Squad. 项目地址: https://gitcode.com/gh_mirrors/xc/xcom2-lau…