LLM 应用架构:RAG 系统的设计与实现
深入讲解检索增强生成(RAG)的完整架构:文档切分、向量化、检索与生成,附工程实现要点。
大模型有「幻觉」与「知识陈旧」两大痛点,RAG(检索增强生成)是当前最主流的解法。本文拆解一个可落地的 RAG 系统架构。
RAG 的核心思想
RAG 的思路很朴素:先检索相关文档,再让模型基于检索结果生成答案。这样模型不必记住所有知识,只需「阅读理解」检索到的材料,既降低幻觉,也让知识可更新。
四大组件
1. 文档处理与切分
把文档切成适合检索的片段(chunk)。切分粒度是关键:
- 太大 → 检索不准、上下文浪费;
- 太小 → 语义不完整。
常用策略是按段落/标题切分,或基于语义的递归切分。
2. 向量化(Embedding)
把文本片段用 Embedding 模型转成向量,语义相近的文本在向量空间中也相近。
const embedding = await embed(chunk); // [0.12, -0.34, ...]
await vectorStore.upsert({ id, vector: embedding, metadata });
3. 检索(Retrieval)
把用户问题也向量化,在向量库中做相似度搜索(余弦相似度),取 Top-K 相关片段。
4. 生成(Generation)
把检索到的片段拼进提示词,交给 LLM 生成答案:
基于以下资料回答问题:
<检索到的片段>
问题:<用户问题>
工程要点
- 混合检索:向量检索 + 关键词检索(BM25)结合,兼顾语义与精确匹配;
- 重排序(Rerank):对初检结果做二次精排,提升相关性;
- 引用溯源:让模型标注答案来源,增强可信度;
- 评估:用评测集衡量检索命中率与答案质量。
结语
RAG 是 AI 应用最基础也最实用的架构之一。掌握它,你就具备了把「大模型」变成「知识型产品」的核心能力。