CrawlAI-RAG
用 Playwright 爬取网站内容 + LangChain RAG + ChromaDB 向量检索,快速将任意网站变成可对话知识库
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
用 Playwright 爬取网站内容 + LangChain RAG + ChromaDB 向量检索,快速将任意网站变成可对话知识库
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象一个场景: 你接手了一个内容繁杂的文档站点,产品文档、API 手册、FAQ 混在一起,想快速找到某个功能的具体实现细节,却只能在搜索框里大海捞针。或者你是研究员,需要系统性地采集竞争对手官网的所有产品介绍、价格策略和技术细节——手动复制粘贴不仅低效,还容易遗漏。
CrawlAI RAG 就是来解决这个痛点的。它是一个开源的 AI 网站情报平台,核心能力只有两步:把网站内容抓取下来,用 RAG 方式建索引,然后用自然语言问答。相当于给任意网站装上了一个专属的 ChatGPT,而这个 ChatGPT 的知识边界严格限定在该网站的内容范围内,不会胡说八道。
CrawlAI RAG 由独立开发者 Ankit Kumar Nayak 创建并开源(MIT License)。作者是计算机科学背景,专注于 AI 应用方向。项目于 2024 年中后期启动,目标是解决"静态网站内容无法被高效检索"的普遍痛点。在 GitHub 上已获得 152 stars、35 forks,被标记为 agent、crawler、rag、rag-chatbot、rag-pipeline 等 topic,属于典型的 AI + 爬虫 + RAG 交叉领域的轻量级实用工具。
整个系统的数据流设计非常清晰,可以分为四个阶段:
第一阶段:智能爬取(scraper/crawler.py)
这是整个 pipeline 的入口,也是技术含量最高的模块。作者没有简单地用 requests + BeautifulSoup,而是选用了 Playwright 无头浏览器,原因很实际——现代网站大量使用 JavaScript 动态渲染内容,只有真实渲染 DOM 才能拿到完整文本。
爬虫逻辑有几处值得注意的工程细节:
<a href> 标签,筛选同域名链接自动加入爬取队列,支持最多 20 页(max_pages 可配置)。第二阶段:文本切分(rag/chunker.py)
抓回来的大段文本需要切成小块才能喂给 embedding 模型。项目使用 LangChain 的 RecursiveCharacterTextSplitter,设置 chunk_size=400、chunk_overlap=50。400 字符的切分粒度偏小,优点是检索精度高(每次只召回最相关的片段),缺点是上下文信息可能丢失。这是工程上的经典权衡,作者选择偏向精度。
第三阶段:向量化存储(rag/vectorstore.py)
每个文本块通过 HuggingFaceEmbeddings 模型 sentence-transformers/all-MiniLM-L6-v2 转成 384 维向量,存入本地 ChromaDB 向量数据库。存储路径按域名分目录(如 vector_db/example_com/),索引同一个网站会先清空旧数据,确保每次都是干净重建。all-MiniLM-L6-v2 是目前最流行的轻量 embedding 模型,推理速度快,CPU 即可运行。
第四阶段:RAG 问答(rag/qa.py)
用户提问时,系统执行:检索(向量相似度 Top-K)→ 拼 prompt → 调用 LLM → 返回答案。LLM 选用 Groq 的 LLaMA 3.3 70B(免费 tier 有额度),通过 langchain-groq 集成。Groq 的优势是推理速度极快(比 OpenAI 快数倍),适合交互式问答场景。temperature=0.2,偏向确定性回答,减少幻觉。
Streamlit 前端(app.py)将整个 pipeline 封装成三步操作:
Streamlit 作为 Python 原生的 Web UI 框架,开发效率极高。作者通过 CSS injection 自定义了按钮字体大小和布局,美观度仍然有限,但对于技术用户来说功能清晰够用。
优点:
pip install -r requirements.txt 即可拉全量依赖。缺点:
playwright install 需要下载 Chromium 浏览器,且在不同 OS 上可能遇到 headless 模式权限问题或依赖库缺失。LAST_WEBSITE 记录最后索引的网站,不支持多用户并发索引。同类开源 RAG 爬虫工具中,Firecrawl(怪兽级功能但闭源)和 Scrapegraph-ai(Python 原生)都有一定知名度。CrawlAI RAG 的差异化在于:专注于"把网站变成可对话知识库"这个单一场景,而非通用爬虫或通用 RAG 框架。它的爬虫能力(Playwright 渲染、DOM 稳定性等待)比 Scrapegraph-ai 更专业,同时比 Firecrawl 轻量且完全开源。
CrawlAI RAG 是一款定位明确的网站内容 RAG 专用工具,适合以下场景:
对于有 Python 基础、希望快速原型验证"网站+RAG"思路的开发者来说,这是个值得一试的项目。代码量适中(核心约 600 行 Python),架构清晰,LangChain + ChromaDB 的组合也是当前最主流的 RAG 技术栈,学习成本低,改造成本也低。