想给模型接上自己的资料,翻了一圈教程全是架构图和术语,真正动手时卡在「文档切多大」「检索召回几条」「怎么知道答得好不好」。这篇按最小可行系统的目标走一遍:先定一个能跑通的最小闭环,再把切片和检索这几个关键旋钮拧到位,最后用一组小用例验证,别一上来就上高级技巧。
想给模型接上自己的资料,翻了一圈教程全是架构图和术语,真正动手时卡在「文档切多大」「检索召回几条」「怎么知道答得好不好」。这篇按最小可行系统的目标走一遍:先定一个能跑通的最小闭环,再把切片和检索这几个关键旋钮拧到位,最后用一组小用例验证,别一上来就上高级技巧。
看这篇之前先对齐一个心态:第一版的目标不是「好用」,是「跑通且可回查」。你需要的其实就是一个能读文档、能按问题找片段的脚本,加上十来个真实问题当验收尺子。想优化之前,先让这套东西稳定输出、每步可打印可核对。
先划一个能跑通的最小闭环
最小闭环只包含四步:读文档、切片、向量化入库、按问题检索并拼进提示词。重排、多路召回、知识图谱这些都属于增量项,先别碰。每步都要能单独打印中间结果,不然出问题不知道卡在哪一环。
- 给自己一个明确验收口径:准备若干条真实问题,人工看答案有没有引到正确段落,而不是看模型说得像不像
- 入库和检索用同一套向量模型,中途换模型必须整库重算,否则相似度分数没有可比性
- 保留原始文档 ID 和片段 ID 的映射,检索出来能反查原文位置
- 什么情况下不适用:资料本身是扫描件、表格或图文混排,得先做清洗再谈切片,直接切会把内容切碎
切片这一步决定后面能不能召回
切片粒度是整个系统里最容易被低估的旋钮。按语义边界切(标题、段落、列表项),比按固定字数硬切强;固定长度兜底时留一段重叠,别让一个完整句子被劈成两半。每片必须带上来源标识,检索时随正文一起进提示词。
| 切片做法 | 适用资料 | 容易踩的坑 |
|---|---|---|
| 按标题层级切 | 手册、说明书、长文档 | 层级太深时上层的上下文丢失 |
| 按段落或列表项切 | FAQ、参数表、条目式内容 | 单条太短,检索时上下文不足 |
| 固定长度加重叠 | 结构混乱的纯文本 | 重叠过多导致重复召回、浪费上下文 |
- 切完先抽查随机抽十来片读一遍,看是不是一段能独立看懂的话;如果一片里塞了好几个主题,说明切得太粗
- 给每片补元信息文件、章节、页码写在片头或元数据字段里,检索时一起拼进提示词,出问题才好回查是哪一段答的
- 短条目单独处理FAQ、参数表这类天然短条目逐条入库,别强行合并,合并后检索命中反而变模糊
检索配置按「先够用」来定
召回条数从小往大调:先取少量片段看答案是否已够用,不够再加。召回越多上下文越贵,还容易把噪声一起喂进去。相似度阈值要在自己的数据上试,太严会漏掉正确段,太松会召回一堆不相关内容,用那组固定问题对照调整。
拼提示词的时候明确写一句「只依据给定片段回答,片段里没有就说没有」,能明显减少编造。片段按相关度排序放进去,最相关的放最前面,模型对位置是有偏好的。
- 召回条数
- 先取少量看是否够用,不够再加,加到答案不再变好为止
- 相似度阈值
- 在自有数据上试出来的边界值,不同向量模型不能复用
- 提示词约束
- 要求只依据片段作答、缺失就说缺失,是成本最低的防编造手段
验证与排查:出问题按这个顺序看
答错了别急着怪模型,按「切片 → 检索 → 拼装」的顺序往下查,绝大多数问题在第一步就能定位。下面这个顺序建议固定成习惯,每次出错都走一遍。
- 先看切片把命中片段原文打印出来,答错多半是没召回到正确段,而不是模型不行
- 再看检索换一两个措辞相近的问法,如果换个说法就召不到了,是向量化或切片粒度的问题
- 最后看拼装片段对了但答错,检查提示词里片段有没有被截断、上下文是不是超了长度
| 现象 | 先查哪里 | 常见原因 |
|---|---|---|
| 完全答不出 | 切片 | 正确段落根本没入库或切碎了 |
| 换个问法就失效 | 检索 | 向量化质量或阈值设置不合适 |
| 片段对但答案错 | 拼装 | 提示词被截断或没加约束句 |
| 答案时好时坏 | 用例集 | 没有固定回归用例,无法判断改动效果 |
RAG 的第一版不是拼谁的技巧多,是拼谁先把「召回到没召回到」这件事看清楚。
常见问题
最小可行 RAG 一定要用向量数据库吗?
不一定。资料量小的时候,把向量存本地文件、检索时在内存里算相似度也能跑通,先验证效果再换正式库。等条目到几万、要过滤字段或多人同时用时,再迁到向量数据库。向量库选型可以到 /stacks/vector-dbs 对照各家能力。
文档切片长度有没有一个通用推荐值?
没有能照抄的数值,取决于你的文档类型和提问粒度:条目式的资料切短些,长叙述切长些,并允许互相重叠。做法是先定一两组候选切法,用固定问题集对比召回效果,谁命中的正确段落多就用谁。
检索出来的片段都对,模型还是答偏怎么办?
多半出在拼装环节:片段被截断、顺序太乱,或者提示词没有限定「只依据片段」。先把片段按相关度排好、留完整句子、明确约束回答依据,再跑一遍。改完记得用同一组用例复测。