面向工程团队的可复用、可观测、版本化数据处理架构。
本方案旨在构建一套通用的 RAG (Retrieval-Augmented Generation) 数据处理流水线,解决非结构化数据到向量索引的标准化转化问题。系统覆盖从原始数据切分、清洗、Embedding 向量化到最终入库与评测的全生命周期,并实施版本治理,确保数据迭代可追溯。
运行态问答与路由策略见 docs/24-rag-regional-inheritance-llm-logic.md,自动进化与索引更新见 docs/19-graphrag-searxng.md。
RAG 流水线的核心目标是建立高信噪比的知识索引,而非简单的全量数据堆砌。在接入数据前,必须明确其适用范围与关键性能指标(KPI)。
| 指标 | 说明 | 目标/口径 |
|---|---|---|
| Recall@K | Top-K 结果是否包含标准答案 | 召回率 |
| Precision | 检索内容与问题的相关性密度 | 准确率 |
| Latency | P99 检索耗时(含重排) | < 200ms |
| Cost | 向量维度与索引内存占用 | 存储成本 |
垃圾进,垃圾出(Garbage In, Garbage Out)。清洗与切分是决定 RAG 效果的关键环节。采用“语义优先,结构辅助”的分层处理策略。
流水线支持通过 YAML 文件定义不同数据源的处理策略。
strategies:
technical_docs:
parser: "markdown"
cleaning:
remove_urls: false # 保留技术文档中的链接
fix_unicode: true
splitter:
type: "recursive"
chunk_size: 1000 # 大块切分以保留完整上下文
chunk_overlap: 200
separators: ["\\n\\n", "\\n", "。", "!"]
user_comments:
parser: "text"
cleaning:
remove_urls: true # 移除评论中的广告链接
remove_emojis: true
splitter:
type: "token"
chunk_size: 300 # 短文本小块切分
chunk_overlap: 50
Embedding 将文本转换为高维向量,选型需权衡语义表达能力与推理成本。
| 维度 | PGVector | Elasticsearch (kNN) | Milvus / Zilliz |
|---|---|---|---|
| 定位 | PostgreSQL 插件 | 搜索引擎扩展 | 专用向量数据库 |
| 适用规模 | 中小规模(<1000 万) | 中等规模(千万级) | 超大规模(十亿级) |
| 运维复杂度 | 低(复用现有 PG) | 中(JVM, 集群) | 高(微服务架构) |
| 混合检索 | 强(SQL Join + Vector) | 极强(BM25 + Vector) | 弱(依赖元数据过滤) |
| 推荐场景 | 企业内部知识库 | 电商/日志搜索增强 | 公有云 AI 平台 |
针对大多数企业内部知识库场景,PGVector 是性价比最高的选择,因为它可以利用现有 RDS 基础设施,且支持 ACID 事务,便于管理“文档-向量”的一致性。
使用 Ragas 框架计算核心指标:
RAG 系统的效果优化是持续迭代过程。为避免“改了一个参数,效果不知是好是坏”,必须对每次数据生成进行版本控制,并将元数据同步至中央治理平台。
每次执行数据生成流水线(Ingestion Job)必须生成唯一的 Iteration ID (如 rag-v1.2-20260123),并记录完整上下文快照:
RAG 迭代登记统一走知识库文档系统接口,避免在本方案中重复维护示例代码:
docs/18-docs-rest-api.mddocs/21-iteration-template.mddocs/24-rag-regional-inheritance-llm-logic.md:RAG 交互逻辑与问答路由docs/19-graphrag-searxng.md:自动进化与索引更新机制docs/05-data-pipeline-and-quality.md:数据清洗与标准化流程