A

AI网络爬虫与RAG工具

网络爬虫和RAG(检索增强生成)的实现,使AI代理能够抓取网站并对其爬取的内容进行语义搜索,并将所有内容存储在Supabase中以实现持久的知识检索。

web-scrapingrag-systems

838 查看 · 2026-07-07 更新

简介

网络爬虫和RAG(检索增强生成)的实现,使AI代理能够抓取网站并对其爬取的内容进行语义搜索,并将所有内容存储在Supabase中以实现持久的知识检索。

简介

网络爬虫和RAG(检索增强生成)的实现,使AI代理能够抓取网站并对其爬取的内容进行语义搜索,并将所有内容存储在Supabase中以实现持久的知识检索。

Crawl4AI RAG MCP 服务器

为 AI 代理和 AI 编码助手提供网络爬取和 RAG 功能

这是一个强大的 Model Context Protocol (MCP) 实现,集成了 Crawl4AISupabase,旨在为 AI 代理和 AI 编码助手提供先进的网络爬取和 RAG 功能。

通过这个 MCP 服务器,你可以抓取任何内容,然后在 RAG 中随处使用这些知识

主要目标是将这个 MCP 服务器集成到 Archon 中,随着我将其发展成为一个知识引擎,以帮助构建更好的 AI 代理。这个 Crawl4AI/RAG MCP 服务器的第一个版本很快将得到大幅改进,特别是使其更加可配置,以便你可以使用不同的嵌入模型,并通过 Ollama 在本地运行所有内容。

概览

此 MCP 服务器提供了工具,使 AI 代理能够爬取网站、将内容存储在向量数据库(Supabase)中,并对爬取的内容执行 RAG。它遵循了基于我之前在频道上提供的 Mem0 MCP 服务器模板 构建 MCP 服务器的最佳实践。

愿景

Crawl4AI RAG MCP 服务器只是一个开始。我们的目标如下:

  1. 与 Archon 集成:直接将该系统构建到 Archon 中,创建一个全面的知识引擎,帮助 AI 编码助手构建更好的 AI 代理。

  2. 多种嵌入模型:扩展支持 OpenAI 之外的多种嵌入模型,包括通过 Ollama 在本地运行所有内容的能力,以实现完全控制和隐私保护。

  3. 高级 RAG 策略:实施上下文检索、延迟分块等复杂的检索技术,超越基本的“朴素查找”,显著增强 RAG 系统的功能和精度,特别是在与 Archon 集成时。

  4. 增强的分块策略:实施受 Context 7 启发的分块方法,专注于示例并为每个分块创建独特且语义上有意义的部分,从而提高检索精度。

  5. 性能优化:提高爬取和索引速度,使得快速索引新文档并在同一提示中利用它们变得更加现实。

特性

  • 智能 URL 检测:自动检测并处理不同类型的 URL(普通网页、站点地图、文本文件)
  • 递归爬取:跟随内部链接发现内容
  • 并行处理:高效地同时爬取多个页面
  • 内容分块:根据标题和大小智能分割内容,以便更好地处理
  • 向量搜索:对爬取的内容执行 RAG,可选地按数据源过滤以提高精度
  • 源检索:检索可用于过滤的源,以指导 RAG 过程

工具

服务器提供了四个关键的网络爬取和搜索工具:

  1. crawl_single_page:快速爬取单个网页并将内容存储在向量数据库中
  2. smart_crawl_url:根据提供的 URL 类型(站点地图、llms-full.txt 或需要递归爬取的普通网页)智能爬取整个网站
  3. get_available_sources:获取数据库中所有可用的源(域名)列表
  4. perform_rag_query:使用语义搜索查找相关内容,可选地按源过滤

前提条件

安装

使用 Docker(推荐)

  1. 克隆此仓库: bash git clone https://github.com/coleam00/mcp-crawl4ai-rag.git cd mcp-crawl4ai-rag

  2. 构建 Docker 镜像: bash docker build -t mcp/crawl4ai-rag --build-arg PORT=8051 .

  3. 根据下面的配置部分创建一个 .env 文件

直接使用 uv(不使用 Docker)

  1. 克隆此仓库: bash git clone https://github.com/coleam00/mcp-crawl4ai-rag.git cd mcp-crawl4ai-rag

  2. 如果你还没有安装 uv,请安装它: bash pip install uv

  3. 创建并激活虚拟环境: bash uv venv .venvScriptsactivate

    在 Mac/Linux 上:source .venv/bin/activate

  4. 安装依赖项: bash uv pip install -e . crawl4ai-setup

  5. 根据下面的配置部分创建一个 .env 文件

数据库设置

在运行服务器之前,你需要使用 pgvector 扩展来设置数据库:

  1. 进入你的 Supabase 仪表板中的 SQL 编辑器(如果需要的话,先创建一个新的项目)

  2. 创建一个新的查询并将 crawled_pages.sql 的内容粘贴进去

  3. 运行查询以创建必要的表和函数

配置

在项目根目录下创建一个 .env 文件,并包含以下变量:

MCP 服务器配置

HOST=0.0.0.0 PORT=8051 TRANSPORT=sse

OpenAI API 配置

OPENAI_API_KEY=your_openai_api_key

Supabase 配置

SUPABASE_URL=your_supabase_project_url SUPABASE_SERVICE_KEY=your_supabase_service_key

运行服务器

使用 Docker

bash docker run --env-file .env -p 8051:8051 mcp/crawl4ai-rag

使用 Python

bash uv run src/crawl4ai_mcp.py

服务器将启动并在配置的主机和端口上监听。

与 MCP 客户端集成

SSE 配置

一旦你使用 SSE 传输方式运行了服务器,你可以使用以下配置连接到它:

json { "mcpServers": { "crawl4ai-rag": { "transport": "sse", "url": "http://localhost:8051/sse" } } }

Windsurf 用户注意:在你的配置中使用 serverUrl 而不是 url: json { "mcpServers": { "crawl4ai-rag": { "transport": "sse", "serverUrl": "http://localhost:8051/sse" } } }

Docker 用户注意:如果你的客户端运行在不同的容器中,请使用 host.docker.internal 代替 localhost。这适用于你在 n8n 中使用此 MCP 服务器的情况!

Stdio 配置

将此服务器添加到你的 MCP 配置中,适用于 Claude Desktop、Windsurf 或任何其他 MCP 客户端:

json { "mcpServers": { "crawl4ai-rag": { "command": "python", "args": ["path/to/crawl4ai-mcp/src/crawl4ai_mcp.py"], "env": { "TRANSPORT": "stdio", "OPENAI_API_KEY": "your_openai_api_key", "SUPABASE_URL": "your_supabase_url", "SUPABASE_SERVICE_KEY": "your_supabase_service_key" } } } }

使用 Stdio 配置的 Docker

json { "mcpServers": { "crawl4ai-rag": { "command": "docker", "args": ["run", "--rm", "-i", "-e", "TRANSPORT", "-e", "OPENAI_API_KEY", "-e", "SUPABASE_URL", "-e", "SUPABASE_SERVICE_KEY", "mcp/crawl4ai"], "env": { "TRANSPORT": "stdio", "OPENAI_API_KEY": "your_openai_api_key", "SUPABASE_URL": "your_supabase_url", "SUPABASE_SERVICE_KEY": "your_supabase_service_key" } } } }

构建你自己的服务器

这个实现为你构建具有网络爬虫功能的更复杂的 MCP 服务器提供了一个基础。要构建你自己的服务器:

  1. 通过创建带有 @mcp.tool() 装饰器的方法来添加你自己的工具
  2. 创建你自己的生命周期函数以添加你自己的依赖项3. 根据需要修改 utils.py 文件以添加辅助函数
  3. 通过添加更多专门的爬虫来扩展爬取能力

服务配置

[{'mcpServers': {'crawl4ai-rag': {'transport': 'sse', 'url': 'http://localhost:8051/sse'}}}, {'mcpServers': {'crawl4ai-rag': {'args': ['path/to/crawl4ai-mcp/src/crawl4ai_mcp.py'], 'command': 'python', 'env': {'NEO4J_PASSWORD': 'your_neo4j_password', 'NEO4J_URI': 'bolt://localhost:7687', 'NEO4J_USER': 'neo4j', 'OPENAI_API_KEY': 'your_openai_api_key', 'SUPABASE_SERVICE_KEY': 'your_supabase_service_key', 'SUPABASE_URL': 'your_supabase_url', 'TRANSPORT': 'stdio', 'USE_KNOWLEDGE_GRAPH': 'false'}}}}, {'mcpServers': {'crawl4ai-rag': {'args': ['run', '--rm', '-i', '-e', 'TRANSPORT', '-e', 'OPENAI_API_KEY', '-e', 'SUPABASE_URL', '-e', 'SUPABASE_SERVICE_KEY', '-e', 'USE_KNOWLEDGE_GRAPH', '-e', 'NEO4J_URI', '-e', 'NEO4J_USER', '-e', 'NEO4J_PASSWORD', 'mcp/crawl4ai'], 'command': 'docker', 'env': {'NEO4J_PASSWORD': 'your_neo4j_password', 'NEO4J_URI': 'bolt://localhost:7687', 'NEO4J_USER': 'neo4j', 'OPENAI_API_KEY': 'your_openai_api_key', 'SUPABASE_SERVICE_KEY': 'your_supabase_service_key', 'SUPABASE_URL': 'your_supabase_url', 'TRANSPORT': 'stdio', 'USE_KNOWLEDGE_GRAPH': 'false'}}}}]

来源