DB-GPT AWEL Embedding 知识处理工作流:把文档变成向量库的完整实战指南
发布时间:2026/9/14 18:01:21 作者:尧图编辑部 阅读量:1,286

DB-GPT AWEL Embedding 知识处理工作流把文档变成向量库的完整实战指南【免费下载链接】DB-GPTopen-source agentic AI data assistant for the next generation of AI Data products.项目地址: https://gitcode.com/GitHub_Trending/db/DB-GPT本文基于 DB-GPT 官方教程 Embedding Process Workflow讲清 AWEL 内置的Embedding 知识处理模板如何完成读取非结构化文档 → 知识切片 → 切片向量化 → 写入向量数据库这条 RAG 知识准备链路。读完本篇你可以直接在 AWEL 画布上导入该模板、理解并调整三大核心算子知识加载、切片管理、向量存储的参数并通过 HTTP 接口触发整条工作流把自有文档批量灌入 Chroma 等向量存储为后续的语义相似度问答检索做准备。一、Embedding 处理工作流是什么按照官方文档的定义Native RAG原生检索增强生成的传统知识抽取准备过程目标是把文档变成数据库链路为读取非结构化文档 → 知识切片 → 切片转换 → 导入向量数据库DB-GPT 将这条链路沉淀为 AWEL 中的一个可复用工作流模板Embedding Knowledge Process Workflow模板定义文件位于 embedded-knowledge-process-flow-template.json工作流名称为embedding_process_workflow。它由三类节点组成HTTP 触发器Trigger把整条工作流暴露为一个 POST 接口供外部系统调用算子Operator知识加载、切片管理、向量存储三个 RAG 算子依次串联完成数据处理主干资源ResourceChroma 向量库实例、Chroma 连接配置、默认 Embedding 模型三个资源节点为算子提供底层能力。二、适用场景官方文档列出的适用场景有两条简单智能问答场景通过语义相似度召回上下文信息为 RAG 问答提供底层检索能力可裁剪扩展用户可以根据自己的业务场景对现有的 Embedding 处理流程进行裁剪或添加算子例如在切片后增加摘要节点、或更换向量库类型。三、在 AWEL 界面快速上手官方文档给出的操作步骤如下对应文档中的三步截图流程进入 AWEL 界面新增一个 Workflow在 Web 控制台的 AWEL 流程管理页创建空工作流导入 Knowledge Processing Template知识处理模板在模板库中选择 Embedding 知识处理模板导入画布画布上会直接出现预设好的节点与连线调整参数并保存根据业务修改知识源路径、切片参数、向量库连接等参数后保存。模板中三个核心算子的官方职责说明原文翻译并对应源码实现算子官方职责描述源码实现Knowledge Loader Operator文档知识加载算子知识加载工厂根据指定的文档类型加载知识源找到对应的文档处理器解析文档内容KnowledgeOperatorDocument Chunk Manager Operator切片管理算子按照指定的切片参数把加载后的文档内容切分为知识切片ChunkManagerOperatorVector Storage Operator向量存储算子可连接不同的向量数据库做向量持久化也可连接不同的 Embedding 模型/服务做向量化VectorStorageOperator四、模板工作流的完整拓扑从模板 JSON 的节点与连线数据flow_data.nodes与flow_data.edges可以完整还原出数据流DictHttpTrigger ──→ KnowledgeOperator ──→ ChunkManagerOperator ──→ VectorStorageOperator ▲ ▲ ▲ (datasource/ (chunk_parameters (vector_store) knowledge_type) 切片参数) │ ChromaStore ────────────┘ ├── ChromaVectorConfig └── DefaultEmbeddings节点类型类型全限定名说明dict_http_triggerTriggerdbgpt.core.awel.trigger.http_trigger.DictHttpTrigger通过 HTTP 请求触发工作流请求体解析为字典knowledge_operatorOperatordbgpt_ext.rag.operators.knowledge.KnowledgeOperator从数据源创建 Knowledge 对象chunk_manager_operatorOperatordbgpt.rag.operators.chunk_manager.ChunkManagerOperator将 Knowledge 切分为List[Chunk]vector_storage_operatorOperatordbgpt_ext.rag.operators.vector_store.VectorStorageOperator将 Chunks 持久化到向量存储chroma_vector_storeResourcedbgpt_ext.storage.vector_store.chroma_store.ChromaStoreChroma 向量库实例默认dbgpt_collectionchroma_vector_configResourcedbgpt_ext.storage.vector_store.chroma_store.ChromaVectorConfigChroma 连接/持久化配置default_embeddingsResourcedbgpt.rag.embedding.embedding_factory.DefaultEmbeddings使用系统当前默认 Embedding 模型从源码结构看各算子的类型签名清晰体现了map 语义KnowledgeOperator是MapOperator[dict, Knowledge]ChunkManagerOperator是MapOperator[Knowledge, List[Chunk]]VectorStorageOperator是MapOperator[List[Chunk], List[Chunk]]即触发器的请求体dict依次被映射为 Knowledge、切片列表、最终落库的切片列表。五、核心算子参数详解5.1 知识加载算子KnowledgeOperator从 knowledge.py 的元数据定义看它暴露两个参数参数类型默认值说明datasourcestrNone默认数据源路径若触发请求体中带有source字段则优先使用请求体中的值见 map 方法实现knowledge_typestrDOCUMENT知识类型可选DOCUMENT/URL/TEXT其map实现最终调用KnowledgeFactory.create(source, knowledge_type)完成知识对象的创建也就是根据文档类型找到对应文档处理器的工厂逻辑所在。模板 JSON 中把datasource预填为../../../../docs/docs/quickstart.md可直接替换为你自己的文档路径。5.2 切片管理算子ChunkManagerOperator该算子接收Knowledge输入内部先knowledge.load()加载文档再交给 ChunkManager.split 执行切分。它唯一的配置项是chunk_parameters类型ChunkParametersChunkParameters 的字段与默认值如下字段类型默认值说明chunk_strategystrNone切片策略模板算子在未显式配置时回退为Automatic策略见 ChunkManagerOperator 构造逻辑splitter_typeSplitterTypeUSER_DEFINE切分器类型另支持 LangChain / LlamaIndex 切分器text_splitterAnyNone自定义切分器实例chunk_sizeint512单个切片的目标大小chunk_overlapint50相邻切片的重叠量用于保留上下文边界separatorstr\n切片分隔符enable_mergeboolFalse是否按chunk_size合并切片若chunk_strategy未指定ChunkManager 会进一步回退到知识对象自身的default_chunk_strategy()即不同类型知识源文档、URL 等可以拥有各自的默认切片策略。5.3 向量存储算子VectorStorageOperator该算子唯一的必配参数是vector_store类型VectorStoreBase即任意向量库连接器实例。其 map 实现 做了两件关键的事通过alload_document_with_limit分批写入向量库单批上限由环境变量KNOWLEDGE_MAX_CHUNKS_ONCE_LOAD控制默认10条/批写入成功后把返回的vector_id回写到chunk.chunk_id使每个切片都能与库内记录对应这是后续按 chunk_id 更新、删除的钩子。六、默认资源Chroma 向量库与 Embedding模板为向量存储预置了一组开箱即用的资源节点参数如下均可在画布上替换为其他向量库/Embedding 服务ChromaVectorConfig连接配置支持user、password、persist_path三个字段模板中persist_path预填为../../../../pilot/data相对于服务运行目录。ChromaStore向量库实例nameCollection Name默认值为dbgpt_collectionembedding_fn参数指向 DefaultEmbeddings 资源即未显式指定时使用系统默认 Embedding 函数。DefaultEmbeddings无参数资源使用当前系统默认配置的 Embedding 模型即你在 DB-GPT 配置中指定的 embedding 模型。这也对应了官方文档中Vector storage 算子可以连接不同向量数据库、不同 Embedding 模型/服务的说明只要把对应资源节点拖入画布并连线到算子的vector_store/embedding_fn参数即可。七、通过 HTTP 触发工作流AWEL 中所有 HTTP 端点默认挂载在/api/v1/awel/trigger前缀下参见 HTTP 触发器教程具体路径由触发器节点的endpoint参数决定。模板中DictHttpTrigger的默认参数为endpoint模板预填/rag/embdding/process注意该默认值存在拼写笔误embdding官方文档使用的规范路径为/rag/knowledge/embedding/process建议在画布中按业务自行命名该端点methodsPOST亦支持PUTstatus_code默认200。按官方文档在 DB-GPT 服务启动后默认监听 5670 端口可执行curl --location --request POST http://localhost:5670/api/v1/awel/trigger/rag/knowledge/embedding/process \ --header Content-Type: application/json \ --data-raw {}请求体为空{}时算子会使用画布中配置的默认datasource若希望每次指定不同文档可在 JSON 请求体中携带source字段知识加载算子会优先读取该字段。接口响应为切片列表官方文档给出的示例节选[ { content: \What is AWEL?\: Agentic Workflow Expression Language(AWEL) is a set of intelligent agent workflow expression language specially designed for large model application\ndevelopment. ..., metadata: { Header1: What is AWEL?, source: ../../docs/docs/awel/awel.md }, chunk_id: c1ffa671-76d0-4c7a-b2dd-0b08dfd37712, chunk_name: , score: 0.0, summary: , separator: \n, retriever: null }, ... ]其中chunk_id即第五节提到的向量库写入后回写的vector_idcontent/metadata则是切片正文与来源元信息可直接用于后续的语义检索与问答召回。八、小结与扩展建议Embedding 知识处理模板展示了 DB-GPT AWEL 的典型组织方式触发器定入口、算子串主链路、资源供能力。基于该模板你可以按业务需要更换knowledge_type为URL或TEXT接入网页或纯文本知识源调整chunk_size/chunk_overlap/enable_merge等切片参数或改用 LangChain、LlamaIndex 切分器splitter_type把ChromaStore替换为其他VectorStoreBase实现把DefaultEmbeddings替换为指定的 Embedding 服务通过环境变量KNOWLEDGE_MAX_CHUNKS_ONCE_LOAD调整批量写入上限。如需进一步了解纯 Python 代码方式构造 RAG 嵌入链路可参考仓库中的 simple_rag_embedding_example.py与本文同一模板系列的 Hybrid Workflow 模板 与 Knowledge Graph 模板 也遵循触发器 算子 资源的相同结构可对照学习。【免费下载链接】DB-GPTopen-source agentic AI data assistant for the next generation of AI Data products.项目地址: https://gitcode.com/GitHub_Trending/db/DB-GPT创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考