RAG和向量数据库深入刨析使用场景
RAG与向量数据库深度剖析:从原理到生产级实践一、RAG与向量数据库的核心价值1.1 为什么需要RAG?大语言模型面临三个根本性局限:局限具体表现RAG解决方案知识截止训练数据只到某个时间点实时检索最新文档私有数据无法访问企业内部知识库连接内部文档系统幻觉问题对未知问题编造答案基于检索事实回答RAG的核心公式:textRAG = 检索(用户问题) + 增强(检索结果) + 生成(LLM)1.2 RAG vs 微调:选择决策树维度RAG微调知识更新即时(文档变更即生效)需重新训练(小时/天级)外部知识✅ 天然支持❌ 需注入训练集计算成本低(检索+生成)高(GPU训练)可解释性可引用原文来源黑盒冷启动零样本可用需要标注数据二、向量数据库核心原理2.1 向量化过程python# 文本 → 向量 → 索引 的全流程 from sentence_transformers import SentenceTransformer import numpy as np model = SentenceTransformer('BAAI/bge-large-zh-v1.5') # 原始文本 text = "云计算是一种通过网络按需提供计算资源的技术" # 向量化:768维向量 vector = model.encode(text) print(f"向量维度: {vector.shape}") # (768,) # 向量存储到数据库 # 向量值示例:[0.023, -0.145, 0.678, ..., 0.032]向量维度参考:模型维度适用场景BGE-large-zh1024中文语义搜索text-embedding-3-small1536OpenAI通用text-embedding-3-large3072高精度场景BGE-m31024多语言混合2.2 相似度计算算法算法公式适用场景性能特点余弦相似度cos(θ) = (A·B)/(|A||B|)语义相似度需归一化,最常用欧氏距离√Σ(Aᵢ-Bᵢ)²空间聚类适合L2索引内积ΣAᵢ×Bᵢ推荐系统配合IP索引曼哈顿距离ΣAᵢ-Bᵢ高维稀疏计算快但精度低2.3 向量索引算法对比索引类型原理查询速度召回率内存占用适用场景Flat (暴力)全量比较O(n)100%高小规模(10万)HNSW分层图遍历O(log n)95-99%中生产环境首选IVF聚类倒排O(log n)85-95%低海量数据(1亿)PQ乘积量化O(√n)80-90%极低内存受限场景HNSW参数调优:python# 以Milvus为例 index_params = { "index_type": "HNSW", "metric_type": "COSINE", "params": { "M": 16, # 每层连接数(越大召回越高,内存越大) "efConstruction": 200 # 构建时动态列表大小(越大构建越慢,召回越高) } } search_params = { "metric_type": "COSINE", "params": { "ef": 64 # 搜索时动态列表大小(越大搜索越慢,召回越高) } }三、主流向量数据库选型3.1 核心数据库对比