AI基础概念-第一部分:核心名词与定义(三)
AI基础概念-第一部分:核心名词与定义(三)
AI基础概念-第一部分:核心名词与定义(三)
7. RAG (Retrieval-Augmented Generation,检索增强生成)
通俗理解:让AI先"查资料"再回答。就像考试时可以翻书,从知识库里找相关信息,再基于这些信息生成回答。📚
RAG 的核心理念:开卷考试 vs 闭卷考试 🎓
想象一下两种考试场景:
闭卷考试(传统LLM):
- 只能靠脑子里记住的知识回答
- 碰到不知道的就只能瞎编
- 知识有时效性,可能过时了
- 答案通用但不够精准
开卷考试(RAG):
- 可以翻书、查资料再回答
- 不确定的就去书里找
- 资料是最新的,答案更准确
- 基于实际材料,答案更靠谱
RAG 工作流程详解:
🤔 步骤1:用户提问
"我们公司的报销流程是什么?"
↓
🔍 步骤2:问题向量化
问题 → [0.3, 0.7, 0.2, ...] (转成向量)
↓
📚 步骤3:知识库检索(这是核心!)
在向量数据库中搜索相似度最高的文档
找到:《员工手册第3章-报销制度》
找到:《财务流程指南》
找到:《2024年最新报销规定》
↓
📋 步骤4:上下文增强
把检索到的相关文档片段 + 用户问题 → 组合成完整Prompt
"根据以下资料回答问题:[资料内容]... 问题是:..."
↓
🤖 步骤5:LLM生成答案
基于实际资料生成准确回答
"根据公司规定,报销流程如下:1) 填写报销单..."
↓
✨ 步骤6:返回答案(带引用来源)
答案 + 来源引用(《员工手册第3章》)
两种模式对比:
| 对比项 | 传统LLM | RAG增强 |
|---|---|---|
| 📊 知识来源 | 训练数据(固定的) | 实时检索(动态的) |
| 🕐 时效性 | 知识可能过时 | 可随时更新知识库 |
| 🎯 准确性 | 通用答案,可能不精确 | 基于实际资料,更准确 |
| 💰 成本 | 无额外成本 | 需维护知识库 |
| 🔍 可追溯 | 不知道答案来源 | 可查看引用来源 |
| 🎨 定制化 | 难以定制 | 易于添加专有知识 |
| 🚫 幻觉问题 | 容易产生幻觉 | 大幅减少幻觉 |
RAG 的技术架构组成:
1️⃣ 知识库(Knowledge Base)
- 文档存储:各种格式的原始文档(PDF、Word、网页等)
- 向量数据库:存储文档的向量表示
- 常用工具:Pinecone、Weaviate、ChromaDB、Milvus
- 支持高速相似度搜索
2️⃣ 检索系统(Retriever)
- 向量检索:基于语义相似度搜索
- 关键词检索:基于关键词匹配(BM25算法)
- 混合检索:向量+关键词结合,效果更好
3️⃣ 生成系统(Generator)
- Prompt工程:设计好的提示词模板
- 上下文窗口管理:控制塞入的资料量
- 答案生成:基于检索内容生成回答
实际应用场景:
场景1:智能客服 🤖
客户:"你们的退货政策是什么?"
↓
系统检索:《售后服务条款》《退货须知》
↓
回答:"根据我们的退货政策,7天内未使用的商品可以无理由退货..."
引用:[售后服务条款第2.3条]
场景2:企业知识问答 🏢
员工:"新员工入职需要准备哪些材料?"
↓
系统检索:《HR操作手册》《入职流程指南》
↓
回答:"需要准备:1) 身份证复印件 2) 学历证明 3) 离职证明..."
引用:[HR操作手册-入职篇]
场景3:代码助手 💻
开发者:"这个项目怎么配置Redis?"
↓
系统检索:项目中的 config/redis.js、README.md、技术文档
↓
回答:"在你的项目中,Redis配置在 config/redis.js,需要设置..."
引用:[config/redis.js:15-30]
场景4:医疗辅助诊断 🏥
医生:"这个症状组合可能是什么病?"
↓
系统检索:医学文献、病例数据库、诊疗指南
↓
回答:"根据临床指南,这种症状组合可能是..."
引用:[中国临床诊疗指南-内科卷]
RAG 的优化技巧:
✅ 文档分块策略
- 不要整篇文档存储,要切成小块(Chunk)
- 每块300-500字为宜,保持语义完整
- 块与块之间可以有重叠,避免信息割裂
✅ 检索质量优化
- 使用高质量的Embedding模型
- 检索Top K(通常K=3-5),不要太多
- 加入重排序(Reranking)机制
✅ 提示词设计
- 明确告诉AI:“基于以下资料回答”
- 要求AI标注引用来源
- 不知道时要承认,不要编造
✅ 知识库维护
- 定期更新过时内容
- 删除冗余和重复信息
- 保持文档格式统一
❌ 常见陷阱
- 文档切得太碎,语义不完整
- 检索到的内容太多,超出上下文窗口
- 知识库太陈旧,答案不准确
- 没有引用来源,无法验证
RAG vs Fine-tuning(微调)对比:
| 维度 | RAG | Fine-tuning |
|---|---|---|
| ⏰ 更新速度 | 实时更新知识库即可 | 需要重新训练模型 |
| 💰 成本 | 低(维护数据库) | 高(训练成本大) |
| 🎯 适用场景 | 知识密集型任务 | 风格、格式调整 |
| 🔧 维护难度 | 简单(增删文档) | 复杂(训练流程) |
| 📊 可解释性 | 高(可查看来源) | 低(黑盒模型) |
个人理解:
RAG是让AI变聪明的终极武器!🚀
传统LLM就像一个博学但"脑子僵化"的老教授:
- ❌ 知识截止到训练时间(2023年?2024年?)
- ❌ 不知道你公司的内部规定
- ❌ 不了解你的项目代码
- ❌ 答案通用但不够精准
- ❌ 容易"一本正经地胡说八道"(幻觉问题)
加上RAG后,老教授变成了**“随身带着整个图书馆的智能助手”**:
- ✅ 先查最新资料,再回答(知识永不过时)
- ✅ 可以查你的企业知识库(定制化)
- ✅ 可以查你的项目代码(精准度高)
- ✅ 答案有理有据,还能告诉你来源
- ✅ 大幅减少"睁眼说瞎话"的问题
在 Cursor 中的实际体现:
当我问:“这个项目的API怎么调用?”
没有RAG的回答(通用答案):
"通常API调用使用fetch或axios,示例代码是..."
→ 不了解我的项目,给的是教科书答案
有RAG的回答(精准答案):
"在你的项目中,API调用封装在 utils/api.js 中,
使用了自定义的request方法,配置了token认证和错误处理..."
→ 先检索了我的代码,基于实际情况回答
RAG的三大核心价值:
- 🎯 准确性 - 基于真实资料,不是凭空编造
- 🔄 时效性 - 知识库随时更新,永不过时
- 🔍 可追溯 - 答案有来源,可以验证真伪
一句话总结:RAG = 给AI配个"实时谷歌搜索" + “企业内部维基百科” + “项目代码索引”,让它从"背课文"升级成"开卷考试"!考试都能翻书了,答案能不准吗?📖✨
8. Embedding (向量嵌入)
通俗理解:把文字转成数字(向量),让电脑能理解文字的"意思"。相似的内容会得到相似的数字表示。就像给每个词都配了一个"DNA编码"!🧬
Embedding 的核心理念:让电脑"理解"文字 🤖💬
问题:电脑怎么理解语言?
人类看到"猫",脑子里会想到:毛茸茸、喵喵叫、抓老鼠、可爱…
但电脑只认识 0 和 1,怎么让它"理解"猫是什么?
传统方式(One-hot编码):
"猫" → [1, 0, 0, 0, 0, ...] (第1个位置是1)
"狗" → [0, 1, 0, 0, 0, ...] (第2个位置是1)
"汽车" → [0, 0, 1, 0, 0, ...] (第3个位置是1)
问题:
- "猫"和"狗"的相似度 = 0(完全看不出关系)
- 无法表达语义关系
- 维度太高(词汇表有多大,维度就多高)
Embedding方式(语义编码):
"猫" → [0.2, 0.8, 0.1, 0.9, 0.3, ...] (1536维)
"狗" → [0.3, 0.7, 0.15, 0.85, 0.35, ...] (相似度:0.92)
"汽车" → [0.9, 0.1, 0.8, 0.2, 0.7, ...] (相似度:0.15)
优势:
✅ "猫"和"狗"的向量很接近(都是宠物)
✅ "猫"和"汽车"的向量相差很大(不同类别)
✅ 维度固定(通常512、768、1536维)
✅ 保留了语义信息
Embedding 的神奇特性:
1️⃣ 语义相似性(Semantic Similarity)
相似意思的词,向量距离近。
示例1:动物类
"猫" ≈ "狗" ≈ "老虎" (相似度高)
"猫" ≉ "汽车" ≉ "苹果" (相似度低)
示例2:同义词
"快乐" ≈ "高兴" ≈ "开心" (意思接近)
"快乐" ≉ "悲伤" ≉ "愤怒" (意思相反)
示例3:句子级别
"我爱吃苹果" ≈ "我喜欢吃苹果" (语义相同)
"我爱吃苹果" ≈ "苹果是我最爱的水果" (语义相近)
"我爱吃苹果" ≉ "我讨厌香蕉" (语义不同)
2️⃣ 向量运算(Vector Arithmetic)
向量可以做数学运算,结果有语义意义!🤯
经典例子:
"国王" - "男人" + "女人" ≈ "女王"
"中国" - "北京" + "巴黎" ≈ "法国"
"快" - "快速" + "缓慢" ≈ "慢"
原理:
- "国王" = [男性] + [统治者]
- 减去 [男性],加上 [女性]
- 结果 ≈ [女性] + [统治者] = "女王"
实际应用:
产品推荐:
"iPhone" - "苹果" + "三星" ≈ "Galaxy"
职位推荐:
"程序员" - "技术" + "销售" ≈ "销售工程师"
音乐推荐:
"周杰伦" - "流行" + "摇滚" ≈ "五月天"
3️⃣ 跨语言映射(Cross-lingual)
不同语言的相同概念,向量接近!
"猫"(中文) ≈ "cat"(英文) ≈ "chat"(法语)
"爱"(中文) ≈ "love"(英文) ≈ "amor"(西班牙语)
应用:无需翻译的跨语言搜索
用户用中文搜:"机器学习教程"
能找到英文文档:"Machine Learning Tutorial"
Embedding 的维度解释:
什么是"维度"?
想象每个维度代表一个"特征":
假设简化成5维(实际是几百到几千维):
维度1:是否是生物 (0=否,1=是)
维度2:体型大小 (0=小,1=大)
维度3:是否危险 (0=否,1=是)
维度4:能否飞行 (0=否,1=是)
维度5:是否家养 (0=否,1=是)
"猫" → [1.0, 0.2, 0.1, 0.0, 0.9] 生物、小、不危险、不飞、家养
"狗" → [1.0, 0.5, 0.2, 0.0, 0.9] 生物、中、微危险、不飞、家养
"老虎" → [1.0, 0.9, 0.9, 0.0, 0.0] 生物、大、危险、不飞、野生
"鸟" → [1.0, 0.1, 0.0, 1.0, 0.5] 生物、小、不危险、飞行、半家养
"汽车" → [0.0, 0.7, 0.3, 0.0, 0.0] 非生物、大、有危险、不飞、非生物
实际的 Embedding 维度(如1536维)是通过神经网络自动学习的,每维代表某种抽象特征,人类无法直接解释,但确实能捕捉语义!
常见 Embedding 模型:
| 模型 | 维度 | 特点 | 适用场景 |
|---|---|---|---|
| Word2Vec | 300 | 经典词向量模型 | 词级别任务 |
| GloVe | 300 | 基于全局统计 | 词相似度计算 |
| BERT | 768 | 上下文感知 | 句子理解 |
| Sentence-BERT | 768 | 句子级编码 | 语义搜索 |
| OpenAI text-embedding-ada-002 | 1536 | 高质量、多语言 | 通用场景(推荐)⭐ |
| OpenAI text-embedding-3-small | 1536 | 新版、性价比高 | 通用场景 |
| OpenAI text-embedding-3-large | 3072 | 最高质量 | 高精度需求 |
Embedding 的实际应用:
场景1:语义搜索 🔍
传统关键词搜索:
查询:"如何提升工作效率"
结果:只能找到包含"工作效率"关键词的文档
问题:找不到"提高生产力"、"时间管理技巧"等相关内容
Embedding语义搜索:
查询:"如何提升工作效率" → 向量化
数据库:
"提高生产力的10个方法" → 向量化 → 相似度:0.89 ✅
"时间管理技巧大全" → 向量化 → 相似度:0.85 ✅
"如何做好西红柿炒蛋" → 向量化 → 相似度:0.12 ❌
结果:找到所有语义相关的内容,不限于关键词匹配
场景2:推荐系统 🎯
用户喜欢的电影:"星际穿越" → 向量 A
电影库中:
"盗梦空间" → 向量 B → 距离(A, B) = 0.15 → 高度推荐 ⭐⭐⭐⭐⭐
"三体" → 向量 C → 距离(A, C) = 0.25 → 推荐 ⭐⭐⭐⭐
"泰坦尼克号" → 向量 D → 距离(A, D) = 0.87 → 不推荐 ⭐
场景3:智能分类 📂
待分类文档:"这款手机拍照效果很好,电池续航也不错"
类别向量:
"数码产品评测" → 相似度:0.92 ✅ 归类到这里
"旅游攻略" → 相似度:0.15
"美食推荐" → 相似度:0.08
场景4:问答匹配 💬
用户问题:"笔记本突然关机了怎么办?"
知识库:
Q1: "电脑自动关机的原因是什么?" → 相似度:0.88 ✅
Q2: "如何处理电脑死机问题?" → 相似度:0.75 ✅
Q3: "如何安装Windows系统?" → 相似度:0.25 ❌
返回 Q1 和 Q2 的答案
相似度计算方法:
余弦相似度(Cosine Similarity) - 最常用
公式:相似度 = cos(θ) = (A · B) / (|A| × |B|)
结果范围:-1 到 1
1.0 = 完全相同
0.5 = 有些相似
0.0 = 无关
-1.0 = 完全相反
例子:
向量A = [1, 2, 3]
向量B = [2, 4, 6] (B = 2×A)
相似度 = 1.0 (完全同方向)
向量A = [1, 0, 0]
向量B = [0, 1, 0] (垂直)
相似度 = 0.0 (无关)
欧氏距离(Euclidean Distance)
公式:距离 = √((A₁-B₁)² + (A₂-B₂)² + ... + (Aₙ-Bₙ)²)
结果:距离越小,越相似
0 = 完全相同
小值 = 很相似
大值 = 差异大
Embedding 的优化技巧:
✅ 选择合适的模型
- 词级任务 → Word2Vec
- 句子级任务 → Sentence-BERT
- 通用场景 → OpenAI Embedding(推荐)
✅ 合适的文本长度
- 不要太短(“的”、“了” 没意义)
- 不要太长(超过模型限制会截断)
- 建议:一段话或一个完整句子
✅ 文本预处理
- 去除特殊字符、emoji(如果不需要)
- 统一大小写(对某些模型)
- 去除停用词(可选)
❌ 常见误区
- 把整本书编码成一个向量(太长,信息丢失)
- 用词向量处理句子(应该用句向量)
- 忽略向量维度,随意混用不同模型
个人理解:
Embedding 就是给文字打上**“语义指纹”**!🎨
想象一个场景:
- 你有10000本书,要找和《三体》相似的书
- 传统方法:一本本翻,看有没有"科幻"、"外星人"关键词 → 累死 😫
- Embedding方法:每本书生成一个"指纹向量",找向量接近的 → 秒出结果 ⚡
Embedding 的本质:
- 🧬 编码化:文本 → 数字向量(让电脑能处理)
- 📐 几何化:语义关系 → 空间距离(相似的在空间中靠近)
- 🧠 智能化:不是死板的编码,而是"理解"了语义
形象比喻:
传统编码像身份证号:
- 110101199001010001
- 每个数字有含义(地区、出生日期等)
- 但看不出两个人是否相似
Embedding像DNA:
- 基因相近的生物,特征相似
- 人和猩猩DNA相似度98.8% → 特征相似
- 人和香蕉DNA相似度50% → 差异很大
- 通过DNA可以判断亲缘关系
在 AI Agent 中的作用:
Embedding 是 RAG 的基础!没有 Embedding,RAG 就转不起来:
用户问题:"报销流程是什么?"
↓ Embedding
[0.2, 0.7, 0.3, ...] ← 问题向量
↓
在向量数据库中搜索相似向量
↓
找到:《员工手册-报销篇》 [0.21, 0.69, 0.31, ...] ← 相似度0.95
找到:《财务管理制度》 [0.19, 0.71, 0.29, ...] ← 相似度0.92
↓
把这些文档喂给 LLM
↓
生成准确答案
一句话总结:Embedding 就是给文字装上**“语义GPS定位系统”**,让电脑能在"意思"的地图上找到相似的内容。就像你在地图上找"附近的咖啡店",Embedding 让 AI 能在语义空间中找"意思相近的文档"!🗺️✨
9. Vector Database (向量数据库)
通俗理解:专门存储和搜索这些"数字化文字"(向量)的仓库。能快速找到意思相近的内容。就像一个超级智能的图书管理员!📚🔍
Vector Database 的核心理念:为向量而生的数据库 🗄️
问题:为什么要专门的向量数据库?
传统数据库(MySQL、PostgreSQL):
❌ 擅长精确匹配:SELECT * WHERE name = "张三"
❌ 不擅长相似度搜索:找所有"像张三"的人?无能为力
❌ 无法处理高维向量(1536维)的距离计算
❌ 性能慢:遍历所有向量计算相似度 → 百万数据就崩溃
向量数据库:
✅ 专为相似度搜索优化
✅ 高效处理高维向量(支持几千维)
✅ 毫秒级返回最相似的结果
✅ 支持海量数据(亿级向量)
Vector Database vs 传统数据库:
| 维度 | 传统数据库 | 向量数据库 |
|---|---|---|
| 🎯 查询方式 | 精确匹配 (WHERE id=1) | 相似度搜索 (LIKE this vector) |
| 📊 数据类型 | 文本、数字、日期 | 高维向量 (1536维) |
| 🔍 搜索方式 | 等于、大于、小于 | 余弦相似度、欧氏距离 |
| ⚡ 性能 | 精确查询快 | 相似度查询快 |
| 📈 索引方式 | B树、哈希 | HNSW、IVF、LSH |
| 🎨 应用场景 | 结构化数据存储 | AI、推荐、语义搜索 |
Vector Database 的工作原理:
1️⃣ 存储阶段
原始文档:《员工手册-报销制度》
步骤1:文档分块
"报销需要提供发票和申请单..." → Chunk 1
"报销金额上限为5000元..." → Chunk 2
"报销审批流程需要3个工作日..." → Chunk 3
↓
步骤2:向量化
Chunk 1 → Embedding → [0.21, 0.69, 0.31, ...] (1536维)
Chunk 2 → Embedding → [0.18, 0.72, 0.28, ...]
Chunk 3 → Embedding → [0.23, 0.67, 0.35, ...]
↓
步骤3:存入向量数据库
向量 + 元数据(文档名、页码等) → 向量数据库
2️⃣ 检索阶段
用户问题:"怎么申请报销?"
↓
步骤1:问题向量化
"怎么申请报销?" → Embedding → [0.22, 0.68, 0.33, ...]
↓
步骤2:相似度搜索(这是关键!)
在数据库中找到最相似的向量:
- Chunk 1: 相似度 0.95 ✅ Top 1
- Chunk 3: 相似度 0.87 ✅ Top 2
- Chunk 2: 相似度 0.76 ✅ Top 3
↓
步骤3:返回结果
返回对应的文本内容:
"报销需要提供发票和申请单..."
"报销审批流程需要3个工作日..."
常见向量数据库对比:
| 数据库 | 类型 | 特点 | 适用场景 | 推荐指数 |
|---|---|---|---|---|
| Pinecone | 云服务 | 📦 开箱即用,无需管理 💰 按量付费 🚀 性能强劲 |
生产环境、快速上线 | ⭐⭐⭐⭐⭐ |
| Weaviate | 开源/云 | 🔓 开源免费 🎨 功能丰富 📊 支持GraphQL |
需要定制、企业级 | ⭐⭐⭐⭐ |
| Chroma | 开源 | 🪶 轻量级 🎓 易学易用 💻 Python友好 |
学习、原型开发 | ⭐⭐⭐⭐ |
| Milvus | 开源 | 🚄 超高性能 📈 海量数据(亿级) 🔧 需要运维 |
大规模生产环境 | ⭐⭐⭐⭐⭐ |
| Faiss | 开源库 | ⚡ Meta开源 🔬 研究级性能 🛠️ 需要编码集成 |
研究、自建系统 | ⭐⭐⭐ |
| Qdrant | 开源/云 | 🦀 Rust编写 ⚡ 性能优秀 🎯 易于部署 |
中小型生产环境 | ⭐⭐⭐⭐ |
| pgvector | PostgreSQL扩展 | 🐘 基于PG 📦 无需额外数据库 ⚠️ 性能一般 |
小规模、已有PG | ⭐⭐⭐ |
向量数据库的核心技术:
1️⃣ 索引算法(Index Algorithm)
HNSW(Hierarchical Navigable Small World) - 最常用 ⭐
原理:像高速公路网一样分层
- 顶层:连接大城市(粗略快速)
- 中层:连接中等城市(中等精度)
- 底层:连接所有地方(精确但慢)
查询时:从顶层快速定位大致区域,再逐层细化
优势:查询快、准确率高
劣势:构建索引慢、内存占用大
IVF(Inverted File Index)
原理:先聚类分组,再组内搜索
- 把向量聚成N个簇(cluster)
- 查询时只搜索最近的几个簇
优势:内存占用小、适合海量数据
劣势:准确率略低于HNSW
LSH(Locality-Sensitive Hashing)
原理:相似的向量映射到相同的哈希桶
优势:超快速
劣势:准确率较低
2️⃣ 距离度量(Distance Metric)
余弦相似度(Cosine Similarity):
- 计算向量夹角
- 范围:-1 到 1
- 适合文本向量(推荐)
欧氏距离(Euclidean Distance):
- 计算空间直线距离
- 范围:0 到 ∞
- 适合图像向量
点积(Dot Product):
- 向量内积
- 速度最快
- 适合归一化向量
实际应用场景:
场景1:企业知识库 🏢
步骤1:导入企业文档
- 员工手册.pdf → 100个chunks → 向量化 → 存入数据库
- 财务制度.docx → 50个chunks → 向量化 → 存入数据库
- 技术文档.md → 200个chunks → 向量化 → 存入数据库
步骤2:员工提问
员工:"产假有多少天?"
↓ 向量化
↓ 在数据库中搜索
↓ 找到《员工手册》第5章相关内容
↓ 返回:"产假为98天,符合条件可延长至128天..."
好处:
✅ 不需要员工记住在哪个文档
✅ 不需要精确的关键词
✅ 能找到语义相关的所有内容
场景2:智能客服 🤖
数据准备:
历史客服对话10000条 → 向量化 → 存入数据库
用户提问:"快递怎么还没到?"
↓ 向量化搜索
↓ 找到相似历史问题:
- "物流为什么这么慢?" (相似度0.88)
- "订单已发货,什么时候能收到?" (相似度0.85)
↓ 提取这些问题的最佳答案
↓ 返回给用户
效果:
✅ 即使从未遇到这个问题,也能找到相似答案
✅ 自动学习,不断积累知识
场景3:代码搜索 💻
索引项目代码:
所有函数、类、文件 → Embedding → 向量数据库
开发者查询:"怎么连接Redis?"
↓ 搜索代码库
↓ 找到相关代码:
- utils/redis.js (相似度0.92)
- config/cache.js (相似度0.87)
↓ 展示相关代码片段
好处:
✅ 不用记住文件名和路径
✅ 通过自然语言描述功能即可找到代码
✅ 新人快速熟悉代码库
场景4:图片搜索 🖼️
应用:电商平台"以图搜图"
步骤:
用户上传图片 → 图像Embedding → 向量
↓
在商品图片向量库中搜索
↓
返回相似商品
示例:
用户拍了一件衣服 → 系统找到:
- 同款衣服 (相似度0.95)
- 同色系衣服 (相似度0.82)
- 同风格衣服 (相似度0.78)
向量数据库的优化技巧:
✅ 合理设置分块大小(Chunk Size)
太小(50字):
❌ 语义不完整
❌ 索引数量多,查询慢
太大(2000字):
❌ 无关信息多,相似度不准
❌ Token浪费
推荐:300-500字/chunk ⭐
✅ 添加元数据(Metadata)
不要只存向量,还要存元数据:
{
"vector": [0.2, 0.7, ...],
"metadata": {
"source": "员工手册.pdf",
"page": 15,
"section": "第3章-休假制度",
"timestamp": "2024-11-01",
"author": "HR部门"
}
}
好处:
✅ 可以过滤搜索(只搜某个文档)
✅ 方便追溯来源
✅ 支持更新和删除
✅ 定期更新索引
向量数据库不是"一劳永逸":
- 新文档要及时添加
- 过时内容要删除或更新
- 定期重建索引优化性能
✅ 调整TopK参数
TopK = 3: 只返回最相似的3个结果
✅ 结果精准
❌ 可能漏掉相关内容
TopK = 10: 返回最相似的10个结果
✅ 覆盖更全
❌ 可能有不太相关的
推荐:TopK = 3-5 ⭐
❌ 常见坑点
1. 向量维度不匹配
问题:用768维模型索引,用1536维模型查询
结果:报错或结果错误
2. 过度依赖向量搜索
某些场景传统关键词搜索更合适(如精确匹配ID)
3. 忽略元数据
只存向量不存原文,找到了也不知道是什么
4. 不做归一化
某些距离度量需要向量归一化,否则结果不准
向量数据库选型建议:
🚀 快速上手(学习/原型)
推荐:Chroma
理由:
- 几行代码就能跑起来
- 本地运行,免费
- Python友好
💼 中小型项目(创业公司)
推荐:Pinecone / Qdrant
理由:
- 托管服务,无需运维
- 性能够用
- 成本可控
🏢 大型企业(海量数据)
推荐:Milvus / Weaviate
理由:
- 支持亿级数据
- 可私有化部署
- 功能完整
🐘 已有PostgreSQL
推荐:pgvector
理由:
- 无需额外数据库
- 利用现有PG优势
- 中小规模够用
个人理解:
Vector Database 就是为"找相似"而生的数据库!🎯
传统数据库像档案室:
- 你要找"编号001"的文件 → 很快 ✅
- 你要找"跟001相似的文件" → 无能为力 ❌
向量数据库像智能图书管理员:
- 你说"找跟这本书类似的书" → 秒出结果 ✅
- 不需要精确书名,描述主题就行 ✅
- 还能告诉你相似度排名 ✅
Vector Database 的核心价值:
- 🔍 语义搜索 - 理解"意思",不只是匹配"关键词"
- ⚡ 高速检索 - 百万数据中毫秒级找到最相似的
- 📊 可扩展性 - 支持海量数据(亿级向量)
- 🎯 精准推荐 - 基于相似度的智能推荐
在 AI Agent 中的作用:
Vector Database 是 RAG 系统的大脑存储器!
完整的 RAG 流程:
用户提问 → Embedding(问题向量化)
↓
Vector DB(相似度搜索) ← 这就是向量数据库!
↓
找到相关文档
↓
喂给 LLM 生成答案
没有Vector Database,RAG就转不起来:
- ❌ 普通数据库搜不了"相似"
- ❌ 逐个计算相似度太慢(100万文档算到天黑)
- ❌ 无法支撑实时问答
一句话总结:Vector Database = 超级加强版的"Ctrl+F",不只能找"完全一样的",还能找"意思相近的"!就像你说"找个高高瘦瘦戴眼镜的人",它能把符合特征的都找出来,按匹配度排序!🔍✨
更多推荐


所有评论(0)