关于 RAG Pipeline Builder
RAG Pipeline Builder 是一项指导 RAG 系统设计与实现的技能,适合使用自有数据增强 LLM 回答的开发者。它覆盖文档导入、分块、向量检索和生成,并提供检索优化与评估方法。
主要功能
- 01设计 RAG 系统架构
- 02构建文档导入与分块流程
- 03生成嵌入并存入向量数据库
- 04优化混合检索与重排
- 05评估检索和生成质量
适用场景
- 01构建文档问答机器人
- 02为客服系统接入领域资料
- 03优化向量检索相关性
- 04评估生产环境中的 RAG 质量
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ eddiebe147/ claude-settings --skill rag-pipeline-builder安装后在 Claude Code 中输入/rag-pipeline-builder确认已加载。
详细介绍
RAG 流水线构建器
RAG 流水线构建器技能将指导你设计并实现检索增强生成系统,通过从自有数据中获取相关上下文来增强大模型的回答。RAG 将大语言模型的强大能力与信息检索的精准性相结合,从而减少幻觉,并让 AI 能够利用私有、最新或特定领域的知识。
本技能涵盖完整的 RAG 技术栈:文档摄取、分块策略、嵌入生成、向量存储、检索优化、上下文注入和响应生成。它会帮助你根据对准确性、延迟、成本和规模的具体要求,在每个阶段做出明智的决策。
无论你是在构建文档问答机器人、客户支持系统还是企业知识助手,本技能都能确保你的 RAG 实现遵循生产环境最佳实践。
核心工作流
工作流 1:设计 RAG 架构
- 明确需求:
- 数据源和格式
- 查询类型和模式
- 准确性要求
- 延迟预算
- 规模预期
- 选择组件:
- 文档加载器
- 分块策略
- 嵌入模型
- 向量数据库
- 用于生成的大模型
- 重排序层(可选)
- 设计数据流:
Documents → Loader → Chunker → Embedder → Vector DB ↓ Query → Embedder → Vector Search → Reranker → Context ↓ Context + Query → LLM → Response - 记录架构决策
工作流 2:实现摄取流水线
- 设置文档加载器:
- PDF、Markdown、HTML 解析器
- 用于实时数据源的 API 连接器
- 增量更新处理
- 实现分块:
def smart_chunk(doc, chunk_size=500, overlap=50): # Respect document structure sections = extract_sections(doc) chunks = [] for section in sections: if len(section) > chunk_size: chunks.extend(sliding_window(section, chunk_size, overlap)) else: chunks.append(section) return add_metadata(chunks, doc) - 通过批处理生成嵌入
- 将数据与元数据一起存储在向量数据库中
- 验证摄取质量
工作流 3:优化检索质量
- 衡量基准检索性能:
- 已知查询的 Recall@k
- 平均倒数排名(MRR)
- 相关性评分
- 应用优化技术:
- 查询扩展/改写
- 混合搜索(语义 + 关键词)
- 使用交叉编码器进行重排序
- 元数据筛选
- 调整检索参数:
- 要检索的分块数量(k)
- 相似度阈值
- 多样性/MMR 设置
- 使用测试集验证改进效果
快速参考
| 操作 | 命令/触发语 |
|---|---|
| 设计 RAG 系统 | “帮我为 [use case] 设计一个 RAG 流水线” |
| 选择向量数据库 | “RAG 用哪个向量数据库” |
| 优化分块 | “[content type] 的最佳分块策略” |
| 改进检索 | “我的 RAG 检索质量很差” |
| 减少幻觉 | “RAG 仍然有幻觉,帮我修复” |
| 扩展流水线 | “将 RAG 扩展到 [X] 个文档” |
最佳实践
-
按语义边界分块:保留分块中的含义
- 好:在段落、章节或主题边界处分割
- 不好:固定长度分割,导致句子在表达中途被截断
- 在分块中加入章节标题作为上下文
-
包含丰富的元数据:支持筛选并提供上下文
- 源文档、章节、页码
- 用于时间相关性的时间戳
- 类别、标签或主题
- 在语义搜索前使用元数据筛选器
-
使用混合搜索:结合语义搜索和关键词搜索
- 语义:捕捉含义和同义词
- 关键词(BM25):匹配精确术语、名称和代码
- 根据查询类型调整组合权重
-
通过重排序提升质量:两阶段检索可提高精确率
- 阶段 1:快速向量搜索(检索 20-50 个结果)
- 阶段 2:交叉编码器重排序(保留前 5-10 个结果)
- 重排序速度较慢,但准确得多
-
展示依据:包含引用和来源
- 随回答返回来源分块
- 让用户能够核验并深入了解
- 通过透明度建立信任
-
处理边缘情况:检索失败时该怎么办?
- 未找到相关结果
- 来源中存在相互矛盾的信息
- 查询超出知识库范围
- 实现平稳的回退机制
高级技术
多索引策略
针对不同类型的内容使用不同的索引:
Index 1: FAQs (short, self-contained)
Index 2: Documentation (long-form, structured)
Index 3: Conversations (temporal, contextual)
Route queries to appropriate index based on intent
查询转换流水线
通过查询处理提升检索效果:
def transform_query(query):
# Step 1: Classify query type
query_type = classify_query(query)
# Step 2: Extract entities
entities = extract_entities(query)
# Step 3: Generate search queries
if query_type == "factual":
return generate_keyword_queries(query, entities)
elif query_type == "conceptual":
return generate_semantic_queries(query)
else:
return [query] # Use as-is
上下文压缩
减少检索上下文中的噪声:
Retrieved chunks (verbose) → LLM compressor → Relevant excerpts only
Agentic RAG
让大模型控制检索:
def agentic_rag(query):
# LLM decides what to search for
search_plan = llm.plan_searches(query)
# Execute searches
results = []
for search in search_plan:
results.extend(retriever.search(search.query, filters=search.filters))
# LLM synthesizes answer
return llm.synthesize(query, results)
评估框架
持续衡量 RAG 质量:
Metrics:
- Retrieval: Precision@k, Recall@k, MRR
- Generation: Faithfulness, Answer Relevance, Context Utilization
- End-to-end: Task Success Rate, User Satisfaction
Tools: Ragas, TruLens, LangSmith
应避免的常见陷阱
- 分块过大(会丢失特异性)或过小(会丢失上下文)
- 未在分块中保留文档结构和层级
- 在需要精确匹配时忽略关键词搜索
- 检索的分块过少(会遗漏信息)或过多(会稀释上下文)
- 未处理不同来源之间的冲突信息
- 假设大模型总能正确使用检索到的上下文
- 跳过生产环境中的评估和监控
- 源文档变更后未更新嵌入向量
评论
支持 Markdown