Un rastreador web escalable, aquí una lista de la característica de este rastreador:
Al guardar las representaciones en una base de datos vectorial, puede recuperar páginas similares de acuerdo con lo cercanos que están los dos vectores. Esto es crítico para un navegador para recuperar los resultados más relevantes.
Ejecute el rastreador con el terminal:
$ python cli_crawl.py --help
options:
-h, --help show this help message and exit
-u INITIAL_URLS [INITIAL_URLS ...], --initial-urls INITIAL_URLS [INITIAL_URLS ...]
-lm LANGUAGE_MODEL, --language-model LANGUAGE_MODEL
-m MAX_DEPTH, --max-depth MAX_DEPTH Organice la API con uvicorn y FastAPI .
uvicorn api_app:app --host 0.0.0.0 --port 80 Eche un vistazo al ejemplo en start_api_and_head_node.sh . Tenga en cuenta que los nodos de la cabeza de rayos deben inicializarse primero.
Para nuestro caso de uso, simplemente utilizamos el modelo Bert implementado por Huggingface para extraer incrustaciones del texto web. Más precisamente, usamos Bert-Base-Inscase. Tenga en cuenta que el código es agnóstico y que los nuevos modelos podrían registrarse y agregar con pocas líneas de código, eche un vistazo a llm/best.py .
Utilizamos Milvus como nuestro software de administrador de base de datos principal. Utilizamos una base de datos de estilo vectorial debido a su capacidad hereditaria de buscar y ahorrar entradas basadas en representaciones vectoriales (incrustaciones).
Inicie su servidor Milvus independiente de la siguiente manera, sugiero usar un software multiplexor como tmux :
tmux new -s milvus
milvus-server Eche un vistazo bajo scripts/ para ver algunas de las solicitudes básicas a Milvus.
También puede usar la plantilla oficial docker compose :
docker compose --file milvus-docker-compose.yml up -d Usamos Ray, es un excelente marco de Python para ejecutar procesamiento distribuido y paralelo. Ray sigue el paradigma del trabajador maestro, donde un nodo head solicitará que las tareas se ejecuten a los trabajadores conectados.
ray start --head import ray
# Connect to the head
ray . init ( "auto" )En caso de que desee detener el nodo Ray:
ray stopO verificar el estado:
ray statusray startEl nodo del trabajador no necesita tener la implementación del código, ya que el nodo principal se serializará y enviará los argumentos e implementación a los trabajadores.
La implementación actual es un POC. Se pueden hacer muchas mejoras:
¿Todos los problemas y PR son bienvenidos?