Apify and Zilliz Cloud Integration
Apify and Zilliz Cloud integrate to build web data pipelines for AI applications, combining Apify's web scraping and data extraction platform with over 2,000 ready-made Actors alongside Zilliz Cloud's high-performance vector database for storing, indexing, and searching crawled web content as vector embeddings.
Utilisez cette intégration gratuitementQu’est-ce qu’Apify
Apify est une plateforme de web scraping et d’extraction de données qui propose une place de marché d’applications avec plus de deux mille outils cloud prêts à l’emploi, appelés Actors. Ces outils sont idéaux pour des cas d’utilisation tels que l’extraction de données structurées à partir de sites web d’e-commerce, de réseaux sociaux, de moteurs de recherche, de cartes en ligne, et plus encore. Par exemple, l’Actor Website Content Crawler peut explorer en profondeur des sites web, nettoyer leur HTML en supprimant les fenêtres modales de cookies, les pieds de page ou la navigation, puis transformer le HTML en Markdown.
En s’intégrant à Zilliz Cloud (Milvus entièrement géré), les capacités de web scraping d’Apify sont connectées directement à une base de données vectorielle évolutive via l’intégration Apify Milvus, ce qui permet aux données web explorées d’être automatiquement converties en embeddings vectoriels et stockées pour la recherche sémantique, les questions-réponses basées sur RAG, les systèmes de recommandation et l’analytique optimisée par l’IA.
Avantages de l’intégration Apify + Zilliz Cloud
- Pipeline web-vers-vecteur automatisé : Apify explore et extrait le contenu web, et l’intégration Milvus segmente, vectorise et stocke automatiquement les données dans Zilliz Cloud — créant un pipeline fluide des données web aux vecteurs consultables.
- Plus de 2 000 Actors prêts à l’emploi : La marketplace d’Apify fournit des outils préconçus pour explorer les sites e-commerce, les réseaux sociaux, les moteurs de recherche et plus encore, qui peuvent tous alimenter Zilliz Cloud en données pour la recherche vectorielle.
- Mises à jour incrémentales : L’intégration Apify Milvus prend en charge les mises à jour incrémentales, en traitant uniquement les données nouvelles ou modifiées sur la base de sommes de contrôle, afin de maintenir votre base de données vectorielle à jour avec un traitement minimal.
- Suppression automatique des données obsolètes : L’intégration peut supprimer automatiquement les données qui n’ont pas été explorées dans un délai spécifié, afin de garder votre collection Zilliz Cloud optimisée et à jour.
Fonctionnement de l’intégration
Apify sert de couche de web scraping et d’extraction de données, en explorant des sites web à l’aide d’Actors comme le Website Content Crawler. Il extrait, nettoie et structure le contenu web en texte et métadonnées, en stockant les résultats dans Apify Datasets, prêts pour un traitement en aval.
Zilliz Cloud sert de couche de base de données vectorielle, en stockant et en indexant le contenu web vectorisé provenant d’Apify. Grâce à l’Actor
apify/milvus-integration, les données explorées sont automatiquement découpées, vectorisées à l’aide d’OpenAI ou d’autres fournisseurs, puis téléversées vers Zilliz Cloud pour une recherche de similarité rapide.Ensemble, Apify et Zilliz Cloud créent un pipeline RAG complet de données web : le Website Content Crawler d’Apify extrait et nettoie le contenu web, l’Actor d’intégration Milvus découpe et vectorise le texte, puis le stocke dans Zilliz Cloud. Les applications peuvent ensuite utiliser LangChain pour récupérer les documents pertinents depuis Zilliz Cloud et générer des réponses éclairées à l’aide d’un LLM — avec des mises à jour incrémentielles qui maintiennent le pipeline à jour.
Guide étape par étape
1. Installer les dépendances
$ pip install --upgrade --quiet apify==1.7.2 langchain-core==0.3.5 langchain-milvus==0.1.5 langchain-openai==0.2.02. Configurer les clés API
import os from getpass import getpass os.environ["APIFY_API_TOKEN"] = getpass("Enter YOUR APIFY_API_TOKEN") os.environ["OPENAI_API_KEY"] = getpass("Enter YOUR OPENAI_API_KEY")3. Configurer la connexion Milvus/Zilliz Cloud
os.environ["MILVUS_URI"] = getpass("Enter YOUR MILVUS_URI") os.environ["MILVUS_TOKEN"] = getpass("Enter YOUR MILVUS_TOKEN") MILVUS_COLLECTION_NAME = "apify"4. Explorer des sites Web avec Website Content Crawler d’Apify
Utilisez le SDK Python d’Apify pour explorer la documentation Milvus :
from apify_client import ApifyClient client = ApifyClient(os.getenv("APIFY_API_TOKEN")) actor_id = "apify/website-content-crawler" run_input = { "crawlerType": "cheerio", "maxCrawlPages": 10, "startUrls": [{"url": "https://milvus.io/"}, {"url": "https://zilliz.com/"}], } actor_call = client.actor(actor_id).call(run_input=run_input)5. Téléverser les données explorées vers Zilliz Cloud
Utilisez l’intégration Apify Milvus pour segmenter, intégrer et stocker les données :
milvus_integration_inputs = { "milvusUri": os.getenv("MILVUS_URI"), "milvusToken": os.getenv("MILVUS_TOKEN"), "milvusCollectionName": MILVUS_COLLECTION_NAME, "datasetFields": ["text", "metadata.title"], "datasetId": actor_call["defaultDatasetId"], "performChunking": True, "embeddingsApiKey": os.getenv("OPENAI_API_KEY"), "embeddingsProvider": "OpenAI", } actor_call = client.actor("apify/milvus-integration").call( run_input=milvus_integration_inputs )6. Construire le pipeline RAG et poser des questions
Définissez le pipeline enrichi par récupération à l’aide de LangChain :
from langchain_core.output_parsers import StrOutputParser from langchain_core.prompts import PromptTemplate from langchain_core.runnables import RunnablePassthrough from langchain_milvus.vectorstores import Milvus from langchain_openai import ChatOpenAI, OpenAIEmbeddings embeddings = OpenAIEmbeddings(model="text-embedding-3-small") vectorstore = Milvus( connection_args={ "uri": os.getenv("MILVUS_URI"), "token": os.getenv("MILVUS_TOKEN"), }, embedding_function=embeddings, collection_name=MILVUS_COLLECTION_NAME, ) prompt = PromptTemplate( input_variables=["context", "question"], template="Use the following pieces of retrieved context to answer the question. If you don't know the answer, " "just say that you don't know. \nQuestion: {question} \nContext: {context} \nAnswer:", ) def format_docs(docs): return "\n\n".join(doc.page_content for doc in docs) rag_chain = ( { "context": vectorstore.as_retriever() | format_docs, "question": RunnablePassthrough(), } | prompt | ChatOpenAI(model="gpt-4o-mini") | StrOutputParser() ) question = "What is Milvus database?" rag_chain.invoke(question)En savoir plus
- Crawler des sites web avec Apify et enregistrer les données dans Milvus — Tutoriel officiel de Milvus pour le RAG avec Apify
- Guide du débutant sur le découpage et l’embedding de sites web pour les applications RAG — Tutoriel de Zilliz sur le découpage de sites web pour le RAG
- Intégration Apify Milvus — Actor Apify pour l’intégration Milvus/Zilliz Cloud
- Documentation Apify — Documentation officielle de la plateforme Apify
- Website Content Crawler — Actor Website Content Crawler d’Apify


