返回市场
爬虫4AI-RAG-MCP

爬虫4AI-RAG-MCP

作者:ToKiDoO21 星标更新:2025-08-09

项目介绍

<h1 align="left">🐳 Crawl4AI+SearXNG MCP Server</h1>

<em>为AI代理和AI编码助手提供网络爬取、搜索和RAG功能</em>

(从 https://github.com/coleam00/mcp-crawl4ai-rag 分叉而来). 添加了SearXNG集成和批量抓取及处理能力。

这是一个自包含的Docker解决方案,结合了模型上下文协议(MCP)Crawl4AISearXNGSupabase,为AI代理和编码助手提供了完整的网络搜索、爬取和RAG功能

🚀 一键部署完整堆栈:使用docker compose up -d部署所有内容 - 不需要Python环境设置,无需外部服务。

🎯 智能RAG与传统抓取的区别

与传统的抓取(如Firecrawl)不同,后者会倾倒原始内容并淹没LLM上下文窗口,本解决方案使用**智能RAG(检索增强生成)**来:

  • 🔍 只提取相关的内容,通过语义相似度搜索
  • ⚡ 防止上下文溢出,返回集中且相关的信息
  • 🧠 增强AI响应,以精确的目标知识
  • 📊 维持上下文效率,提升LLM性能

灵活的输出选项:

  • RAG模式(默认):返回具有相似度分数的语义相关片段
  • 原始Markdown模式:当需要完整上下文时进行全内容提取
  • 混合搜索:结合语义和关键词搜索,获得全面的结果

💡 主要优势

  • 🔧 零配置:包含预配置的SearXNG实例
  • 🐳 Docker-only:无需设置Python环境
  • 🔍 集成搜索:内置SearXNG用于私有快速搜索
  • ⚡ 生产就绪:包括HTTPS、安全性和监控
  • 🎯 AI优化:针对编码助手的RAG策略

概览

这个基于Docker的MCP服务器提供了一个完整的网络智能堆栈,使AI代理能够:

  • 搜索网络,使用集成的SearXNG实例
  • 爬取和抓取网站,使用高级内容提取
  • 存储内容在向量数据库中,采用智能分块
  • 执行RAG查询,使用多种增强策略

可用的高级RAG策略:

  • 上下文嵌入,以增强语义理解
  • 混合搜索,结合向量和关键词搜索
  • 代理RAG,用于专门的代码示例提取
  • 重新排序,使用跨编码器模型提高结果的相关性
  • 知识图谱,用于AI幻觉检测和仓库代码分析

详情请参阅下方的配置部分

功能

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

工具

服务器提供了基本的网络爬取和搜索工具:

核心工具(始终可用)

  1. scrape_urls:抓取一个或多个URL并将它们的内容存储在向量数据库中。支持单个URL和URL列表的批处理。
  2. smart_crawl_url:根据提供的URL类型(站点地图、llms-full.txt或需要递归爬取的常规网页)智能爬取整个网站
  3. get_available_sources:获取数据库中所有可用的来源(域)列表
  4. perform_rag_query:使用语义搜索查找相关内容,可选来源过滤
  5. NEW! search:综合的网络搜索工具,集成了SearXNG搜索、自动化抓取和RAG处理。执行完整的流程:(1)使用提供的查询搜索SearXNG,(2)从搜索结果中提取URL,(3)自动抓取所有找到的URL,(4)将内容存储在向量数据库中,(5)返回按URL组织的RAG处理结果或原始Markdown内容。关键参数:query(搜索词),return_raw_markdown(跳过RAG获取原始内容),num_results(搜索结果限制),batch_size(数据库操作批处理),max_concurrent(并行抓取会话)。适用于研究工作流、竞争分析和带有内置智能的内容发现。

条件工具

  1. search_code_examples(需要USE_AGENTIC_RAG=true):专门搜索爬取文档中的代码示例及其摘要。此工具为AI编码助手提供有针对性的代码片段检索。

知识图谱工具(需要USE_KNOWLEDGE_GRAPH=true,见下文)

  1. parse_github_repository:将GitHub仓库解析为Neo4j知识图谱,提取类、方法、函数及其关系,用于幻觉检测
  2. check_ai_script_hallucinations:通过验证导入、方法调用和类使用情况来分析Python脚本中的AI幻觉
  3. query_knowledge_graph:使用命令如reposclassesmethods和自定义Cypher查询探索和查询Neo4j知识图谱

先决条件

必需:

可选:

安装

这是一个仅限Docker的解决方案 - 不需要设置Python环境!

快速开始

  1. 克隆此仓库:

    git clone https://github.com/coleam00/mcp-crawl4ai-rag.git
    cd mcp-crawl4ai-rag
    
  2. 配置环境:

    cp .env.example .env
    # 编辑.env文件,添加您的API密钥(见下文配置部分)
    
  3. 部署完整堆栈:

    docker compose up -d
    

就这样!您的完整搜索、爬取和RAG堆栈现在正在运行:

部署了什么

Docker Compose堆栈包括:

  • MCP Crawl4AI服务器 - 主应用程序服务器
  • SearXNG - 私有搜索引擎实例
  • Valkey - 用于SearXNG的Redis兼容缓存
  • Caddy - 带有自动HTTPS的反向代理

数据库设置 重要!

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

  1. 转到Supabase仪表板中的SQL编辑器(如有必要,先创建一个新的项目)

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

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

知识图谱设置(可选)

要启用AI幻觉检测和仓库分析功能,您需要设置Neo4j。

注意: 知识图谱功能完全支持Docker,并支持所有功能。

Neo4j设置选项

选项1:本地AI包(推荐)

最简单的方法是使用本地AI包

  1. 克隆并启动Neo4j:

    git clone https://github.com/coleam00/local-ai-packaged.git
    cd local-ai-packaged
    # 按照仓库说明使用Docker Compose启动Neo4j
    
  2. Docker连接详细信息:

    • URI:bolt://host.docker.internal:7687(对于Docker容器)
    • URI:bolt://localhost:7687(对于本地访问)
    • 用户名:neo4j
    • 密码:查看本地AI包文档

选项2:Neo4j Docker

直接使用Docker运行Neo4j:

docker run -d \
  --name neo4j \
  -p 7474:7474 -p 7687:7687 \
  -e NEO4J_AUTH=neo4j/your-password \
  neo4j:latest

选项3:Neo4j桌面版

使用Neo4j桌面版进行本地GUI安装:

  1. 下载并安装Neo4j桌面版
  2. 创建新的数据库,使用您喜欢的设置
  3. 连接详细信息
    • URI:bolt://host.docker.internal:7687(对于Docker容器)
    • URI:bolt://localhost:7687(对于本地访问)
    • 用户名:neo4j
    • 密码:在数据库创建期间设置的密码

配置

通过编辑.env文件来配置Docker堆栈(从.env.example复制):

# ========================================
# MCP SERVER CONFIGURATION
# ========================================
TRANSPORT=sse
HOST=0.0.0.0
PORT=8051

# ========================================
# INTEGRATED SEARXNG CONFIGURATION
# ========================================
# 预配置用于Docker Compose - SearXNG内部运行
SEARXNG_URL=http://searxng:8080
SEARXNG_USER_AGENT=MCP-Crawl4AI-RAG-Server/1.0
SEARXNG_DEFAULT_ENGINES=google,bing,duckduckgo
SEARXNG_TIMEOUT=30

# 可选:生产HTTPS的自定义域名
SEARXNG_HOSTNAME=http://localhost
# SEARXNG_TLS=your-email@example.com  # 对于Let's Encrypt

# ========================================
# AI SERVICES CONFIGURATION
# ========================================
# 必需:OpenAI API用于嵌入
OPENAI_API_KEY=your_openai_api_key

# LLM用于摘要和上下文嵌入
MODEL_CHOICE=gpt-4.1-nano-2025-04-14

# 必需:Supabase用于向量数据库
SUPABASE_URL=your_supabase_project_url
SUPABASE_SERVICE_KEY=your_supabase_service_key

# ========================================
# RAG ENHANCEMENT STRATEGIES
# ========================================
USE_CONTEXTUAL_EMBEDDINGS=false
USE_HYBRID_SEARCH=false
USE_AGENTIC_RAG=false
USE_RERANKING=false
USE_KNOWLEDGE_GRAPH=false

# 可选:如果USE_KNOWLEDGE_GRAPH=true,则使用Neo4j进行知识图谱
# 使用host.docker.internal:7687用于Windows/Mac上的Docker Desktop
NEO4J_URI=bolt://localhost:7687
NEO4J_USER=neo4j
NEO4J_PASSWORD=your_neo4j_password

关键配置注意事项

🔍 SearXNG集成:堆栈中包含一个预配置的SearXNG实例,自动运行。无需外部设置!

🐳 Docker网络:默认配置使用Docker内部网络(http://searxng:8080),开箱即用。

🔐 生产设置:对于生产,将SEARXNG_HOSTNAME设置为您自己的域名,并将SEARXNG_TLS设置为您的电子邮件地址以自动获取HTTPS。

RAG策略选项

Crawl4AI RAG MCP服务器支持四种强大的RAG策略,可以独立启用:

1. USE_CONTEXTUAL_EMBEDDINGS

启用后,该策略通过整个文档的附加上下文增强每个片段的嵌入。系统将整个文档和特定片段传递给LLM(通过MODEL_CHOICE配置),以生成与片段内容一起嵌入的丰富上下文。

  • 何时使用:当需要高精度检索且上下文很重要时启用,例如技术文档中术语在不同部分可能有不同的含义。
  • 权衡:由于每次片段的LLM调用,索引速度较慢,但检索准确性显著提高。
  • 成本:索引期间额外的LLM API调用。

2. USE_HYBRID_SEARCH

结合传统的关键词搜索和语义向量搜索,提供更全面的结果。系统并行执行两种搜索,并智能合并结果,优先考虑出现在两个结果集中的文档。

  • 何时使用:当用户可能使用特定的技术术语、函数名称搜索,或者需要精确的关键词匹配时启用,同时还需要语义理解。
  • 权衡:搜索查询稍微变慢,但结果更加健壮,特别是对于技术内容。
  • 成本:没有额外的API费用,只是计算开销。

3. USE_AGENTIC_RAG

启用专门的代码示例提取和存储。在爬取文档时,系统识别代码块(≥300字符),提取它们及其周围的上下文,生成摘要,并将其存储在一个专门设计用于代码搜索的向量数据库表中。

  • 何时使用:对于需要从文档中找到特定代码示例、实现模式或使用示例的AI编码助手至关重要。
  • 权衡:由于代码提取和总结,爬取速度显著变慢,需要更多的存储空间。
  • 成本:为每个代码示例总结额外的LLM API调用。
  • 优点:提供了一个专用的search_code_examples工具,AI代理可以用来查找特定的代码实现。

4. USE_RERANKING

在初始检索后应用跨编码器重新排名到搜索结果。使用轻量级跨编码器模型(cross-encoder/ms-marco-MiniLM-L-6-v2)对每个结果进行评分,然后按相关性重新排序结果。

  • 何时使用:当搜索精度至关重要且需要最相关的结果位于顶部时启用。特别适用于复杂查询,其中语义相似度本身可能无法捕捉查询意图。
  • 权衡:根据结果数量,搜索查询增加约100-200毫秒,但显著改善结果排序。
  • 成本:没有额外的API费用 - 使用在CPU上运行的本地模型。
  • 优点:更好的结果相关性,尤其是对于复杂查询。与常规RAG搜索和代码示例搜索都兼容。

5. USE_KNOWLEDGE_GRAPH

启用使用Neo4j知识图谱的AI幻觉检测和仓库分析。启用后,系统可以将GitHub仓库解析为图数据库,并将AI生成的代码与实际仓库结构进行验证。完全兼容Docker - 所有功能都在容器化环境中工作。

  • 何时使用:对于需要将生成的代码与实际实现进行验证的AI编码助手,或希望检测AI模型是否幻觉不存在的方法、类或错误使用模式时启用。
  • 权衡:需要Neo4j设置和额外依赖项。大型代码库的解析可能会很慢,验证需要预先索引仓库。
  • 成本:验证没有额外的API费用,但需要Neo4j基础设施(可以使用免费的本地安装或云AuraDB)。
  • 优点:提供三个强大的工具:parse_github_repository用于索引代码库,check_ai_script_hallucinations用于验证AI生成的代码,以及query_knowledge_graph用于探索已索引的仓库。

与MCP工具的使用:

您可以指示AI编码助手将Python GitHub仓库添加到知识图谱中:

"将https://github.com/pydantic/pydantic-ai.git添加到知识图谱"

确保仓库URL以.git结尾。

您还可以让AI编码助手使用MCP的check_ai_script_hallucinations工具检查其创建的脚本中的幻觉。

推荐配置

对于一般文档RAG:

USE_CONTEXTUAL_EMBEDDINGS=false
USE_HYBRID_SEARCH=true
USE_AGENTIC_RAG=false
USE_RERANKING=true

对于具有代码示例的AI编码助手:

USE_CONTEXTUAL_EMBEDDINGS=true
USE_HYBRID_SEARCH=true
USE_AGENTIC_RAG=true
USE_RERANKING=true
USE_KNOWLEDGE_GRAPH=false

对于具有幻觉检测的AI编码助手:

USE_CONTEXTUAL_EMBEDDINGS=true
USE_HYBRID_SEARCH=true
USE_AGENTIC_RAG=true
USE_RERANKING=true
USE_KNOWLEDGE_GRAPH=true

对于快速的基本RAG:

USE_CONTEXTUAL_EMBEDDINGS=false
USE_HYBRID_SEARCH=true
USE_AGENTIC_RAG=false
USE_RERANKING=false
USE_KNOWLEDGE_GRAPH=false

运行服务器

整个堆栈通过Docker Compose管理:

启动堆栈

docker compose up -d

查看日志

# 所有服务
docker compose logs -f

# 特定服务
docker compose logs -f mcp-crawl4ai
docker compose logs -f searxng

停止堆栈

docker compose down

重启服务

# 重启所有
docker compose restart

# 重启特定服务
docker compose restart mcp-crawl4ai
``