NeumAI
端到端RAG数据管道框架,用声明式Pipeline简化向量嵌入全链路
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
端到端RAG数据管道框架,用声明式Pipeline简化向量嵌入全链路
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
图1:Neum AI 平台架构概览(来源:neum.ai官网)
想象这样一个场景:你的团队花了三个月训练了一个大语言模型问答系统,上线后却发现检索质量堪忧——用户问"去年第三季度的营收是多少",系统却返回了完全无关的文档。排查了一圈发现,问题根本不在模型,而在数据管道:文档格式杂乱、向量数据库配置混乱、每次数据源更新都需要手动同步。
这是几乎所有 RAG(检索增强生成)应用开发者都会遇到的经典困境:模型的推理能力再强,如果输入的上下文数据质量差、检索不精准,输出结果同样不可用。而数据管道的搭建,往往比训练模型本身更费时费力。
Neum AI 正是为解决这一痛点而生的开源 RAG 数据平台。它不是又一个"向量化工具",而是一个端到端的数据编排框架,覆盖从数据源接入、文档解析、切片分块、向量化,到向量数据库存储和语义检索的全链路。用过 LlamaIndex 和 LangChain 的开发者会立刻感受到 Neum AI 的差异化价值:它把那些需要手动拼装的数据加载、切片、嵌入、存储流程,抽象成了声明式的 Pipeline 配置。
2023 年,随着 GPT-4、Claude 等大模型的爆发,RAG 架构成为企业落地 LLM 应用的主流范式。然而,行业很快发现了一个讽刺的事实:模型的 token 上下文窗口从 8K 扩展到了 128K,但真正制约应用效果的,是进入上下文的那些数据质量有多好。
传统的 RAG 管道需要开发者自己组装:使用 BeautifulSoup 爬网页、PyPDF 解析 PDF、langchain_community 加载各类数据库;自己写文本切片逻辑,处理重叠和边界情况;调用 OpenAI 或 HuggingFace API 生成向量;配置向量数据库(Weaviate/Pinecone/Qdrant 各有各的 SDK);还要写增量同步逻辑,处理数据源变更。
这一套流程下来,光数据管道就占了整个项目 60% 以上的工程量。更糟糕的是,每个环节都有各自的技术债务:不同数据源需要不同解析器、不同向量数据库的查询语法完全不同、增量同步需要自己维护状态。Neum AI 的创始团队(据 Y Combinator S23 披露)在构建自己的 LLM 应用时,恰好被这个问题困扰,于是决定把内部工具开源。
Neum AI 的架构设计围绕一个核心概念——Pipeline(管道)。一个完整的 RAG 数据管道由三个核心组件构成:
1. SourceConnector(数据源连接器)
SourceConnector 负责从各类数据源拉取原始数据。它不是一个简单的"下载器",而是一个包含了 Loader(加载器)和 Chunker(切片器)的复合组件。以 WebsiteConnector 为例,它不仅能抓取网页内容,还能通过 Selector 配置指定要提取的字段(to_embed 用于向量化,to_metadata 用于存入元数据),最后用 HTMLLoader 或 MarkdownLoader 解析内容,用 RecursiveChunker 按语义递归切片。
目前支持的数据源包括:结构化数据库(PostgreSQL、SingleStore)、对象存储(AWS S3、Azure Blob Storage、Supabase Storage)、文档类(Hosted Files 本地/远程文件、SharePoint)、以及网页(WebsiteConnector 支持选择性提取)。
2. EmbedConnector(向量化连接器)
这是 RAG 管道的"翻译"环节——将文本内容转化为向量表示。Neum AI 目前内置了对 OpenAI text-embedding-ada-002、Azure OpenAI Embeddings 以及 Replicate 的支持。所有 EmbedConnector 遵循统一接口,切换不同的嵌入模型只需修改初始化参数,不需要改动 Pipeline 的其他部分。
3. SinkConnector(向量存储连接器)
将向量数据写入向量数据库。目前已支持的 Sink 包括:Weaviate(开源、支持混合检索)、Pinecone(云服务、可扩展)、Qdrant(开源、自托管)、LanceDB(开源、嵌入式、适合本地场景)、Marqo(开源、ElasticSearch 风格)、SingleStore(SQL+向量一体化)、以及 Supabase(PostgreSQL+pgvector)。
此外,Neum AI 还提供了 neumai-tools 辅助包(独立 pip 包),内置 tiktoken 分词器、LangChain 和 LlamaIndex 文档转换器,专门用于预处理阶段的数据清洗和分块。
从代码层面看,Neum AI 的实现质量相当扎实。整个项目采用 Pydantic v2 作为核心建模框架,所有组件(Pipeline、SourceConnector、EmbedConnector、SinkConnector)都继承自 Pydantic BaseModel,带有完整的类型注解和字段描述。这带来的直接好处是:运行时自动校验配置合法性、IDE 自动补全、以及通过 model_dump_json() 轻松序列化/反序列化 Pipeline 状态。
Pipeline 类的设计体现了良好的工程思维。开发者只需要定义好 sources、embed、sink 三个组件,然后调用 pipeline.run() 一行执行全链路,通过 pipeline.search() 进行语义检索。特别值得注意的是 Pipeline 的验证机制(config_validation 方法):在运行前会自动校验每个 Connector 的配置是否合法,避免运行时才发现缺失参数。
此外,通过 TriggerSchedule 支持定时同步,PipelineRun 记录每次执行的详细状态(包括任务级粒度的进度追踪),latest_run 字段让用户可以随时查看管道最近一次运行的情况。Roadmap 显示他们计划支持 MySQL、GitHub、Google Drive 数据源,以及 Chroma、Milvus 向量存储,并探索 Smart Routing(基于嵌入或 LLM 的智能路由)、Self-Query Retrieval 等高级特性。
说到 RAG 数据管道,很难不拿 Neum AI 与 LlamaIndex 和 LangChain 做对比。这两个框架生态庞大、社区活跃,但它们本质上是"胶水框架"——帮你把各种工具拼接起来,具体的拼接逻辑仍然需要开发者自己编写。
Neum AI 的定位更接近"数据管道的 Rails":它对整个流程做了更高层次的抽象,把 Source -> Loader -> Chunker -> Embed -> Sink 的五步流程收敛为 Pipeline 一个对象。在 LlamaIndex 里写一个复杂的 RAG Pipeline 可能需要 100+ 行代码,Neum AI 只需要 30 行左右。
但这也意味着 Neum AI 的灵活性不如 LlamaIndex/LangChain——如果你需要自定义切片策略、使用特定的小众向量数据库,或者做一些实验性的检索增强,它的抽象层可能反而是一种束缚。另外,Neum AI 的嵌入模型支持目前还比较有限(OpenAI/Azure 为主),不像 LangChain 那样接入了数十种 embedding providers。
Neum AI 的安装极为简单:pip install neumai,没有 Dockerfile,无需 Docker,一行命令搞定。但实际运行需要准备两样东西:OpenAI API Key(或其他支持的嵌入服务)和一个向量数据库。如果你的团队已经有 Weaviate/Pinecone/Qdrant 中任意一个,迁移成本几乎为零。
官方文档(docs.neum.ai)质量不错,覆盖了从 Quickstart 到每个 Connector 的详细配置说明。但需要注意的是,由于项目仍处于活跃开发期(9 个 open issues),部分高级功能(如异步元数据增强、聊天历史连接器)尚在 roadmap 中,生产使用时建议锁定版本号。
1. 云服务依赖问题:Neum AI Cloud(托管服务)需要将数据上传到 neum.ai 的服务器处理,对于数据隐私敏感的企业(如金融、医疗)来说,这是不可接受的。官方提供了 Self-host 选项,但实际部署需要联系销售团队,门槛不低。
2. 嵌入模型生态不足:目前仅正式支持 OpenAI 和 Azure OpenAI Embeddings,HuggingFace 嵌入在 roadmap 中尚未完成。对于需要在本地运行嵌入模型(保护数据隐私或降低成本)的场景,Neum AI 暂时无法满足。
3. 缺乏自托管向量数据库的一键部署:虽然 SinkConnector 支持 Qdrant/LanceDB 等开源向量数据库,但这些数据库本身的部署需要用户自行处理,没有提供 docker-compose 一键启动方案。
Neum AI 代表了 RAG 领域的一个新兴趋势——数据管道基础设施的专门化。2023 年以前,大多数团队在 LlamaIndex/LangChain 内部手写数据加载逻辑;2024 年开始,像 Neum AI、Dust.tt 这样的垂直数据管道框架开始涌现,目标是将 RAG 数据编排从"胶水代码"变成"声明式配置"。
从 GitHub 865 星的增长曲线来看,Neum AI 已经获得了初步社区关注。加上 Y Combinator S23 的背书和 neumai-tools 独立包的持续迭代,这个项目的商业可持续性相对有保障。如果你正在搭建 RAG 应用,且厌倦了手写数据管道代码,Neum AI 是一个值得尝试的方向——尤其当你使用 Weaviate/Pinecone 作为向量后端时。