Files
nexus/wiki/sources/rag从入门到精通系列1-基础rag.md

69 lines
5.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
title: "RAG从入门到精通系列1基础RAG"
type: source
tags: [rag, llm, 向量检索, 知识库, langchain]
date: 2025-01-16
---
## Source File
- [[AI/RAG从入门到精通系列1基础RAG.md]]
## Summary用中文描述
- 核心主题RAG检索增强生成基础原理与实战入门从 Indexing索引、Retrieval检索到 Generation生成的完整流程。
- 问题域LLM 无法使用最新数据和私有数据的根本问题,以及如何通过 RAG 打通 LLM 与外部知识库的连接。
- 方法/机制:三大核心阶段——(1) Indexing将外部文档加载、切分、Embedding 向量化后存入向量数据库;(2) Retrieval用户问题 Embedding 化后通过向量相似度检索 Top-k 相关文档块;(3) Generation将问题 + 检索结果输入 LLM 生成带事实依据的答案。实战工具链QwenLLM+ BAAIEmbedding+ 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
> "RAGRetrieval 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 进阶技术存在优化方向上的差异:本文为基础 RAGNaive RAG采用直接向量检索 + 简单拼接 Prompt 的朴素方案。与 Advanced RAG包含 Query Rewrite、Step-back Prompt、HyDE 等查询优化技术)和 RAG Fusion多路召回 + RRF 重排)等进阶方案相比,基础 RAG 在检索质量和上下文利用上存在局限。当前 Wiki 中暂无 Advanced RAG 或 RAG Fusion 的专门页面,此冲突待后续补充进阶内容后更新。