为什么 RAG 重要
检索增强生成(RAG)是将 LLM 回答建立在你自己数据上的最实用方式。但构建生产级系统远不止连接向量数据库。
分块策略
- 固定大小:简单但可能割裂语义单元。
- 语义分块:使用嵌入相似度按含义分割。
- 递归分块:按标题、段落、句子逐层分割。
- 文档感知:尊重 Markdown/HTML 结构。
混合搜索
将密集向量搜索与稀疏关键词搜索(BM25)结合,同时捕获语义匹配和精确术语匹配。
重排序
初始检索后,使用交叉编码器模型重新评分结果,显著提高精确度。
评估
- 忠实度:回答是否忠于检索到的上下文?
- 相关性:检索到的块是否真正有用?
- 答案正确性:最终答案是否事实正确?
工具与框架
- LlamaIndex:高级 RAG 框架,内置常用方案。
- LangChain:灵活的编排层。
- RAGAS:专用评估框架。
- Chroma / Qdrant / Weaviate:各有取舍的向量数据库。
高级分块策略
默认分块(按字符数分割)常破坏语义。更好的方法:
- 语义分块:用 LLM 识别主题边界。
- 递归分割:按标题 > 段落 > 句子分割。保留层级。
- 重叠:块之间添加 10–20% 重叠以保留边界上下文。
- 元数据丰富:为每个块标记来源、日期、作者和类别。
评估框架
- 检索精确率:是否检索到正确的块?
- 忠实度:答案是否仅使用检索块中的信息?
- 答案相关性:答案是否真正回答了问题?
- 延迟:端到端时间目标 <3 秒。
生产清单
- 实现混合搜索(BM25 + 向量相似度)。
- 添加重排序步骤。
- 设置检索质量监控。
- 创建反馈循环。
- 分别版本化知识库和嵌入。
高级分块策略
默认分块(按字符数分割)常破坏语义。更好的方法:
- 语义分块:用 LLM 识别主题边界。
- 递归分割:按标题 > 段落 > 句子分割。保留层级。
- 重叠:块之间添加 10–20% 重叠以保留边界上下文。
- 元数据丰富:为每个块标记来源、日期、作者和类别。
评估框架
- 检索精确率:是否检索到正确的块?
- 忠实度:答案是否仅使用检索块中的信息?
- 答案相关性:答案是否真正回答了问题?
- 延迟:端到端时间目标 <3 秒。
生产清单
- 实现混合搜索(BM25 + 向量相似度)。
- 添加重排序步骤。
- 设置检索质量监控。
- 创建反馈循环。
- 分别版本化知识库和嵌入。