SAGE-Libs 算子参考手册¶
本文档提供 SAGE-Libs 中所有可用算子的完整清单,供开发者在构建 Pipeline 时参考。
!!! info "关于本文档" - 最后更新: 2025-10-05 - 算子总数: 44 个 - 覆盖范围: 数据源、处理、输出全流程 - 状态: 所有算子已验证可用
📊 算子分类概览¶
| 类别 | 数量 | 主要用途 |
|---|---|---|
| 数据源 | 5 | 批处理和流式数据输入 |
| RAG 检索器 | 4 | 向量检索和语义搜索 |
| RAG 重排序器 | 2 | 检索结果精排 |
| RAG 提示词构建 | 3 | LLM 提示词生成 |
| RAG 生成器 | 2 | 文本生成和问答 |
| RAG 辅助工具 | 7 | 分块、解析、搜索等 |
| Agent 智能体 | 5 | 智能体规划和执行 |
| 工具 | 1 | 外部工具集成 |
| 评估器 | 10 | 性能评估和指标计算 |
| 输出端 | 6 | 数据输出和持久化 |
📥 数据源 (Sources & Batches)¶
批处理数据源 (Batch Sources)¶
HFDatasetBatch¶
路径: sage.libs.io.batch.HFDatasetBatch
功能: 从 HuggingFace Datasets 加载批处理数据
使用场景:
- 使用公开数据集进行训练或评估
- 快速原型开发
- 标准化数据集测试
示例配置:
source:
class: sage.libs.io.batch.HFDatasetBatch
params:
dataset_name: "squad"
split: "train"
streaming: false
JSONLBatch¶
路径: sage.libs.io.batch.JSONLBatch
功能: 从 JSONL 文件批量读取数据
使用场景:
- 本地数据处理
- 自定义数据集
- 批量问答任务
示例配置:
source:
class: sage.libs.io.batch.JSONLBatch
params:
data_path: "./data/questions.jsonl"
field_query: "query"
流式数据源 (Stream Sources)¶
FileSource¶
路径: sage.libs.io.source.FileSource
功能: 从文件流式读取数据
使用场景:
- 实时数据处理
- 逐行处理大文件
- 流式 Pipeline
示例配置:
SocketSource¶
路径: sage.libs.io.source.SocketSource
功能: 通过 Socket 接收流式数据
使用场景:
- 网络数据流
- 实时服务
- 分布式系统
ContextFileSource¶
路径: sage.libs.utils.context_source.ContextFileSource
功能: 带上下文的文件数据源
使用场景:
- 需要保留上下文信息
- 多文件关联处理
🔍 RAG 检索器 (Retrievers)¶
ChromaRetriever¶
路径: sage.libs.rag.retriever.ChromaRetriever
功能: 基于 ChromaDB 的向量检索器
特点:
- 轻量级向量数据库
- 易于部署
- 适合中小规模(\< 百万文档)
使用场景:
- 本地开发和测试
- 中小型知识库
- 快速原型验证
示例配置:
stages:
- id: retriever
class: sage.libs.rag.retriever.ChromaRetriever
params:
collection_name: "knowledge_base"
top_k: 5
embedding_model: "bge-base-zh-v1.5"
MilvusDenseRetriever¶
路径: sage.libs.rag.retriever.MilvusDenseRetriever
功能: 基于 Milvus 的密集向量检索器
特点:
- 生产级向量数据库
- 支持大规模(百万级+)
- 高性能分布式检索
使用场景:
- 生产环境部署
- 大规模知识库
- 高并发查询
示例配置:
stages:
- id: retriever
class: sage.libs.rag.retriever.MilvusDenseRetriever
params:
dimension: 768
top_k: 5
milvus_dense:
collection_name: "knowledge_base"
uri: "http://localhost:19530"
embedding:
method: "bge-base-zh-v1.5"
依赖: 需要运行中的 Milvus 服务
MilvusSparseRetriever¶
路径: sage.libs.rag.retriever.MilvusSparseRetriever
功能: 基于 Milvus 的稀疏向量检索器(BM25-like)
特点:
- 关键词匹配
- 无需 GPU
- 适合精确匹配场景
使用场景:
- 关键词检索
- 混合检索(与密集向量结合)
- 专有名词匹配
示例配置:
stages:
- id: sparse-retriever
class: sage.libs.rag.retriever.MilvusSparseRetriever
params:
collection_name: "sparse_index"
top_k: 5
milvus_sparse:
uri: "http://localhost:19530"
Wiki18FAISSRetriever¶
路径: sage.libs.rag.retriever.Wiki18FAISSRetriever
功能: 基于 Wiki18 数据集的 FAISS 检索器
使用场景:
- 教学演示
- 快速测试
- 无需外部依赖
🔄 RAG 重排序器 (Rerankers)¶
BGEReranker¶
路径: sage.libs.rag.reranker.BGEReranker
功能: 基于 BGE Cross-Encoder 的重排序器
特点:
- 高精确度
- Cross-Encoder 架构
- 显著提升检索质量
使用场景:
- 高精度要求的问答
- 两阶段检索架构
- 法律、医疗、金融等专业领域
示例配置:
stages:
- id: reranker
class: sage.libs.rag.reranker.BGEReranker
params:
model_name: "bge-reranker-base"
top_k: 5
最佳实践:
- 第一阶段召回 top-20
- 第二阶段重排选 top-5
LLMbased_Reranker¶
路径: sage.libs.rag.reranker.LLMbased_Reranker
功能: 基于 LLM 的重排序器
特点:
- 使用 LLM 进行语义理解
- 更灵活的排序策略
- 成本较高
使用场景:
- 需要深度语义理解
- 复杂查询场景
📝 RAG 提示词构建 (Promptors)¶
QAPromptor¶
路径: sage.libs.rag.promptor.QAPromptor
功能: 问答提示词构建器
特点:
- 可自定义模板
- 支持上下文注入
- 长度控制
使用场景:
- 标准问答任务
- RAG Pipeline
示例配置:
stages:
- id: promptor
class: sage.libs.rag.promptor.QAPromptor
params:
template: "Context: {context}\nQuestion: {question}\nAnswer:"
max_context_length: 2000
SummarizationPromptor¶
路径: sage.libs.rag.promptor.SummarizationPromptor
功能: 摘要生成提示词构建器
使用场景:
- 文档摘要
- 内容总结
QueryProfilerPromptor¶
路径: sage.libs.rag.promptor.QueryProfilerPromptor
功能: 查询分析提示词构建器
使用场景:
- 查询意图分析
- 查询改写
🤖 RAG 生成器 (Generators)¶
OpenAIGenerator¶
路径: sage.libs.rag.generator.OpenAIGenerator
功能: OpenAI 兼容 API 生成器
特点:
- 支持 OpenAI 官方 API
- 支持兼容的 API(阿里云、DeepSeek 等)
- 流式输出支持
使用场景:
- 生产环境推荐
- 高质量文本生成
- 问答系统
示例配置:
stages:
- id: generator
class: sage.libs.rag.generator.OpenAIGenerator
params:
model_name: "gpt-3.5-turbo"
temperature: 0.7
max_tokens: 256
环境变量:
OPENAI_API_KEY: API 密钥OPENAI_BASE_URL: API 端点(可选)
HFGenerator¶
路径: sage.libs.rag.generator.HFGenerator
功能: HuggingFace 模型生成器
特点:
- 本地模型部署
- 离线运行
- 自定义模型
使用场景:
- 数据隐私要求
- 离线部署
- 自定义模型微调
🛠️ RAG 辅助工具¶
文本分块 (Text Splitters)¶
CharacterSplitter¶
路径: sage.libs.rag.chunk.CharacterSplitter
功能: 字符级文本分割器
使用场景: 简单文本分块
SentenceTransformersTokenTextSplitter¶
路径: sage.libs.rag.chunk.SentenceTransformersTokenTextSplitter
功能: 基于 Token 的智能分割器
使用场景:
- 考虑 Token 限制
- 保持语义完整性
文档处理¶
ArxivPDFDownloader¶
路径: sage.libs.rag.arxiv.ArxivPDFDownloader
功能: Arxiv 论文 PDF 下载器
使用场景: 学术论文处理
ArxivPDFParser¶
路径: sage.libs.rag.arxiv.ArxivPDFParser
功能: Arxiv PDF 解析器
使用场景: 提取论文文本内容
其他工具¶
LongRefinerAdapter¶
路径: sage.libs.rag.longrefiner.longrefiner_adapter.LongRefinerAdapter
功能: 长文本优化适配器
MemoryWriter¶
路径: sage.libs.rag.writer.MemoryWriter
功能: 记忆写入器
使用场景: 对话历史存储
BochaWebSearch¶
路径: sage.libs.rag.searcher.BochaWebSearch
功能: Bocha 网络搜索
使用场景: 实时网络信息检索
🤖 智能体 (Agents)¶
BaseAgent¶
路径: sage.libs.agentic.agents.agent.BaseAgent
功能: 基础智能体类
AgentRuntime¶
路径: sage.libs.agentic.agents.runtime.agent.AgentRuntime
功能: 智能体运行时环境
特点:
- 管理智能体生命周期
- 工具调用协调
- 状态管理
使用场景:
- Agent 工作流
- 复杂任务执行
示例配置:
stages:
- id: agent-runtime
kind: agent
class: sage.libs.agentic.agents.runtime.agent.AgentRuntime
params:
max_iterations: 10
LLMPlanner¶
路径: sage.libs.agentic.agents.planning.llm_planner.LLMPlanner
功能: 基于 LLM 的任务规划器
特点:
- 自主任务分解
- 多步骤规划
- 动态调整
使用场景:
- 复杂任务自动化
- 多步骤推理
示例配置:
stages:
- id: planner
kind: agent
class: sage.libs.agentic.agents.planning.llm_planner.LLMPlanner
params:
model: "gpt-3.5-turbo"
temperature: 0.7
MCPRegistry¶
路径: sage.libs.agentic.agents.action.mcp_registry.MCPRegistry
功能: Model Context Protocol 工具注册表
特点:
- 工具管理
- MCP 标准支持
- 动态工具加载
使用场景:
- Agent 工具调用
- 外部能力集成
BaseProfile¶
路径: sage.libs.agentic.agents.profile.profile.BaseProfile
功能: 智能体配置文件
使用场景:
- Agent 参数配置
- 角色定义
🔧 工具 (Tools)¶
BochaSearchTool¶
路径: sage.libs.tools.searcher_tool.BochaSearchTool
功能: Bocha 搜索工具
使用场景:
- Agent 搜索能力
- 信息检索
📊 评估器 (Evaluators)¶
准确性评估¶
F1Evaluate¶
路径: sage.libs.rag.evaluate.F1Evaluate
功能: F1 分数计算
使用场景: 分类任务评估
AccuracyEvaluate¶
路径: sage.libs.rag.evaluate.AccuracyEvaluate
功能: 准确率计算
召回评估¶
RecallEvaluate¶
路径: sage.libs.rag.evaluate.RecallEvaluate
功能: 召回率计算
BertRecallEvaluate¶
路径: sage.libs.rag.evaluate.BertRecallEvaluate
功能: 基于 BERT 的语义召回率
ContextRecallEvaluate¶
路径: sage.libs.rag.evaluate.ContextRecallEvaluate
功能: 上下文召回评估
使用场景: RAG 系统评估
生成质量评估¶
RougeLEvaluate¶
路径: sage.libs.rag.evaluate.RougeLEvaluate
功能: Rouge-L 指标计算
使用场景: 摘要生成评估
BRSEvaluate¶
路径: sage.libs.rag.evaluate.BRSEvaluate
功能: BRS 评估
性能评估¶
TokenCountEvaluate¶
路径: sage.libs.rag.evaluate.TokenCountEvaluate
功能: Token 数量统计
使用场景: 成本估算
LatencyEvaluate¶
路径: sage.libs.rag.evaluate.LatencyEvaluate
功能: 延迟测量
使用场景: 性能优化
CompressionRateEvaluate¶
路径: sage.libs.rag.evaluate.CompressionRateEvaluate
功能: 压缩率计算
📤 输出端 (Sinks)¶
TerminalSink¶
路径: sage.libs.io.sink.TerminalSink
功能: 终端输出
特点:
- 支持 JSON 格式
- 彩色输出
- 调试友好
示例配置:
PrintSink¶
路径: sage.libs.io.sink.PrintSink
功能: 通用打印输出
使用场景: 简单调试输出
FileSink¶
路径: sage.libs.io.sink.FileSink
功能: 文件输出
特点:
- 结果持久化
- 支持多种格式
示例配置:
sink:
class: sage.libs.io.sink.FileSink
params:
output_path: "./results/output.jsonl"
format: "jsonl"
RetriveSink¶
路径: sage.libs.io.sink.RetriveSink
功能: 检索结果输出
MemWriteSink¶
路径: sage.libs.io.sink.MemWriteSink
功能: 内存写入输出
使用场景:
- 中间结果缓存
- 多阶段 Pipeline
ContextFileSink¶
路径: sage.libs.utils.context_sink.ContextFileSink
功能: 带上下文的文件输出
💡 使用建议¶
RAG Pipeline 推荐组合¶
基础 RAG¶
高精度 RAG¶
混合检索¶
JSONLBatch → [MilvusDenseRetriever + MilvusSparseRetriever] → BGEReranker → QAPromptor → OpenAIGenerator → TerminalSink
Agent Pipeline 推荐组合¶
评估 Pipeline 推荐组合¶
⚠️ 重要注意事项¶
检索器选择¶
- ChromaRetriever: 中小规模(\< 百万),易部署
- MilvusDenseRetriever: 大规模(百万+),需 Milvus 服务
- MilvusSparseRetriever: 关键词匹配,无需 GPU
生成器选择¶
- OpenAIGenerator: 生产推荐,需 API Key
- HFGenerator: 离线部署,需本地模型
性能优化¶
- 两阶段检索: 召回(top-20)+ 重排(top-5)
- 批处理优化: 使用 JSONLBatch 而非 FileSource
- 并行处理: 合理设置 parallelism 参数
📚 相关文档¶
🔄 更新日志¶
- 2025-10-05: 初始版本,包含 44 个算子
- 所有算子已验证可用
- 提供完整的使用示例和最佳实践