mcpField

RAG Pipeline Builder

github.com/eddiebe147开发51 次安装
代码仓库

关于 RAG Pipeline Builder

RAG Pipeline Builder 是一项指导 RAG 系统设计与实现的技能,适合使用自有数据增强 LLM 回答的开发者。它覆盖文档导入、分块、向量检索和生成,并提供检索优化与评估方法。

主要功能

  1. 01设计 RAG 系统架构
  2. 02构建文档导入与分块流程
  3. 03生成嵌入并存入向量数据库
  4. 04优化混合检索与重排
  5. 05评估检索和生成质量

适用场景

  1. 01构建文档问答机器人
  2. 02为客服系统接入领域资料
  3. 03优化向量检索相关性
  4. 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 架构
  1. 明确需求:
    • 数据源和格式
    • 查询类型和模式
    • 准确性要求
    • 延迟预算
    • 规模预期
  2. 选择组件:
    • 文档加载器
    • 分块策略
    • 嵌入模型
    • 向量数据库
    • 用于生成的大模型
    • 重排序层(可选)
  3. 设计数据流:
    Documents → Loader → Chunker → Embedder → Vector DB
                                                   ↓
    Query → Embedder → Vector Search → Reranker → Context
                                                   ↓
    Context + Query → LLM → Response
    
  4. 记录架构决策
工作流 2:实现摄取流水线
  1. 设置文档加载器:
    • PDF、Markdown、HTML 解析器
    • 用于实时数据源的 API 连接器
    • 增量更新处理
  2. 实现分块:
    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. 通过批处理生成嵌入
  4. 将数据与元数据一起存储在向量数据库中
  5. 验证摄取质量
工作流 3:优化检索质量
  1. 衡量基准检索性能:
    • 已知查询的 Recall@k
    • 平均倒数排名(MRR)
    • 相关性评分
  2. 应用优化技术:
    • 查询扩展/改写
    • 混合搜索(语义 + 关键词)
    • 使用交叉编码器进行重排序
    • 元数据筛选
  3. 调整检索参数:
    • 要检索的分块数量(k)
    • 相似度阈值
    • 多样性/MMR 设置
  4. 使用测试集验证改进效果

快速参考

操作命令/触发语
设计 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