crewai-rag-langchain-qdrant
benitomartin/crewai-rag-langchain-qdrant加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。

想象这样的场景:你是一家 AI 公司的技术负责人,收到了团队成员转发的最新论文——Google 那篇改写了 NLP 历史的《Attention Is All You Need》。论文 12 页,信息密度极高,团队里不是每个人都有时间逐字逐句研读。传统做法是指定一位工程师花半天时间阅读、做笔记,再写一份总结分享给全组。
而 benitomartin/crewai-rag-langchain-qdrant 项目想证明:这套流程可以完全自动化,而且只需要一个 Jupyter Notebook。
它将论文 PDF 扔进一条 RAG(检索增强生成)流水线,用 CrewAI 构建两个协作型 AI Agent——一个"研究员"负责深度分析,一个"作家"负责撰写通俗总结——最终产出结构化的 Markdown 分析报告与摘要。这个流程不依赖特定论文,替换 PDF 即可迁移到任意研究文献。
大语言模型(LLM)固然强大,但存在两个根本性问题:知识时效性(模型知识有截止日期)和幻觉风险(一本正经地胡说八道)。RAG(Retrieval-Augmented Generation,检索增强生成)通过从外部知识库中检索相关文档,将真实上下文注入模型回答,是目前工业界最主流的解决方案之一。
而 CrewAI 是 2023 年底兴起的多智能体编排框架,允许开发者用自然语言定义 Agent 的"角色、目标、背景故事",然后让多个 Agent 协作完成复杂任务——类似于给不同的 AI 分配不同岗位,彼此配合而不是单打独斗。
本项目的创新之处在于:将 CrewAI 的多智能体协作模式引入 RAG 流水线,让研究员 Agent 负责深度检索分析,作家 Agent 负责将技术内容转化为通俗表达,形成了一条从原始文献到可读总结的端到端流水线。
整个项目的技术架构分为四个层级:
项目使用 PyPDFLoader 从 PDF 文件加载原始文本,然后使用 RecursiveCharacterTextSplitter 将长文本切分为重叠的小块(chunks)。这个切分策略是 LangChain 推荐的默认方案,能够在保持语义连贯性的同时控制每个块的 token 数量。
切分后的文本块通过 OpenAI Embeddings 模型转换为高维向量,存入 Qdrant 向量数据库。Qdrant 是一个开源的高性能向量相似度搜索服务,支持带元数据(metadata)的向量存储,开发者可以在检索时通过元数据过滤(如按文档来源、时间范围)精确控制检索范围。
存入 Qdrant 时,每个向量块附带元数据(如原始文本内容、来源文档信息),检索时不仅能返回语义最相似的块,还能提供这些块的出处,方便后续追溯。
在调用 CrewAI Agent 之前,项目先用 LangChain 的 RetrievalQA 链做了 QA 验证——向向量数据库提问,检查 RAG 流水线的基本功能是否正常。这是开发 RAG 系统时的标准实践:在端到端调用 Agent 之前,先验证检索质量。
这是整个流水线的核心亮点。项目定义了两个 CrewAI Agent:
研究员 Agent(Computer Science Researcher):
作家 Agent(Computer Science Writer):
两个 Agent 的协作逻辑通过 CrewAI 的 Crew 编排器管理:研究员先行,作家在后,作家依赖研究员的输出作为输入,形成有序的工作流。
| 组件 | 技术选型 | 作用 |
|---|---|---|
| 文档加载 | PyPDFLoader (LangChain) | 读取 PDF |
| 文本切分 | RecursiveCharacterTextSplitter | 语义友好的分块 |
| 向量嵌入 | OpenAI text-embedding-ada-002 | 文本→向量 |
| 向量数据库 | Qdrant | 高性能向量存储与检索 |
| RAG 链 | LangChain RetrievalQA | 检索+生成验证 |
| Agent 框架 | CrewAI | 多智能体编排与任务分配 |
| Agent 工具 | 自定义 Qdrant 检索工具 | Agent 调用向量数据库 |
| 运行环境 | Jupyter Notebook | 交互式探索与演示 |
整个项目以 Jupyter Notebook 为载体,核心逻辑集中在 crewAI_RAG_Qdrant.ipynb 文件中。这既是优点(便于学习和调试)也是缺点(不适合生产环境直接部署)。
优点:
requirements.txt 仅 9 个包,安装简单挑战:
这个项目并非没有值得审视的地方:
1. 依赖单一 LLM 供应商:所有调用均走 OpenAI API,若需切换到 Claude、本地 Llama 等需要大量改造。
2. 未提供容器化部署:没有 Dockerfile 或 docker-compose,生产环境迁移成本高。
3. 研究论文选择过于专一:Demo 仅针对 Transformer 论文,其他类型的论文(如实验报告、综述)效果未知。
4. RAG 检索质量缺乏量化评估:仅通过 QA Chain 做简单问答验证,没有 BM25 对比、A/B 测试等科学评估手段。
5. 缺乏测试代码:项目中没有单元测试或集成测试,代码演进风险较高。
这个项目的真正价值不在于某个具体技术的实现,而在于它展示了一种趋势:从"用 LLM 回答问题"到"用多 Agent 协作完成复杂知识工作"。
CrewAI 的崛起代表了一种新范式:不再是单一模型调用,而是多个专业化 Agent 各司其职、信息流转、协作产出。这与人类团队的工作方式高度相似——有人负责调研,有人负责写作,流程编排由"主管"(CrewAI 的 Crew)负责。
结合 RAG 的可靠知识检索能力,这套模式可以延伸到:法律合同分析、医疗报告解读竞品技术调研、投资备忘录生成等高价值知识工作场景。
benitomartin/crewai-rag-langchain-qdrant 是一个教学导向的 RAG + 多智能体协作示范项目。它用清晰的 Notebook 代码展示了如何将 LangChain 的检索能力、CrewAI 的 Agent 编排能力和 Qdrant 的向量搜索能力串联起来,形成一条从原始论文到可读报告的自动化流水线。
对于想要学习 RAG 开发和多 Agent 协作模式的开发者,这个项目是一个不错的起点。但若要投入生产使用,还需要补充容器化部署、测试覆盖、多 LLM 支持和检索质量评估等工程化工作。
本报告基于 GitHub 仓库 benitomartin/crewai-rag-langchain-qdrant (75★) 的开源代码分析生成。