前面我们做了基础的知识库(关键词匹配FAQ)。但用户问"我的快递到哪了",即使FAQ里有"物流查询"的条目,关键词匹配也可能找不到。**因为关键词匹配不理解"快递"就是"物流"。**本篇用Embedding + 向量检索让知识库"理解"语义。
关键词检索 vs 向量检索的核心区别:
| 对比维度 | 关键词检索 | 向量检索 |
|---|---|---|
| 匹配方式 | 字面匹配 | 语义匹配 |
| 同义词 | 不支持 | 支持 |
| 理解深度 | 浅 | 深 |
| 计算开销 | 低 | 高 |
| 适用场景 | 精确查找 | 模糊语义查询 |
图:关键词检索 vs 向量检索
1Embedding是什么?
Embedding是将文本(词、句子、段落)转化为高维向量的过程。转化后的向量具有"语义相似则距离近"的特性。
Embedding的工作流程:
- 文本 → Tokenizer 切分为Token
- Token → Embedding模型 → 向量
- 向量间可用余弦相似度衡量语义距离
示例:“我的快递到了吗” 与 “物流状态查询” 的Embedding向量会非常接近,即使字面完全不同。
2向量检索RAG的整体流程
RAG(Retrieval-Augmented Generation)是检索增强生成的缩写,是当前大模型应用的核心架构。
图:RAG检索增强生成流程
RAG的四个步骤:
- 索引阶段:将所有文档Embedding后存入向量数据库
- 检索阶段:用户问题Embedding后查询向量数据库
- 生成阶段:将检索到的相关文档与问题一起喂给大模型
- 回答阶段:大模型基于提供的上下文生成答案
3向量数据库选型
常用的向量数据库对比:
| 数据库 | 特点 | 适用场景 |
|---|---|---|
| Chroma | 轻量级、Python原生 | 原型开发、小中型项目 |
| Milvus | 高性能、分布式 | 大规模生产环境 |
| FAISS | Facebook开源、高效 | 研究、单机场景 |
| Pinecone | 全托管云服务 | 不想运维、快速上线 |
| pgvector | PostgreSQL扩展 | 已有PG的项目 |
入门推荐:Chroma,Python原生、接口简单,几行代码就能跑通。生产环境推荐Milvus或Pinecone。
4实现:增强知识库插件
先安装依赖:
pipinstallchromadbsentence-transformers实现 plugins/knowledge_base/vector_plugin.py:
import chromadbfrom sentence_transformers importSentenceTransformerclassVectorKnowledgeBasePlugin:def__init__(self,persist_dir="data/vector_db"):self.model=SentenceTransformer("shibing624/text2vec")self.client=chromadb.PersistentClient(path=persist_dir)self.collection=self.client.get_or_create_collection(name="faq",metadata={"hnsw:space":"cosine"})defadd_documents(self,documents):ids=[f"doc_{i}"foriinrange(len(documents))]embeddings=[self.model.encode(d["content"]).tolist()fordindocuments]self.collection.add(ids=ids,embeddings=embeddings,documents=[d["content"]fordindocuments],metadatas=[d.get("meta",{})fordindocuments])defsearch(self,query,top_k=3):query_embedding=self.model.encode(query).tolist()results=self.collection.query(query_embeddings=[query_embedding],n_results=top_k)returnresults["documents"][0]ifresults["documents"]else[]5构建索引:入库FAQ数据
import jsonfrom plugins.knowledge_base.vector_plugin importVectorKnowledgeBasePlugin# 加载FAQ数据withopen("data/faq.json","r",encoding="utf-8")asf:faqs=json.load(f)# 初始化插件并入库kb=VectorKnowledgeBasePlugin()documents=[{"content":faq["question"]+" "+faq["answer"],"meta":{"category":faq.get("category","")}}forfaqinfaqs]kb.add_documents(documents)# 测试检索results=kb.search("我的快递到了吗")forrinresults:print(r)# 输出最相关的FAQ:物流查询、快递状态等6混合方案:关键词 + 向量检索
关键词检索和向量检索各有所长,实际项目中通常用混合方案:
- 关键词精确匹配优先(如订单号、产品型号)
- 关键词未命中时,降级到向量检索
- 向量检索后,用关键词做精确过滤
defsearch(self,query,top_k=3):# 第一步:关键词精确匹配kw_result=self.kb_plugin.search_by_keyword(query)ifkw_result:returnkw_result# 第二步:向量语义检索vec_results=self.vector_kb.search(query,top_k)# 第三步:关键词过滤filtered=[rforrinvec_resultsifself._keyword_filter(query,r)]returnfilteredorvec_results7总结与下一篇
本篇要点:
- Embedding将文本转为向量
- RAG检索增强生成是核心架构
- 向量数据库选型:Chroma/Milvus/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时代风口,轻松解锁职业新可能,希望大家都能把握机遇,实现薪资/职业跃迁~