AgentScope RAG 知识引擎:Knowledge Bank 与多源异构数据融合

发布时间:2026/5/24 13:22:57

AgentScope RAG 知识引擎:Knowledge Bank 与多源异构数据融合 AgentScope RAG 知识引擎:Knowledge Bank 与多源异构数据融合导读:RAG(检索增强生成)是 Agent 提升准确性的关键技术。AgentScope 提供了完整的 RAG 知识引擎,支持多源异构数据接入、多种 Embedding 模型和向量数据库,以及灵活的工作流扩展。本文深入解析 Knowledge Bank 架构、数据接入方案和实战案例。一、Knowledge Bank 架构1.1 核心设计理念Knowledge Bank 是 AgentScope 的统一知识抽象层,提供:知识模块化:将知识组织为可复用的模块多源接入:支持文件、数据库、网页、OSS 等多种数据源灵活引用:通过knowledge_id引用知识模块深拷贝/浅拷贝:支持不同的知识传递策略┌─────────────────────────────────────────────────────────┐ │ Knowledge Bank 架构 │ ├─────────────────────────────────────────────────────────┤ │ │ │ ┌─────────────────────────────────────────────────────┐│ │ │ Knowledge Manager ││ │ │ - 知识注册 ││ │ │ - 生命周期管理 ││ │ │ - 权限控制 ││ │ └──────────────┬──────────────────────────────────────┘│ │ │ │ │ ┌──────────────▼──────────────────────────────────────┐│ │ │ Knowledge Modules ││ │ │ ┌─────────┐ ┌─────────┐ ┌─────────┐ ││ │ │ │文件知识 │ │数据库知识│ │ 网页知识│ ││ │ │ └─────────┘ └─────────┘ └─────────┘ ││ │ └──────────────┬──────────────────────────────────────┘│ │ │ │ │ ┌──────────────▼──────────────────────────────────────┐│ │ │ Data Ingestion Layer ││ │ │ PDF │ Word │ TXT │ MySQL │ MongoDB │ Web │ OSS ││ │ └──────────────┬──────────────────────────────────────┘│ │ │ │ │ ┌──────────────▼──────────────────────────────────────┐│ │ │ Embedding Layer ││ │ │ OpenAI │ DashScope │ Ollama │ Local Models ││ │ └──────────────┬──────────────────────────────────────┘│ │ │ │ │ ┌──────────────▼──────────────────────────────────────┐│ │ │ Vector Database Layer ││ │ │ Milvus │ Milvus Lite │ Chroma │ HayStack ││ │ └─────────────────────────────────────────────────────┘│ │ │ └─────────────────────────────────────────────────────────┘1.2 知识引用机制fromagentscope.knowledgeimportKnowledgeBank,KnowledgeModule# 创建知识库kbKnowledgeBank()# 注册知识模块kb.register_module(knowledge_idproduct_docs,moduleKnowledgeModule(name产品文档,description公司产品技术文档,source_typefile,source_path/data/docs/products))# 通过 ID 引用知识agentReActAgent.builder().knowledge_bankkb.knowledge_ids[product_docs,api_docs].build()1.3 深拷贝与浅拷贝# 浅拷贝:共享知识引用agent1ReActAgent.builder().knowledge_bankkb.knowledge_ids[shared_docs]# 浅拷贝.build()agent2ReActAgent.builder().knowledge_bankkb.knowledge_ids[shared_docs]# 共享同一份知识.build()# 深拷贝:独立知识副本agent3ReActAgent.builder().knowledge_bankkb.knowledge_ids[shared_docs],copy_modedeep# 深拷贝,独立副本.build()二、多源数据接入2.1 本地文件接入PDF 文件fromagentscope.knowledgeimportFileKnowledge# PDF 知识模块pdf_moduleFileKnowledge(knowledge_idpolicy_docs,source_path/data/policies/*.pdf,chunk_size500,chunk_overlap50,extract_metadataTrue# 提取标题、作者等元数据)kb.register_module(pdf_module)Word 文档fromagentscope.knowledgeimportWordKnowledge# Word 文档知识word_moduleWordKnowledge(knowledge_idcontract_docs,source_path/data/contracts/*.docx,extract_tablesTrue,# 提取表格extract_imagesFalse# 不提取图片)kb.register_module(word_module)TXT 文件fromagentscope.knowledgeimportTextKnowledge# TXT 知识text_moduleTextKnowledge(knowledge_idfaq_docs,source_path/data/faq/*.txt,encodingutf-8,line_delimiter\n\n# 段落分割)kb.register_module(text_module)2.2 数据库接入MySQLfromagentscope.knowledgeimportMySQLKnowledge# MySQL 知识mysql_moduleMySQLKnowledge(knowledge_idcustomer_db,connection_config{host:localhost,port:3306,database:crm,user:root,password:password},querySELECT * FROM customers WHERE active 1,chunk_columndescription,# 按 description 字段分块metadata_columns[id,name,created_at])kb.register_module(mysql_module)MongoDBfromagentscope.knowledgeimportMongoKnowledge# MongoDB 知识mongo_moduleMongoKnowledge(knowledge_idproducts_mongo,connection_stringmongodb://localhost:27017,databaseecommerce,collectionproducts,filter{status:active},projection{name:1,description:1,spec:1},chunk_fielddescription)kb.register_module(mongo_module)2.3 网页爬取fromagentscope.knowledgeimportWebKnowledge# 网页知识web_moduleWebKnowledge(knowledge_idtech_blogs,urls[https://blog.example.com/ai,https://blog.example.com/ml],follow_linksTrue,# 跟随链接max_depth2,extract_contentTrue,extract_linksFalse)kb.register_module(web_module)2.4 OSS 对象存储fromagentscope.knowledgeimportOSSKnowledge# OSS 知识oss_moduleOSSKnowledge(knowledge_idcloud_docs,endpointhttps://oss-cn-hangzhou.aliyuncs.com,access_key_idyour-access-key,access_key_secretyour-secret-key,bucket_nameknowledge-base,prefixdocs/,file_pattern*.pdf)kb.register_module(oss_module)三、Embedding 模型3.1 OpenAI Embeddingfromagentscope.knowledgeimportOpenAIEmbedding# OpenAI EmbeddingembedderOpenAIEmbedding(modeltext-embedding-3-large,dimensions3072,api_keysk-xxx)kbKnowledgeBank(embedderembedder)3.2 DashScope Embeddingfromagentscope.knowledgeimportDashScopeEmbedding# DashScope EmbeddingembedderDashScopeEmbedding(modeltext-embedding-v3,dimensions1536,api_keyyour-dashscope-key)kbKnowledgeBank(embedderembedder)3.3 本地 Ollama Embeddingfromagentscope.knowledgeimportOllamaEmbedding# Ollama EmbeddingembedderOllamaEmbedding(modelnomic-embed-text,base_urlhttp://localhost:11434,dimensions768)kbKnowledgeBank(embedderembedder)四、向量数据库4.1 Milvusfromagentscope.knowledgeimportMilvusStore# Milvus 向量存储vector_storeMilvusStore(hostlocalhost,port19530,collection_nameknowledge_vectors,dimension1536,metric_typeIP# IP / L2 / COSINE)kbKnowledgeBank(vector_storevector_store)4.2 Milvus Litefromagentscope.knowledgeimportMilvusLiteStore# Milvus Lite (轻量级,无需部署)vector_storeMilvusLiteStore(db_path./knowledge.db,collection_nameknowledge_vectors,dimension1536)kbKnowledgeBank(vector_storevector_store)4.3 Chromafromagentscope.knowledgeimportChromaStore# Chroma 向量存储vector_storeChromaStore(persist_directory./chroma_db,collection_nameknowledge_vectors,embedding_functionembedder)kbKnowledgeBank(vector_storevector_store)五、RAG 工作流5.1 标准 RAG 流程fromagentscope.ragimportRAGPipeline# 创建 RAG 流水线pipelineRAGPipeline(knowledge_bankkb,knowledge_ids[product_docs,faq_docs])# 完整流程# 1. 检索# 2. 重排序# 3. 上下文注入# 4. 生成responsepipeline.run(query如何使用产品的 API?,retriever_config{top_k:5,# 检索 Top 5min_score:0.7# 最低相似度},reranker_config{model:cross-encoder,# 重排序模型top_k:3# 保留 Top 3},generator_config{model:gpt-4,max_tokens:1000,temperature:0.3})5.2 RAG Hook 扩展fromagentscope.ragimportRAGHookclassCustomRAGHook(RAGHook):RAGHookdefpost_retrieval(self,retrieved_docs,query):检索后处理# 自定义过滤逻辑filtered_docs[docfordocinretrieved_docsifdoc.metadata.get(category)API]# 自定义打分fordocinfiltered_docs:doc.scorecustom_score(doc,query)returnfiltered_docsRAGHookdefpre_generation(self,context,query):生成前处理# 添加额外上下文enhanced_contextf 相关文档:{context}当前时间:{datetime.now().strftime(%Y-%m-%d)}提示: 请根据以上文档回答问题。 returnenhanced_context# 注册 HookpipelineRAGPipeline(knowledge_bankkb,hooks[CustomRAGHook()])六、实战案例6.1 智能客服知识库fromagentscopeimportReActAgentfromagentscope.knowledgeimportKnowledgeBank# 创建知识库kbKnowledgeBank()# 注册多个知识源kb.register_module(FileKnowledge(knowledge_iduser_manual,source_path/data/manuals/*.pdf))kb.register_module(MySQLKnowledge(knowledge_idticket_history,connection_configmysql_config,querySELECT * FROM tickets WHERE status resolved))kb.register_module(WebKnowledge(knowledge_idonline_help,urls[https://help.example.com]))# 创建客服 AgentagentReActAgent.builder().name(智能客服).model(gpt4_model).knowledge_bankkb.knowledge_ids[user_manual,ticket_history,online_help].build()# 查询responseagent.run(message如何重置密码?)6.2 技术文档问答# 创建 RAG Agentrag_agentRAGAgent.builder().name(技术问答助手).model(gpt4_model).knowledge_bankkb.knowledge_ids[api_docs,code_examples].retriever_config{top_k:5,min_score:0.75}.reranker_config{top_k:3}.build()# 问答responserag_agent.run(query如何在 Python 中调用支付 API?)七、最佳实践7.1 知识更新策略fromagentscope.knowledgeimportKnowledgeUpdater# 自动更新知识updaterKnowledgeUpdater(knowledge_bankkb)# 定期更新updater.schedule_update(knowledge_idproduct_docs,schedule0 2 * * *,# 每天凌晨 2 点source_typefile,source_path/data/products/*.pdf)7.2 检索优化# 混合检索retrieverHybridRetriever(vector_storevector_store,keyword_indexkeyword_index,alpha0.7# 70% 向量检索 30% 关键词检索)# 自定义检索策略retrieverCustomRetriever(knowledge_bankkb,retrieval_strategy{phase1:{type:vector,top_k:20},phase2:{type:keyword,top_k:10},phase3:{type:rerank,top_k:5}})八、总结AgentScope 的 RAG 知识引擎通过 Knowledge Bank 统一抽象,实现了:多源数据接入:文件、数据库、网页、OSS 等多种 Embedding:OpenAI、DashScope、Ollama多种向量库:Milvus、Chroma、HayStack灵活 RAG 工作流:检索、重排序、生成扩展机制:RAG Hook 支持自定义逻辑完整的 RAG 能力让 Agent 基于外部知识生成更准确的回答。延伸阅读:RAG 教程Milvus 集成指南向量数据库最佳实践

相关新闻