【Agent智能体】26智库导入基础架构
章节二十六智库——导入流程基础架构一、骨架代码1. 状态定义所有导入流程的节点共享同一个状态对象用来在节点间传递数据。状态中定义了文件路径、文件标题、Markdown内容、切分结果、向量列表、任务ID等字段。定义方式使用TypedDict给每个键指定类型方便IDE提示和类型检查。2. 节点基类设计为了避免每个节点都重复写日志、异常捕获等通用代码设计了一个NodeBase抽象基类通用逻辑封装__call__方法统一处理日志记录、任务追踪、异常捕获。子类约束强制子类覆盖name属性实现核心业务方法process。兼容LangGraph实例化后可直接作为节点加入工作流。每个具体节点继承NodeBase只需实现process方法即可。3. 节点注册导入流程共有8个节点node_entry入口节点判断文件类型。node_pdf_to_mdPDF转Markdown。node_md_img图片处理。node_document_split文档切分。node_item_name_recognition商品名识别。node_bge_embedding向量化嵌入。node_import_milvus写入Milvus。开发策略采用自顶向下模式先创建所有节点的骨架只打印日志再串联主图验证流程通畅最后逐一填充节点业务逻辑。4. 主图编排主图的工作流程入口节点接收文件后根据文件类型路由PDF文件走入口 - PDF转换 - 图片处理 - 文档切分 - 商品识别 - 向量化 - 写入MilvusMarkdown文件走入口 - 图片处理 - 文档切分 - 商品识别 - 向量化 - 写入Milvus其他格式文件直接在入口节点结束验证时分别测试PDF、Markdown和其他格式文件确认路由正确。5. 工作流类封装将工作流改造成类的形式提升可维护性封装内部逻辑对外暴露简洁接口。懒加载编译首次执行时才触发。每个实例拥有独立的节点和工作流对象支持多实例并发。二、入口节点1. 功能说明入口节点是整个导入流程的第一个节点负责接收文件并判断类型决定后续走哪条路线。核心逻辑第一步从状态中获取local_file_path文件路径。第二步检查文件后缀是.pdf还是.md。第三步根据类型设置对应标记——PDF设置is_pdf_read_enabled和pdf_pathMarkdown设置is_md_read_enabled和md_path。第四步从文件名中提取file_title作为后续元数据。2. 路由分发主图中通过路由函数读取入口节点设置的标记决定下一步走哪个节点如果is_pdf_read_enabled为True路由到PDF转换节点。如果is_md_read_enabled为True路由到图片处理节点。其他情况直接结束END。这样不同格式的文件会走不同的处理路径PDF需要先转换再处理Markdown则跳过转换直接处理图片。名词解释NodeBase节点抽象基类封装了日志、异常处理等通用逻辑子类只需实现业务方法。骨架代码只有基本结构没有完整业务逻辑的代码先搭框架再填内容。入口节点工作流的第一个节点接收输入、判断类型、启动整个流程。路由分发根据条件决定下一步走哪个节点的机制类似if-else分支。自顶向下先设计整体框架再实现细节的开发方式先保证流程走通再填功能。主体识别从文档中自动找出核心主题或关键实体比如产品名称。向量化把文字转成数字向量的过程方便计算机做相似度比较。