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 应用最基础也最实用的架构之一。掌握它,你就具备了把「大模型」变成「知识型产品」的核心能力。