RAG

RAG (Retrieval-Augmented Generation) 是一种结合信息检索与文本生成的AI架构,通过检索外部知识库来增强LLM的回答能力。

经典论文:

  • Lewis, P., et al. (2020). “Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks.” NeurIPS. [论文链接] - RAG开山之作
  • Guu, K., et al. (2020). “REALM: Retrieval-Augmented Language Model Pre-Training.” ICML. [论文链接]
  • Izacard, G., & Grave, É. (2021). “Leveraging Passage Retrieval with Generative Models for Open Domain Question Answering.” EACL. [论文链接] - RAG的另一种实现

1. Context Window(上下文窗口)

概念

Context Window 指的是 大语言模型在一次推理时能够读取和理解的最大文本长度

经典论文:

  • Dai, Z., et al. (2019). “Transformer-XL: Attentive Language Models Beyond a Fixed-Length Context.” ACL. [论文链接] - 突破固定上下文长度的开创性工作

通常包含:

  • 用户问题
  • 历史对话
  • system prompt
  • 检索到的文档
  • 模型生成的内容

这些内容的总 token 数不能超过模型的 context window。

关键要点

  • 超过长度的内容会被 截断
  • 模型只能"看到"窗口内的信息
  • window 大小直接影响:
    • 长文档处理能力
    • RAG 系统能放入多少资料

主流模型Context Window对比:

模型 Context Window
GPT-3.5 4K / 16K tokens
GPT-4 8K / 32K tokens
GPT-4 Turbo 128K tokens
Claude 3 200K tokens
Gemini 1.5 Pro 1M+ tokens

2. Token

概念

Token 是 模型处理文本的基本单位

经典论文:

  • Sennrich, R., Haddow, B., & Birch, A. (2016). “Neural Machine Translation of Rare Words with Subword Units.” ACL. [论文链接] - BPE算法,现代tokenizer的基础
  • Kudo, T., & Richardson, J. (2018). “SentencePiece: A simple and language independent subword tokenizer.” EMNLP. [论文链接]

一个 token 可能是:

  • 一个词
  • 一个子词(subword)
  • 一个字符片段

关键要点

  • 模型限制通常按 token 计算
  • 成本和 token 数量直接相关
  • 不同语言token化效率不同(中文通常比英文更高效)

经验法则:

  • 英文:约 4 字符 = 1 token
  • 中文:约 1-2 汉字 = 1 token

3. Embedding(向量表示)

概念

Embedding 是将文本转换为 数字向量(vector),用来表示语义。

经典论文:

  • Mikolov, T., et al. (2013). “Efficient Estimation of Word Representations in Vector Space.” ICLR. [论文链接] - Word2Vec开山之作
  • Pennington, J., Socher, R., & Manning, C. D. (2014). “GloVe: Global Vectors for Word Representation.” EMNLP. [论文链接]
  • Devlin, J., et al. (2018). “BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding.” NAACL. [论文链接] - 上下文相关embedding的开创性工作
  • Reimers, N., & Gurevych, I. (2019). “Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks.” EMNLP. [论文链接] - Sentence-Transformers

语义相似的句子在向量空间中 距离更近

关键要点

Embedding 用于:

  • 语义搜索(Semantic Search)
  • 文档检索(Document Retrieval)
  • 推荐系统(Recommendation Systems)
  • 聚类分析(Clustering)

主流Embedding模型:

  • OpenAI text-embedding-ada-002 / text-embedding-3
  • Cohere Embed
  • BGE (Beijing Academy of Artificial Intelligence)
  • E5 (Microsoft)

4. Vector Search(向量搜索)

概念

Vector Search 是通过 向量相似度 来查找相关内容的搜索方式。

经典论文:

  • Johnson, J., Douze, M., & Jégou, H. (2019). “Billion-scale similarity search with GPUs.” IEEE Transactions on Big Data. [论文链接] - Faiss向量数据库
  • Malkov, Y. A., & Yashunin, D. A. (2020). “Efficient and robust approximate nearest neighbor search using Hierarchical Navigable Small World graphs.” TPAMI. [论文链接] - HNSW算法

常见计算方式:

  • Cosine similarity(余弦相似度): $\cos(\theta) = \frac{A \cdot B}{|A| |B|}$
  • Dot product(点积): $A \cdot B$
  • Euclidean distance(欧氏距离): $|A - B|$

特点

传统搜索 向量搜索
关键词匹配 语义匹配
精确匹配 相似度排序
无法理解同义词 理解语义相似性

5. RAG(Retrieval Augmented Generation)

概念

RAG 是一种 AI 系统架构,通过 检索外部知识再生成回答

经典论文:

  • Lewis, P., et al. (2020). “Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks.” NeurIPS. [论文链接]
  • Gao, Y., et al. (2023). “Retrieval-Augmented Generation for Large Language Models: A Survey.” arXiv. [论文链接] - RAG综述

基本流程:

用户问题 → 向量检索 → 找到相关文档 → LLM生成回答

RAG架构类型

经典论文:

  • Lewis, P., et al. (2020). 区分了两种RAG架构:
    • RAG-Sequence: 对所有检索文档使用相同的生成
    • RAG-Token: 每个token可以参考不同文档

优势

  • 能利用最新知识(无需重新训练)
  • 减少模型幻觉(基于检索事实回答)
  • 可接入企业知识库
  • 可追溯信息来源

6. Chunking(文本切分)

概念

Chunking 指将长文档 拆分成较小文本块(chunk),用于 embedding 和检索。

经典论文:

  • Lyu, C., et al. (2024). “Chunking Strategies for RAG.” arXiv. [论文链接]

原因:

  • 文档太长,无法直接处理
  • embedding 需要语义集中
  • context window 有限制

7. Chunk Size(切分大小)

概念

Chunk Size 指每个文本块的 token 数量。

经验值:

  • 300 – 800 tokens(通用场景)
  • 100 – 300 tokens(问答场景)
  • 1000+ tokens(长文档理解)

Trade-off

Chunk Size 优点 缺点
太大 上下文完整 语义被稀释,检索不准确
太小 语义集中 上下文丢失,信息碎片化

8. Overlap(重叠)

概念

Overlap 指相邻 chunk 之间 共享一部分内容

目的:避免语义被切断或关键信息丢失。

常见设置:10% – 20%

示例:

Chunk 1: [0-500 tokens]
Chunk 2: [400-900 tokens]  # 100 tokens overlap
Chunk 3: [800-1300 tokens] # 100 tokens overlap

9. Sliding Window(滑动窗口)

概念

Sliding Window 是一种 chunk 切分方式,使相邻 chunk 部分重叠

经典论文:

  • Liu, J., et al. (2022). “Lost in the Middle: How Language Models Use Long Contexts.” arXiv. [论文链接] - 研究了长上下文中信息位置的影响

优点:

  • 保留上下文
  • 减少信息断裂

10. Semantic Chunking(语义切分)

概念

Semantic Chunking 根据 语义变化 来切分文本,而不是固定 token 数量。

经典论文:

  • Loman, T., & Tekman, B. (2023). “Semantic Chunking for RAG.” [参考]

基本方法:

  1. 按句子切分
  2. 生成 embedding
  3. 计算相邻句子相似度
  4. 相似度低于阈值则开始新的 chunk

优势:

  • 语义完整性更好
  • 检索精度更高

11. Hybrid Chunking(混合切分)

概念

实际系统常用策略:结构切分 + token 限制

流程:

按标题或段落切分 → 超过最大长度 → 按句子拆分 → 加 overlap

优点:

  • 稳定可控
  • 语义自然
  • 兼顾结构和长度

12. Vector Database(向量数据库)

概念

向量数据库用于 存储 embedding 并进行高效相似度搜索

经典论文与系统:

  • Johnson, J., Douze, M., & Jégou, H. (2019). “Faiss: A library for efficient similarity search.” [论文链接]
  • Pinecone: 商业向量数据库
  • Weaviate: 开源向量数据库
  • Milvus: 开源向量数据库 [GitHub]
  • Chroma: 轻量级向量数据库

作用:在大量向量中快速找到最相似内容。

核心技术:

  • HNSW (Hierarchical Navigable Small World)
  • IVF (Inverted File Index)
  • PQ (Product Quantization)

13. Retrieval(检索)

概念

Retrieval 是从向量数据库中 找到最相关的文档片段

流程:

用户问题 → embedding → 向量搜索 → TopK chunks

常见:Top3 / Top5 / Top10

检索策略:

  • Dense Retrieval: 基于向量相似度
  • Sparse Retrieval: 基于关键词(如BM25)
  • Hybrid Retrieval: 结合两者

经典论文:

  • Robertson, S., & Zaragoza, H. (2009). “The Probabilistic Relevance Framework: BM25 and Beyond.” Foundations and Trends in IR. - BM25算法
  • Karpukhin, V., et al. (2020). “Dense Passage Retrieval for Open-Domain Question Answering.” EMNLP. [论文链接] - DPR

14. Re-ranking(重排序)

概念

Re-ranking 是在检索结果基础上 再次排序,提高相关性。

经典论文:

  • Nogueira, R., & Cho, K. (2019). “Passage Re-ranking with BERT.” arXiv. [论文链接]
  • Nogueira, R., et al. (2020). “Document Ranking with a Pretrained Sequence-to-Sequence Model.” EMNLP. [论文链接]

流程:

向量检索 Top20 → Re-ranker模型 → Top3 → LLM回答

作用:提高检索精度,减少无关内容。

常用Re-ranker模型:

  • BGE Re-ranker
  • Cohere Re-rank
  • Cross-Encoder models

15. Hallucination(模型幻觉)

概念

Hallucination 指模型生成 看似合理但事实错误的内容

经典论文:

  • Maynez, J., et al. (2020). “On Faithfulness and Factuality in Abstractive Summarization.” ACL. [论文链接]
  • Zhang, Y., et al. (2023). “Siren’s Song in the AI Ocean: A Survey on Hallucination in Large Language Models.” arXiv. [论文链接]
  • Ji, Z., et al. (2023). “Survey of Hallucination in Natural Language Generation.” ACM Computing Surveys. [论文链接]

常见原因:

  • 检索不到正确文档
  • 上下文不足
  • prompt 不明确
  • 模型知识过时

缓解策略:

  • 使用RAG提供可靠上下文
  • 要求模型标注来源
  • 设置"不知道"选项
  • 多轮验证

16. RAG Debugging(RAG排查)

排查顺序通常为:

  1. 用户 Query(问题是否清晰)
  2. 检索 TopK chunks(是否检索到相关内容)
  3. Re-ranking 结果(排序是否正确)
  4. Prompt(指令是否明确)
  5. LLM 模型(模型能力是否足够)

经验分布:

  • 80% 问题来自 Retrieval
  • 15% 来自 Prompt
  • 5% 来自模型能力

调试工具:

  • LangSmith
  • Arize Phoenix
  • Weights & Biases

17. RAG系统完整流程

文档
Chunking(文本切分)
Embedding(向量化)
Vector Database(存储)
Retrieval (TopK)(检索)
Re-ranking(重排序)
LLM生成回答

总结

RAG系统核心目标:

在有限 context window 中,让 LLM 获取最相关知识,并生成准确回答。

关键优化点:

  • Chunking策略
  • Embedding质量
  • Retrieval准确率
  • Re-ranking
  • Prompt设计