mcpField
R
RAG Pipeline Builder

RAG Pipeline Builder

github.com/jmsktm开发10206 次安装40 周前更新
代码仓库

关于 RAG Pipeline Builder

RAG Pipeline Builder 是帮助团队基于自有数据设计和实现检索增强生成系统的技能。它指导文档摄取、分块、嵌入、向量存储、检索及评估等环节的决策。

主要功能

  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/jmsktm/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