RAG 相关概念学习
文章目录
- 前言
- RAG 相关概念学习
- 1. 概念
- 2. 相关步骤
- 3. 想让 RAG 查出来的内容“真的能用”,需要注意
- 4. 向量检索 vs 关键词搜索的本质区别
前言
如果您觉得有用的话,记得给博主点个赞,评论,收藏一键三连啊,写作不易啊^ _ ^。
而且听说点赞的人每天的运气都不会太差,实在白嫖的话,那欢迎常来啊!!!
RAG 相关概念学习
1. 概念
RAG(Retrieval-Augmented Generation)是一种通过将 检索(Retrieval) 与 生成(Generation) 结合起来的问答方式,能够显著提升 LLM 的回答质量和事实准确性。
2. 相关步骤
总流程:
文档准备 → 预处理 → 切分 → 向量化 → 存储 → 用户提问 → 向量查询 → 结果拼接 → LLM 生成回答
1、存储环节
metadata是指与每个文本块(chunk)关联的 附加信息,它不会被嵌入成向量,但会 随向量一起存储并检索出来,用于:
示例:
{"id": "chunk-1234","vector": [0.123, 0.456, ...], // embedding 向量"text": "欢迎使用本产品,请先登录系统。","metadata": {"source": "user_manual.pdf","page": 3,"title": "第1节 登录说明","lang": "zh","chunk_id": "1-3","doc_type": "操作手册"}
}
用途 | 举例说明 |
---|---|
检索时筛选(Filter) | 只查某文档、某类型、某作者的内容 |
回答中展示引用信息(grounding) | 此答案基于:user_manual.pdf 第3页 |
数据分析可视化 | 查看哪个文档贡献最多答案、来源分布图等 |
热更新、版本控制 | 根据 metadata 更新某一类数据块 |
2、查询环节
3、各个步骤说明
步骤 | 工具/库 | 说明 |
---|---|---|
1. 文档处理 | Apache Tika、pdfbox、LangChain4j 文档加载器 | 从原始文档提取文本,切分为小段 |
2. Embedding | OpenAI / BGE / DeepSeek / text2vec | 将文本变成向量(高维语义表示) |
3. 向量存储 | Qdrant / Milvus / Chroma | 建立语义检索能力 |
4. 问题向量化 | 同上 | 用户提问也需转换为向量 |
5. 检索 | 向量库接口 | 检索最相关的内容 TopK |
6. Prompt 构造 | LangChain4j / 自定义 | 将内容块 + 问题拼成完整 Prompt |
7. 回答生成 | ChatGPT / Claude / DeepSeek / 自部署 LLM | 实际问答环节 |
8. 返回结果 | 接口 or 前端呈现 | 搭建 UI 或 API 返回答案给用户 |
3. 想让 RAG 查出来的内容“真的能用”,需要注意
项目 | 要求 |
---|---|
文档切分 | 每段 chunk 保持语义完整(推荐使用滑动窗口) |
嵌入模型 | 使用质量高的 embedding 模型(如 text-embedding-3-small、bge-large-zh) |
top-k 设置 | 一般设置为 3~5 条(取决于 prompt 长度) |
检索方式 | 支持 hybrid search(向量 + keyword 混合)时效果更佳 |
prompt 构建 | 精准地把检索内容拼进 prompt 中,并清楚告诉模型“只能基于这些信息回答” |
向量库查出来的内容能不能“真的有用”,取决于你前期做得是否精细:文档切得合理、嵌入准确、top-k 设置得当、prompt 拼得清晰。
4. 向量检索 vs 关键词搜索的本质区别
特性 | 向量检索(embedding search) | 关键词搜索(keyword search) |
---|---|---|
匹配方式 | 语义相似(meaning) | 字面匹配(word) |
能否查出没出现关键词的句子? | ✅ 可能可以 | ❌ 不可能 |
优势 | 可找“意思接近”的内容 | 精准找“完全命中的词” |
弱点 | 有时会误判“相关性” | 找不到变种表达 |
高质量的 embedding 模型可以学习到上下文语义关联,即便句子本身不包含关键词,也能知道它和某个话题有联系,查出返给用户。