Motor de búsqueda con RAG y MCP
Un potente motor de búsqueda que combina LangChain, Model Context Protocol (MCP), Retrieval-Augmented Generation (RAG) y Ollama para crear un sistema de IA agente capaz de buscar en la web, recuperar información y proporcionar respuestas relevantes.
Características
Capacidades de búsqueda web utilizando la API de Exa
Recuperación de contenido web mediante FireCrawl
RAG (Recuperación-Generación Aumentada) para una extracción de información más relevante
Servidor MCP (Protocolo de contexto de modelo) para la invocación de herramientas estandarizadas
Soporte tanto para LLM locales a través de Ollama como para LLM basados en la nube a través de OpenAI
Arquitectura flexible que admite búsqueda directa, búsqueda basada en agente o modo servidor
Manejo integral de errores y alternativas elegantes
Python 3.13+ con sugerencias de tipos
Procesamiento asincrónico para operaciones web eficientes
Related MCP server: MPC Docs Server
Arquitectura
Este proyecto integra varios componentes clave:
Módulo de búsqueda : utiliza la API Exa para buscar en la web y FireCrawl para recuperar contenido
Módulo RAG : integra documentos, los divide en fragmentos y los almacena en un almacén de vectores FAISS
Servidor MCP : proporciona un protocolo estandarizado para la invocación de herramientas
Agente : agente basado en LangChain que utiliza las capacidades de búsqueda y RAG
Estructura del proyecto
search-engine-with-rag-and-mcp/
├── LICENSE # MIT License
├── README.md # Project documentation
├── data/ # Data directories
├── docs/ # Documentation
│ └── env_template.md # Environment variables documentation
├── logs/ # Log files directory (auto-created)
├── src/ # Main package (source code)
│ ├── __init__.py
│ ├── core/ # Core functionality
│ │ ├── __init__.py
│ │ ├── main.py # Main entry point
│ │ ├── search.py # Web search module
│ │ ├── rag.py # RAG implementation
│ │ ├── agent.py # LangChain agent
│ │ └── mcp_server.py # MCP server implementation
│ └── utils/ # Utility modules
│ ├── __init__.py
│ ├── env.py # Environment variable loading
│ └── logger.py # Logging configuration
├── pyproject.toml # Poetry configuration
├── requirements.txt # Project dependencies
└── tests/ # Test directoryEmpezando
Prerrequisitos
Python 3.13+
Poesía (opcional, para desarrollo)
Claves API para Exa y FireCrawl
(Opcional) Ollama instalado localmente
(Opcional) Clave API de OpenAI
Instalación
Clonar el repositorio
git clone https://github.com/yourusername/search-engine-with-rag-and-mcp.git
cd search-engine-with-rag-and-mcpInstalar dependencias
# Using pip
pip install -r requirements.txt
# Or using poetry
poetry installCree un archivo
.env(utilice docs/env_template.md como referencia)
Uso
La aplicación tiene tres modos principales de funcionamiento:
1. Modo de búsqueda directa (predeterminado)
# Using pip
python -m src.core.main "your search query"
# Or using poetry
poetry run python -m src.core.main "your search query"2. Modo agente
python -m src.core.main --agent "your search query"3. Modo de servidor MCP
python -m src.core.main --serverTambién puede especificar un host y un puerto personalizados:
python -m src.core.main --server --host 0.0.0.0 --port 8080Usando Ollama (opcional)
Para utilizar Ollama para incrustaciones locales y capacidades LLM:
Instalar Ollama: https://ollama.ai/
Extraer un modelo:
ollama pull mistral:latestEstablezca las variables de entorno adecuadas en su archivo
.env:
OLLAMA_BASE_URL=http://localhost:11434
OLLAMA_MODEL=mistral:latestDesarrollo
Este proyecto sigue estas mejores prácticas:
Formato de código : Negro e isort para un estilo de código consistente
Comprobación de tipos : mypy para la comprobación de tipos estáticos
Linting : flake8 para la calidad del código
Pruebas : pytest para pruebas unitarias y de integración
Gestión del entorno : python-dotenv para gestionar variables de entorno
Registro : registro estructurado tanto en la consola como en el archivo
Licencia
Este proyecto está licenciado bajo la licencia MIT: consulte el archivo de LICENCIA para obtener más detalles.
Expresiones de gratitud
LangChain para el marco del agente
Protocolo de contexto del modelo para la invocación de herramientas estandarizadas
Ollama para capacidades LLM locales
Exa para capacidades de búsqueda web
FireCrawl para la recuperación de contenido web