RAG一般流程
- 将用于检索的知识库(文档)拆为小(几百个token)的文本块Chunk
- 对文本块进行 TF-IDF 编码,建立索引
- 语义嵌入Embedding,存储到向量数据库
- 使用 BM25 检索最相似的文本块
- 使用文本嵌入检索语义相似的文本块
- 合并、去重、排序两种方式检索得到的文本块
- 将 top-K 个文本块放进提示词中辅助 LLM 生成回答

RAG一般流程
优化技巧
多路召回
- 稀疏召回
- 语义召回
- 字面召回:使用BM25做精确检索
 BM25(Best Matching 25)被广泛应用于搜索引擎领域。BM25 基于 TF-IDF(Term Frequency-Inverse Document Frequency)的思想,但对其进行了改进以考虑文档的长度等因素。
- 
上下文召回:用提示词指导模型提供简洁的、特定于文本块的上下文,使用整体文档的上下文来解释该文本块。 
 性能提升:
 上下文嵌入将前20个块的检索失败率降低了35%(从5.7%降至3.7%)。
 结合上下文嵌入和上下文BM25将前20个块的检索失败率降低了49%(从5.7%降至2.9%)。
 上下文召回检索失败率提升
重排序
重排是一种常用的过滤技术,以确保只有最相关的文本块被传递给模型。
- 执行初始检索以获取最有可能相关的chunks(例如top150);
- 将top-N chunks与用户的查询一起传递给重排模型;
- 使用重排模型,根据每个片段与提示的相关性和重要性为其打分,然后选择top-K chunks(例如top20);
- 
将top-K chunks作为上下文传递给模型以生成最终结果。 
 重排序优化

加上重排序的检索失败率提升
边界问题优化
- 无效问题准入判断
- 随时间变化的问题,添加规则和提示工程技术
幻觉产生的原因
- 数据不一致
- 知识库消除虚假数据源,减少数据偏差
- 集成知识图谱,图谱的三元组召回
 
- 问题超出认知范围
评价指标
- 检索环节
- MRR平均倒排率
- top k的命中率
 
- 生成环节
- 文本相似度Rough-L
- 关键词重合度
- 多样性
 

