# Stage 6 — RAG 与 Memory:先找数据,再记住重要的事 **RAG**(Retrieval-Augmented Generation):先找相关资料,再依资料回答。 > [繁體中文](./06-memory-rag.md) | **简体中文** | [English](./06-memory-rag.en.md) 模型不是什么都知道。**RAG** 像叫它先翻书再回答;**Memory** 像给它一本笔记本,记住下次还会用到的事。这一关会把两者分清楚,再带你一步一步做出来。 ## 📌 学习目标 完成这一关后,你可以: 1. 用一句话说出 RAG 与 Memory 的差别。 2. 看懂数据如何变成 **Chunk**、**Embedding**,再被找回来。 3. 做出一条最小 RAG 流水线,并让回答附上来源。 4. 知道什么数据值得记住,什么数据不该保存。 5. 用小型测试比较两个做法,不靠“感觉比较好”。 ## 🧩 先认识七个核心术语
| 核心术语 | 好理解的说法 | 正确意思 | |:---|:---|:---| | **Retrieval(检索)** | 去书架找几页可能有答案的书 | 收到问题后,从外部资料找出相关内容。 | | **RAG(Retrieval-Augmented Generation)** | 先翻书,再用自己的话回答 | 先 retrieval,再把找到的内容交给模型生成答案。 | | **Embedding(嵌入向量)** | 帮句子的意思做一张坐标卡 | 把文字转成一串数字,让意思接近的文字在向量空间里靠近。 | | **Vector Store/Vector Database** | 会按“意思”找卡片的抽屉 | 保存 embedding,并用相似度找回相关资料。 | | **Chunk(文字片段)** | 把大书切成可拿取的小页卡 | 为了搜索与放进 context,把长文档切成较小片段。 | | **Reranking(重新排序)** | 把第一次找来的卡片再排一次 | 用第二个方法重新评分候选内容,让更可能有用的片段排前面。 | | **Memory(记忆)** | 助理自己的笔记本 | 把跨消息或跨 session 还需要的状态写下来,之后再读回来;它不是聊天记录的别名。 |
![RAG 检索外部证据;Memory 写入并读回重要状态](../resources/diagrams/rag-memory-map.zh-Hans.png) ### 一张表先选对方法
| 你遇到的问题 | 先考虑 | 为什么 | |:---|:---|:---| | 资料不长,而且这次回答用完就好 | **Long context** | 直接把资料放进这次请求,流程最短。 | | 文档很多,问题来了才知道要找哪几段 | **RAG** | 先找相关片段,不必每次塞入全部文档。 | | 助理下次仍要记得偏好、任务状态或过往结果 | **Memory** | 把值得保留的信息写入可再次读取的存储层。 | | 想稳定改变模型的行为或特定能力 | [**Fine-tuning**](../resources/model-training-guide.zh-Hans.md) | 调整模型权重与行为;它不会自动提供最新文档。 |
没有一个选项永远最好。请用自己的资料、问题与成功条件做评测。 ## 🚪 进入条件与阅读路径 - **第一次学:** 先读七个核心术语,完成练习 1–4,再做短版自我检查。 - **要做长期助理:** 接着完成练习 5,再阅读 Memory 设计。 - **要研究或上线:** 最后进入进阶 RAG、Chunking、评测与研究入口。
时间、环境、费用与资料安全 - 建议分两到三次完成;每次先做一个能跑的练习。 - 需要 Python、Git 与终端。安装方式以各练习 README 为准。 - Path A 使用 OpenAI 兼容示例;Path B 使用 Anthropic 路径。模型与 embedding 调用可能产生费用。 - 先用小文档测试。不要把密码、token、医疗资料或未经授权的公司文档送到外部服务。 - API key 放在环境变量,不要写进程序或 commit。
## 📚 必修阅读 1. [LangChain Retrieval](https://docs.langchain.com/oss/python/deepagents/retrieval) — 看 loader、splitter、embedding、vector store 与 retriever 如何合作。 2. [LlamaIndex concepts](https://developers.llamaindex.ai/python/framework/getting_started/concepts/) — 用文档导向的方式理解 indexing 与 querying。 3. [Chroma getting started](https://docs.trychroma.com/docs/overview/getting-started) — 看本地 vector database 的最小使用方式。 4. [LangGraph Agentic RAG](https://docs.langchain.com/oss/python/langgraph/agentic-rag) — 完成基础 RAG 后,再看 agent 如何决定要不要查资料。 ## 🛠 动手练习 每题先回项目根目录(放着 README.md 的那层)。下面会依次进入本题文件夹、安装软件包,再跑本机 Path A。练习 4、5 先依本题说明准备 Ollama、下载 `qwen2.5:3b` 并启动服务。Path B 是选用;先看本题是否使用云端、供应商、密钥与费用。 ### 练习 1:把两句话变成 Embedding **成果:** 你会看到意思相近的两句话,比不相关的句子更靠近。 ```powershell cd examples/stage-6/01-embeddings python -m pip install -r requirements.txt python starter.py ``` [打开安装、检查与选用 Path B 说明](../examples/stage-6/01-embeddings/README.zh-Hans.md)。先用很少的句子,避免不必要的 API 费用。 ### 练习 2:把 Embedding 放进 Vector Database **成果:** 你能把文字放进 Chroma,再用一句问题找回相关片段。 ```powershell cd examples/stage-6/02-vector-db python -m pip install -r requirements.txt python starter.py ``` [打开安装、检查与选用 Path B 说明](../examples/stage-6/02-vector-db/README.zh-Hans.md)。练习资料不得包含秘密或个人资料。 ### 练习 3:比较三种 Chunking 方法 **成果:** 你会看到切得太大、太小或重叠太多,各自会发生什么事。 ```powershell cd examples/stage-6/03-chunking-comparison python -m pip install -r requirements.txt python starter.py ``` [打开安装、检查与选用 Path B 说明](../examples/stage-6/03-chunking-comparison/README.zh-Hans.md)。不要先背一个“标准大小”;先看文档结构与测试结果。 ### 练习 4:串起完整 RAG **成果:** 程序会先找资料,再回答,并显示它使用了哪些来源片段。 ```powershell cd examples/stage-6/04-full-rag-pipeline python -m pip install -r requirements.txt python starter.py ``` [打开安装、检查与选用 Path B 说明](../examples/stage-6/04-full-rag-pipeline/README.zh-Hans.md)。先用小型数据集;不要把“程序能跑”当成“回答一定正确”。 ### 练习 5:记住一项偏好 **成果:** 本练习只会在程序仍运行时新增、搜索并读回一项偏好;临时存储不代表长期持久记忆。 ```powershell cd examples/stage-6/05-long-term-memory python -m pip install -r requirements.txt python starter.py ``` [打开安装、检查与选用 Path B 说明](../examples/stage-6/05-long-term-memory/README.zh-Hans.md)。只保存完成任务需要的资料,并提供查看、修改与删除的方法。 ### 推荐小项目:会查资料、也会记偏好的助理 选三到五份你有权使用的小文档。让助理回答问题时列出来源,再只记住一项无敏感性的偏好,例如“回答先给短版”。成功条件是:找不到证据时会说不知道;重新启动后仍能读回偏好;你可以删除这项记忆。 ## 🌐 RAG 基础流水线
RAG 基础流水线:资料怎么进去,答案怎么出来 RAG 有两条路:一条先整理数据,一条在问题来时找资料。 ![RAG 先整理资料;问题来时再取回候选、整理证据并附来源回答](../resources/diagrams/rag-pipeline-overview.zh-Hans.png) 先从 **2-step RAG** 开始:每个问题都先检索,再回答,流程最容易测。**Agentic RAG** 让模型决定要不要找资料、是否改写问题或再找一次;**Hybrid RAG** 混合固定步骤与 agent 决策。它和 **Hybrid Search** 不同:Hybrid Search 只是在 retrieval 这一步合并候选。
| 阶段 | 做什么 | 好理解的说法 | |:---|:---|:---| | Load | 读入 PDF、网页或数据库内容 | 把书搬到桌上 | | Split | 切成 chunks | 把书分成小卡 | | Embed | 把每张卡转成向量 | 帮意思做坐标 | | Store | 保存向量与来源 metadata | 卡片放进有标签的抽屉 | | Retrieve | 依问题找候选 chunks | 先拿出可能有答案的卡 | | Rerank(可选) | 重新排候选内容 | 再检查哪张卡最有用 | | Generate | 把问题与证据交给模型 | 看着卡片回答 | | Cite/Evaluate | 显示来源并检查结果 | 告诉别人答案从哪里来 |
Retriever(检索器)按问题找相关文档,不一定使用向量数据库(vector database)。也能用 BM25(按字词匹配排序的方法)找产品编号,用 SQL(查询数据库的语言)查表格,或使用网站搜索、混合搜索。
## 🧭 想深入?把 RAG 与 Memory 分开学 这两条是 Stage 6 的进阶支线,不是新的先备条件。先完成上面的基础练习,再按问题选一条。 ### [进阶 RAG:先找出哪一步坏了,再加新技巧](../resources/advanced-rag.zh-Hans.md) 已做出最小 RAG,却遇到“找不到、排序错、跨文档关系难找”?到这里先看症状,再选方法。完整技术术语、必读与五星资源都在进阶页。 ### [Agent Memory:只记值得记、允许记、能删掉的事](../resources/agent-memory.zh-Hans.md) 适合要做跨 session 助理、个人化或长期任务的人。页面会完整解释短期/长期,以及 **Semantic**、**Episodic**、**Procedural Memory**,再走过写入、搜索、更新、删除、过期与用户隔离;Mem0、Letta Code、LangMem、Graphiti 与研究资源都直接列在页面上。 **怎么选:** 答案需要更好的外部证据,走进阶 RAG;助理下次还要读回自身状态,走 Agent Memory。两者都需要时,分开测试,最后再接起来。 ## 🎯 精选项目与学习资源 这里只保留做出 Stage 6 基线需要的工具。进阶技巧与 Memory 项目已移到上方两个独立页面,避免一张表混在一起。 资料核查:2026-08-30 UTC
分类项目/文档评分用途限制
RAG framework⭐⭐⭐⭐⭐
适合谁: 文档型应用初学者
能学什么: Index、retriever、query engine
状态/限制: MIT;套件多,先用官方 starter
⭐⭐⭐⭐
适合谁: 想比较模块化 pipeline
能学什么: components、pipelines、routing
状态/限制: Apache-2.0;先选一套 framework 练习
⭐⭐⭐⭐
适合谁: 想看完整 Web 产品的团队
能学什么: 文档解析、retrieval、UI
状态/限制: Apache-2.0;部署比教学示例重
Vector data⭐⭐⭐⭐⭐
适合谁: 第一次在本机做向量搜索
能学什么: collection、add、query
状态/限制: Apache-2.0;练习与 production 设置不同
⭐⭐⭐⭐⭐
适合谁: 需要自建或托管服务的团队
能学什么: dense、sparse、hybrid query
状态/限制: Apache-2.0;需规划服务与备份
⭐⭐⭐⭐
适合谁: 需要 schema 与 hybrid search
能学什么: BM25 + vector search
状态/限制: wl/ 以外为 BSD-3-Clause;wl/ 另需企业授权;先做小型基线
⭐⭐⭐⭐
适合谁: 已使用 PostgreSQL 的团队
能学什么: SQL 与 vector 同库
状态/限制: PostgreSQL extension;仍需索引与查询调校
评测与完整产品⭐⭐⭐⭐⭐
适合谁: 要建立可重复运行 eval 的团队
能学什么: datasets、metrics、experiments
状态/限制: Apache-2.0;metric 仍需人工校准
⭐⭐⭐⭐
适合谁: 想读完整 AI assistant 架构
能学什么: ingest、retrieval、chat、admin
状态/限制: 完整产品很大;当架构参考,不当 starter
## ✅ 进入 Stage 7 前的自我检查 - [ ] 我能说出 Retrieval、RAG 与 Memory 各自做什么。 - [ ] 我能解释 chunk、embedding 与 vector database 怎么接起来。 - [ ] 我的 RAG 回答会显示来源,找不到证据时会说不知道。 - [ ] 我能用一小组问题比较修改前后,而不是只看一次漂亮回答。 - [ ] Memory 只保存必要且获准的资料,用户能查看、修改与删除。 都能做到后,前往 [Stage 7 — Agent 上线工程:可测、可看、可停、可恢复](07-multi-agent-production.zh-Hans.md)。