大语言模型的知识来自训练数据,一旦训练结束,知识就被"冻结"了。2024 年发布的模型不知道 2025 年发生的事情;专有企业知识库中的文档,模型更是一无所知。
RAG(Retrieval-Augmented Generation) 的思路是:不修改模型本身,而是在每次推理时动态检索相关文档,塞入上下文,让模型基于最新信息回答。
RAG 的核心是将文本转化为高维向量(Embedding),使得语义相似的文本在向量空间中距离相近。
嵌入模型(如 OpenAI text-embedding-3-large、BGE、E5)接收文本,输出固定维度(如 1536 维)的浮点向量,捕捉文本的语义信息而非字面词汇。
"苹果公司发布了新款 iPhone"和"Apple 推出最新智能手机"在向量空间中非常接近,尽管没有任何共同词汇。
[离线索引阶段]
原始文档 → 文本分块(Chunking)→ Embedding → 向量数据库
[在线查询阶段]
用户问题 → Embedding → ANN 检索 Top-K → Rerank → 构造 Prompt → LLM → 回答主流向量数据库:
Rerank(重排序):ANN 检索召回 Top-50 候选后,用更强的交叉编码器(Cross-encoder)对每个候选与查询的相关性精确打分,取 Top-5 送入 LLM。
HyDE(Hypothetical Document Embeddings):先让 LLM 生成一个"假设性答案",用这个假设答案的 Embedding 去检索,而非原始问题。由于假设答案与真实答案的语义空间更接近,检索质量显著提升。
RAG 不是银弹。当知识库极大、文档质量参差不齐、或问题需要跨多个文档综合推理时,RAG 表现会下滑。GraphRAG、LongContext 等方向正在尝试突破这些局限。
作者
Xavier
精通javase,javeWeb,SpringBoot,RabbitMQ,SpringCloud,mybatis,docker,redis,SpringMVC等技术,精通python,js等语言。正在学习Agent的路上。相信技术为本。
RAG(检索增强生成)是解决 LLM 知识截止问题的主流方案。从向量嵌入、近似最近邻搜索,到 Rerank 与 HyDE,本文覆盖 RAG 系统的完整技术栈。