LLM 的"记忆"问题
大语言模型的知识来自训练数据,一旦训练结束,知识就被"冻结"了。2024 年发布的模型不知道 2025 年发生的事情;专有企业知识库中的文档,模型更是一无所知。
RAG(Retrieval-Augmented Generation) 的思路是:不修改模型本身,而是在每次推理时动态检索相关文档,塞入上下文,让模型基于最新信息回答。
向量嵌入:语义的数字化表达
RAG 的核心是将文本转化为高维向量(Embedding),使得语义相似的文本在向量空间中距离相近。
嵌入模型(如 OpenAI text-embedding-3-large、BGE、E5)接收文本,输出固定维度(如 1536 维)的浮点向量,捕捉文本的语义信息而非字面词汇。
"苹果公司发布了新款 iPhone"和"Apple 推出最新智能手机"在向量空间中非常接近,尽管没有任何共同词汇。
RAG 管道的完整流程
[离线索引阶段]
原始文档 → 文本分块(Chunking)→ Embedding → 向量数据库
[在线查询阶段]
用户问题 → Embedding → ANN 检索 Top-K → Rerank → 构造 Prompt → LLM → 回答
主流向量数据库:
- Pinecone:全托管云服务,开箱即用,适合快速原型
- Weaviate:开源,支持混合搜索(向量 + 关键词),可自托管
- Chroma:轻量级本地向量数据库,适合开发调试
- pgvector:PostgreSQL 扩展,适合已有 PG 基础设施的团队
高级优化:Rerank 与 HyDE
Rerank(重排序):ANN 检索召回 Top-50 候选后,用更强的交叉编码器(Cross-encoder)对每个候选与查询的相关性精确打分,取 Top-5 送入 LLM。
HyDE(Hypothetical Document Embeddings):先让 LLM 生成一个"假设性答案",用这个假设答案的 Embedding 去检索,而非原始问题。由于假设答案与真实答案的语义空间更接近,检索质量显著提升。
RAG 不是银弹。当知识库极大、文档质量参差不齐、或问题需要跨多个文档综合推理时,RAG 表现会下滑。GraphRAG、LongContext 等方向正在尝试突破这些局限。