crewAI Knowledge 与 RAG:Chroma/Qdrant 向量知识库集成

发布时间:2026/5/18 19:07:30

crewAI Knowledge 与 RAG:Chroma/Qdrant 向量知识库集成 crewAI Knowledge 与 RAGChroma/Qdrant 向量知识库集成本文基于 crewAI v1.11.0深入解析 Knowledge 模块的架构设计、向量数据库集成和 RAG 工程实践。一、Knowledge 与 Memory 的区别crewAI 中有两个容易混淆的概念对比维度Memory记忆Knowledge知识库来源Agent 执行过程中动态生成外部提前导入的静态知识源内容任务输出、决策历史、交互记录PDF、文档、数据库、网页内容更新方式运行时自动积累手动导入增量索引典型用途跨会话经验积累为 Agent 提供领域知识基础类比人的工作日记人的参考书库简单说Memory 是 Agent 自己写的笔记Knowledge 是提前给 Agent 备好的参考资料。二、Knowledge 模块的统一架构crewAI 的 Knowledge 模块提供了一个统一的抽象层屏蔽了不同知识源和向量数据库的差异知识源层Source Layer ├── PDF文件 ─ PDFKnowledgeSource ├── 文本文件 ─ TextFileKnowledgeSource ├── CSV/Excel ─ CSVKnowledgeSource ├── 网页URL ─ URLKnowledgeSource ├── 纯文本字符串 ─ StringKnowledgeSource └── 自定义数据源 ─ 继承 BaseKnowledgeSource 向量化层Embedding Layer ├── OpenAI Embeddings ├── Azure OpenAI ├── Ollama本地模型 └── 自定义 Embedding 存储层Vector Store Layer ├── Chroma默认 ├── Qdrant └── 其他向量数据库三、基础使用快速为 Agent 配备知识库3.1 字符串知识源最简单fromcrewaiimportAgent,Task,Crew,Knowledgefromcrewai.knowledge.source.string_knowledge_sourceimportStringKnowledgeSource# 从字符串创建知识源company_infoStringKnowledgeSource(content 我们公司成立于2020年专注于企业级AI解决方案。 主要产品包括 1. AI文档助手支持PDF、Word、Excel格式的智能问答 2. 智能客服系统支持中英文双语日均处理10万次对话 3. 代码审查平台集成GPT-4o支持20种编程语言 技术架构基于微服务使用Kubernetes部署SLA 99.9%。 团队规模200人其中技术人员120人。 ,metadata{source:company_overview,version:2026Q1})# 创建知识库company_knowledgeKnowledge(sources[company_info],collection_namecompany_knowledge)# 将知识库绑定到 AgentagentAgent(role客户成功经理,goal基于公司产品知识为客户提供准确的技术咨询,backstory你深度了解公司所有产品的技术细节和使用场景,knowledge_sources[company_info]# Agent 级别绑定)3.2 PDF 知识源fromcrewai.knowledge.source.pdf_knowledge_sourceimportPDFKnowledgeSource# 从 PDF 文件创建知识源technical_docsPDFKnowledgeSource(file_paths[docs/architecture_guide.pdf,docs/api_reference.pdf,docs/deployment_manual.pdf],# 分块配置chunk_size1000,# 每个文本块的字符数chunk_overlap200,# 块之间的重叠字符数保留语义连续性)agentAgent(role技术支持工程师,goal基于技术文档帮助客户解决技术问题,backstory...,knowledge_sources[technical_docs])3.3 URL 知识源网页内容摄取fromcrewai.knowledge.source.url_knowledge_sourceimportURLKnowledgeSource# 从网页创建知识源自动抓取和解析web_knowledgeURLKnowledgeSource(urls[https://docs.crewai.com/introduction,https://docs.crewai.com/concepts/agents,https://blog.crewai.com/latest-updates],# 可配置抓取策略max_depth2,# 跟随链接的深度1只抓当前页)四、向量数据库集成4.1 默认 Chroma 配置Chroma 是 crewAI 的默认向量数据库无需额外配置即可使用fromcrewaiimportCrew# 默认使用 Chroma 本地存储crewCrew(agents[agent],tasks[task],knowledge_sources[knowledge_source],# 自动使用 Chroma)Chroma 的数据默认存储在~/.crewai/knowledge/目录。Chroma 持久化配置fromcrewai.knowledge.storage.chroma_knowledge_storageimportChromaKnowledgeStorage# 自定义 Chroma 存储配置chroma_storageChromaKnowledgeStorage(collection_namemy_knowledge_base,path/data/knowledge,# 持久化路径allow_resetFalse,# 防止意外重置)4.2 Qdrant 集成对于需要高性能向量检索或分布式部署的场景Qdrant 是更好的选择importosfromcrewaiimportCrew# 方式一通过环境变量配置os.environ[QDRANT_URL]http://localhost:6333os.environ[QDRANT_API_KEY]your-api-key# 如果使用 Qdrant Cloud# 方式二在 Crew 中配置 embeddercrewCrew(agents[agent],tasks[task],knowledge_sources[knowledge_source],embedder{provider:openai,config:{model:text-embedding-3-large,api_key:os.environ.get(OPENAI_API_KEY)}})Qdrant 的优势支持过滤条件的向量检索如按 metadata 过滤支持水平扩展和分布式部署提供 REST API 和 gRPC 双接口云托管版本Qdrant Cloud支持零运维4.3 Chroma vs Qdrant 选型对比维度ChromaQdrant部署复杂度极低本地文件/内存中需要独立服务扩展性单机分布式并发性能中高过滤能力基础丰富适合规模 100万向量 100万向量开发阶段推荐✅生产阶段推荐小规模 ✅中大规模 ✅五、Embedding 策略Embedding 模型的选择直接影响知识检索的质量和成本# 策略一OpenAI Embedding高质量有成本embedder_config{provider:openai,config:{model:text-embedding-3-large,# 3072维高精度# model: text-embedding-3-small, # 1536维低成本}}# 策略二本地 Ollama Embedding无成本需要本地资源embedder_config{provider:ollama,config:{model:mxbai-embed-large,base_url:http://localhost:11434}}# 策略三Azure OpenAI企业合规需求embedder_config{provider:azure,config:{model:text-embedding-ada-002,deployment_name:your-deployment,api_base:https://your-resource.openai.azure.com/,api_key:os.environ[AZURE_API_KEY]}}crewCrew(agents[agent],tasks[task],knowledge_sources[knowledge_source],embedderembedder_config)六、RAG 增强生成检索片段与 Agent Prompt 的融合当 Agent 执行 Task 时crewAI 会自动执行以下流程Agent 收到 Task │ ▼ 从 Task description 提取查询关键词 │ ▼ 在 Knowledge 向量库中检索相关片段 复合评分语义相似度 元数据过滤 │ ▼ 检索到 top-k 片段默认 k5 │ ▼ 将片段插入 Agent Prompt 以下是相关背景知识请基于此回答 [知识片段1] [知识片段2] ... [原始任务描述] │ ▼ LLM 基于知识片段 任务描述生成回答RAG 参数调优fromcrewai.knowledge.source.pdf_knowledge_sourceimportPDFKnowledgeSource knowledge_sourcePDFKnowledgeSource(file_paths[handbook.pdf],chunk_size800,# 较小的块更精准但可能丢失跨段信息# 较大的块信息更完整但相关性可能降低chunk_overlap200,# 重叠确保句子不被截断)引用溯源# 在 Task 的 expected_output 中要求 Agent 引用知识来源taskTask(description回答客户关于产品的技术问题,expected_output 详细回答必须包含 1. 直接回答客户问题 2. 引用相关文档格式[来源: 文档名, 页码/章节] 3. 如果知识库中没有相关信息明确说明文档中未涵盖此内容 ,agentsupport_agent)七、知识更新策略知识库的内容会随时间过时需要制定更新策略7.1 增量索引# 新增文档时只索引新增部分defadd_new_documents(new_files:list[str]):new_sourcePDFKnowledgeSource(file_pathsnew_files)# crewAI 会自动跳过已经索引过的文档基于内容哈希crewCrew(agents[agent],tasks[task],knowledge_sources[existing_source,new_source]# 合并新旧知识源)7.2 定期重建# 对于频繁更新的知识源如技术文档定期完整重建importscheduleimporttimedefrebuild_knowledge_base():每周重建知识库print(开始重建知识库...)# 从最新文档重建updated_sourceURLKnowledgeSource(urls[https://docs.crewai.com/...])# 清空旧索引并重建allow_resetTrue 时允许重置crewCrew(agents[agent],tasks[task],knowledge_sources[updated_source],)print(知识库重建完成)schedule.every().monday.at(02:00).do(rebuild_knowledge_base)八、实战为企业知识助手构建 RAG 系统fromcrewaiimportAgent,Task,Crewfromcrewai.knowledge.source.pdf_knowledge_sourceimportPDFKnowledgeSourcefromcrewai.knowledge.source.string_knowledge_sourceimportStringKnowledgeSourceimportos# ─── 知识源配置 ──────────────────────────────────product_docsPDFKnowledgeSource(file_paths[knowledge/product_manual.pdf,knowledge/api_reference.pdf,knowledge/faq.pdf,],chunk_size1000,chunk_overlap200)company_policiesStringKnowledgeSource(contentopen(knowledge/policies.txt).read(),metadata{type:policy,version:2026Q1})# ─── Agent 配置 ──────────────────────────────────knowledge_agentAgent(role企业知识顾问,goal基于公司文档库准确回答员工和客户的各类问题,backstory你是公司的知识管理专家 熟悉所有产品手册、API文档和公司政策。 你的回答总是有据可查遇到不确定的内容会明确标注。,knowledge_sources[product_docs,company_policies],# 绑定知识源verboseTrue)# ─── Task 配置 ──────────────────────────────────qa_taskTask(description回答以下问题{question},expected_output 准确、简洁的回答要求 1. 直接回答问题不超过300字 2. 引用具体文档来源 3. 给出相关的延伸阅读建议如适用 ,agentknowledge_agent)# ─── Crew 配置 ───────────────────────────────────knowledge_crewCrew(agents[knowledge_agent],tasks[qa_task],embedder{provider:openai,config:{model:text-embedding-3-small}# 成本优化},verboseFalse# 生产环境关闭详细日志)# 运行resultknowledge_crew.kickoff(inputs{question:我们的API限流策略是什么超出限制后如何处理})print(result.raw)九、小结crewAI 的 Knowledge 模块将外部知识库的集成降低到了几行代码的复杂度核心价值在于统一接口PDF、网页、数据库等不同来源用同一套 API 处理自动 RAG知识检索和 Prompt 融合对开发者透明无需手动实现存储灵活从本地 Chroma 到分布式 Qdrant按需选择生产就绪增量索引、缓存、并发都有内置支持在企业场景中Knowledge Memory 的组合是构建真正有知识、有记忆的 AI 助手的完整解决方案。系列导航上一篇crewAI 记忆架构短时记忆、长时记忆与实体记忆的层级设计下一篇crewAI 工具系统内置工具集、自定义工具与工具权限边界基于 crewAI v1.11.0 官方文档撰写于 2026 年 3 月

相关新闻