RAG 的全称是 Retrieval-Augmented Generation。系统先从资料库找出与问题相关的片段,再把这些片段和问题一起交给模型。
它解决什么问题
模型的参数里没有你的私有文档,也没有今天刚更新的页面。检索补上的是上下文,不是一次重新训练。
一条最小流水线
切分文档,建立索引,按问题取回少量片段,然后生成回答。取回太多,上下文会被无关内容淹没;取回太少,模型只能猜测。
contexts = index.search(question, limit=4)
answer = model.generate(question, contexts)
常见的失败
切分切断了定义,查询词和文档用了不同说法,或者排序把相似但不相关的段落放到了前面。先看检索结果,再怀疑模型。
提示
如果检索结果本身是错的,换一个更大的模型通常不会修好答案。
讨论