5.7 KiB
5.7 KiB
title, type, tags, date
| title | type | tags | date | |||||
|---|---|---|---|---|---|---|---|---|
| RAG从入门到精通系列1:基础RAG | source |
|
2025-01-16 |
Source File
Summary(用中文描述)
- 核心主题:RAG(检索增强生成)基础原理与实战入门,从 Indexing(索引)、Retrieval(检索)到 Generation(生成)的完整流程。
- 问题域:LLM 无法使用最新数据和私有数据的根本问题,以及如何通过 RAG 打通 LLM 与外部知识库的连接。
- 方法/机制:三大核心阶段——(1) Indexing:将外部文档加载、切分、Embedding 向量化后存入向量数据库;(2) Retrieval:用户问题 Embedding 化后通过向量相似度检索 Top-k 相关文档块;(3) Generation:将问题 + 检索结果输入 LLM 生成带事实依据的答案。实战工具链:Qwen(LLM)+ BAAI(Embedding)+ LangChain(编排)+ Qdrant(向量数据库)。
- 结论/价值:RAG 是让 LLM 拥有外部知识的标准范式,LangChain 和 LlamaIndex 等框架将三阶段流程封装为 Chain,大幅降低开发门槛;LangSmith 可视化整个 RAG 管道便于调试。
Key Claims(用中文描述)
- RAG 将 LLM 与外部数据源(私有数据/最新数据)连接,使 LLM 能够使用非训练知识生成答案。
- Indexing 阶段通过 Embedding Model 将文本转为固定长度的语义向量,以满足向量相似度检索的需求。
- 由于 Embedding Model 的 Context Window 有限(512~8192 token),需将外部文档切分成满足窗口大小的 Split(文档块)。
- Retrieval 阶段根据用户问题的语义向量,在向量数据库中按相似度(余弦相似度等)找出 Top-k 个最相关的文档块。
- Generation 阶段将问题与检索到的文档块通过 PromptTemplate 组合为 Prompt,输入 LLM 生成有事实依据的最终答案。
- LangChain 和 LlamaIndex 将 Indexing-Retrieval-Generation 三阶段封装为 Chain,简化 RAG 应用开发。
- LangSmith 提供 RAG 管道的全链路可视化监控和调试能力。
Key Quotes
"RAG(Retrieval Augmented Generation,检索增强生成)是一种将 LLM 与外部数据源(例如私有数据或最新数据)连接的通用方法。它允许 LLM 使用外部数据来生成其输出。" — RAG 的定义与价值 "Embedding Model 的 Context Window 有限,我们不能直接把整篇文档丢进去,所以要将原始文档拆分成一个个文档块。" — 文档切分的必要性 "看起来很复杂,但这就是 LangChain 和 LlamaIndex 这类框架存在的意义。" — 框架的价值定位
Key Concepts
- RAG:检索增强生成,将 LLM 链接外部知识库的核心技术架构
- Indexing:索引阶段,将外部文档加载、切分、向量化后存入向量数据库
- Retrieval:检索阶段,通过向量相似度从数据库中检索与问题相关的文档块
- Generation:生成阶段,将问题+检索结果输入 LLM 生成答案
- Embedding:将文本转为固定长度语义向量的技术,是向量检索的基础
- Vector Store(向量数据库):存储 Embedding Vector 并实现相似度比较的数据库系统,如 Qdrant
- Split(文档块):将长文档切分后满足 Embedding Model Context Window 的文本片段
- Context Window:模型一次性处理的最大 token 数量,Embedding Model 通常为 512~8192 token
- PromptTemplate:将问题与上下文组装为 LLM 输入 Prompt 的模板技术
- Chain(链):LangChain 中将多个步骤串联执行的抽象,RAG Chain 串联 Retrieval 与 Generation
- Token:模型处理文本的基本单位,英文约 3~4 字母/token,中文约 1 汉字/token
Key Entities
- LangChain:Python/LLM 应用开发框架,提供文档加载器、Embedding、Vector Store、Chain、RAG 原语
- Qwen:阿里通义千问系列 LLM,本教程中用作 Generation 阶段的 LLM
- BAAI(BGE Embedding):开源 Embedding Model 系列,将文本转为语义向量
- Qdrant:Rust 编写的开源向量数据库,存储 Embedding Vector 并提供相似度检索
- LlamaIndex:另一主流 LLM 数据框架(与 LangChain 并列),专注知识增强
- LangSmith:LangChain 官方平台,用于构建、监控和评估生产级 LLM 应用,支持 RAG 管道可视化
- PyTorch研习社:文章来源微信公众号
Connections
- RAG ← 基础理论 ← rag从入门到精通系列1-基础rag
- RAG ← 依赖 ← Embedding
- RAG ← 依赖 ← Vector Store
- RAG ← 工具链 ← LangChain
- RAG ← 工具链 ← LlamaIndex
- Indexing ← 依赖 ← Embedding
- Retrieval ← 依赖 ← Vector Store
- Generation ← 依赖 ← PromptTemplate
- Indexing ← 依赖 ← LangChain(文档加载器/Splitter/Embedding/Vector Store)
- Retrieval ← 依赖 ← LangChain(Retriever)
- Generation ← 依赖 ← LangChain(Chain/PromptTemplate)
- rag从入门到精通系列1-基础rag ← 系列第一篇 → 其他 RAG 系列文章(待补充)
Contradictions
- 与其他 RAG 进阶技术存在优化方向上的差异:本文为基础 RAG(Naive RAG),采用直接向量检索 + 简单拼接 Prompt 的朴素方案。与 Advanced RAG(包含 Query Rewrite、Step-back Prompt、HyDE 等查询优化技术)和 RAG Fusion(多路召回 + RRF 重排)等进阶方案相比,基础 RAG 在检索质量和上下文利用上存在局限。当前 Wiki 中暂无 Advanced RAG 或 RAG Fusion 的专门页面,此冲突待后续补充进阶内容后更新。