文档爬取与向量存储服务

一个结合Crawl4AI网页爬取和ChromaDB向量存储的文档处理服务,支持语义搜索和FastAPI集成,适用于知识管理和文档检索场景。

  • by MrBlackSheep91
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 MrBlackSheep91/crawl4ai-mcp

使用说明

Crawl4AI+ChromaDB MCP服务器

Maicol第二大脑的文档抓取器,带有矢量存储功能。

特性

  • 🕷️ Web剪贴 使用Crawl4AI(异步、无头Chrome)
  • 📊 矢量存储器 使用ChromaDB
  • 🔍 语义搜索 使用句子变换器(自由嵌入)
  • 🚀 快速API 便于集成的端点
  • 🐳 码头工人 铁路部署准备就绪

堆栈

  • Crawl4AI:Web抓取框架
  • 色度数据库:矢量数据库
  • 句子转换:全MiniLM-L6-v2(免费嵌入)
  • 快速API:REST API框架
  • 铁路:云托管

API终点

健康检查

GET /health

返回服务状态和ChromaDB连接信息。

爬行和索引

POST /crawl
Content-Type: application/json

{
  "url": "https://docs.example.com",
  "max_depth": 1,
  "chunk_size": 1000
}

在ChromaDB中抓取URL并索引内容。

搜索

POST /search
Content-Type: application/json

{
  "query": "How to deploy to Railway?",
  "n_results": 5
}

对索引文档进行语义搜索。

统计

GET /stats

获取收集统计数据(文档计数等)。

删除收藏

DELETE /collection

⚠️ 删除整个集合。小心使用!

环境变量

CHROMA_URL=http://chroma.railway.internal:8000
CHROMA_API_KEY=your-api-key-here
COLLECTION_NAME=maicol_docs

铁路部署

1.部署ChromaDB模板

使用Railway的官方ChromaDB模板(包括Auth Proxy)。

2.部署Crawl4AI服务

# Push to GitHub
git init
git add .
git commit -m "Initial commit"
git remote add origin https://github.com/MrBlackSheep91/crawl4ai-mcp.git
git push -u origin main

# In Railway:
# - Create new service from GitHub repo
# - Set environment variables
# - Deploy

3.配置环境变量

CHROMA_URL=http://chroma.railway.internal:8000
CHROMA_API_KEY=6fpt4o4nhwr6kp69
COLLECTION_NAME=maicol_docs

使用示例

铁路文件索引

curl -X POST https://your-crawl4ai.up.railway.app/crawl \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://docs.railway.app",
    "max_depth": 1,
    "chunk_size": 1000
  }'

搜索索引文档

curl -X POST https://your-crawl4ai.up.railway.app/search \
  -H "Content-Type: application/json" \
  -d '{
    "query": "How to deploy Docker containers?",
    "n_results": 5
  }'

成本优化

  • 嵌入:免费(当地句子转换器)
  • 色度数据库:铁路约1-2美元/月
  • Crawl4AI:铁路约1-2美元/月
  • 总计:约2-4美元/月

嵌入不需要OpenAI成本! 🎉

本地开发

# Install dependencies
pip install -r requirements.txt

# Set environment variables
cp .env.example .env
# Edit .env with your values

# Run locally
uvicorn main:app --reload --port 8000

与Graphiti集成

索引文档后,您可以与Graphiti知识图同步:

# Search docs
docs = await search_documents({"query": "Railway deployment"})

# Add to Graphiti
await graphiti.add_messages({
    "group_id": "maicol_second_brain",
    "messages": [{
        "content": doc.content,
        "role_type": "system",
        "role": "documentation",
        "timestamp": datetime.now().isoformat()
    } for doc in docs.results]
})

故障排除

ChromaDB连接失败

  • 检查 CHROMA_URL 是正确的(应该是 http://chroma.railway.internal:8000)
  • 验证 CHROMA_API_KEY 匹配身份验证代理配置
  • 确保两个服务都在同一个铁路项目中

爬行失败

  • 检查URL是否可访问
  • 验证Chrome是否安装在Docker容器中
  • 如果需要,增加超时时间

未生成嵌入

  • 首次运行时下载句子转换器模型(~100MB)
  • 确保容器有足够的内存(至少512MB)

后续步骤

  • []为多个URL添加批量爬网
  • []实施爬网调度(cron作业)
  • []添加对经过身份验证的页面的支持
  • []创建MCP协议端点

已部署: 2025-11-18 状态: 在开发中