Unstructured and Zilliz Cloud Integration
Unstructured and Zilliz Cloud integrate to streamline unstructured data processing for AI applications, combining Unstructured's platform for ingesting and transforming diverse document formats into AI-ready embeddings with Zilliz Cloud's high-performance vector database for scalable storage, indexing, and retrieval.
Utilisez cette intégration gratuitementQu’est-ce qu’Unstructured
Unstructured fournit une plateforme et des outils pour ingérer et traiter des documents non structurés destinés à la génération augmentée par récupération (RAG) et au fine-tuning de modèles. Il prend en charge divers formats de fichiers, notamment les documents texte, les images, les PDF et les présentations, et propose à la fois une plateforme d’interface utilisateur no-code et des services d’API serverless, permettant aux utilisateurs de préparer rapidement les données pour le stockage, l’analyse et les workflows de machine learning en aval avec des bases de données vectorielles et des frameworks LLM.
En s’intégrant à Zilliz Cloud (Milvus entièrement géré), Unstructured crée une solution puissante et évolutive pour gérer et exploiter les données non structurées dans les applications d’IA — transformant divers types de fichiers en embeddings vectoriels prêts pour l’IA qui sont stockés, indexés et récupérés à grande échelle pour la RAG, les chatbots et les systèmes de recommandation.
Avantages de l’intégration Unstructured + Zilliz Cloud
- Prise en charge de formats variés : Unstructured traite les PDF, HTML, images, présentations et bien plus encore, les transformant en données segmentées et intégrées, prêtes à être stockées dans la base de données vectorielle de Zilliz Cloud.
- Partitionnement et segmentation intelligents : Le moteur de partitionnement d'Unstructured utilise des stratégies comme "hi_res" pour une extraction de haute qualité et "by_title" pour une segmentation sémantique, produisant des segments bien structurés optimisés pour la recherche vectorielle dans Zilliz Cloud.
- Options sans code et API : Unstructured propose à la fois une plateforme d’interface utilisateur sans code et une API sans serveur, offrant aux équipes la flexibilité de traiter les données sans écrire de code ou de manière programmatique en Python, avec des résultats transmis à Zilliz Cloud.
- Pipeline évolutif prêt pour l'IA : Cette combinaison gère le stockage vectoriel à l’échelle du milliard et la recherche rapide de similarité, prenant en charge des applications RAG de niveau production qui exploitent des données non structurées traitées.
Comment fonctionne l’intégration
Unstructured sert de couche de traitement des données, gérant l’ingestion initiale des documents, le partitionnement et le découpage en segments. Il lit divers formats de fichiers, extrait le contenu et les métadonnées à l’aide de stratégies configurables, et produit des segments de texte structurés prêts pour l’intégration vectorielle et l’utilisation en aval.
Zilliz Cloud sert de couche de base de données vectorielle, stockant et indexant les segments de documents intégrés provenant d’Unstructured. Il fournit une recherche de similarité haute performance à faible latence, permettant aux applications de récupérer le contenu le plus pertinent à partir de grandes collections de documents traités.
Ensemble, Unstructured et Zilliz Cloud créent un pipeline complet du document à la recherche : Unstructured ingère et partitionne les documents en segments sémantiquement significatifs, ces segments sont intégrés à l’aide de modèles comme text-embedding-3-small d’OpenAI et stockés dans Zilliz Cloud avec des métadonnées. Lorsqu’un utilisateur soumet une requête, Zilliz Cloud récupère les segments les plus pertinents grâce à la recherche de similarité, et le contexte est transmis à un LLM pour générer des réponses éclairées.
Guide étape par étape
1. Installer les dépendances
$ pip install -qU "unstructured[pdf]" pymilvus openaiPour traiter tous les formats de documents :
pip install "unstructured[all-docs]". Pour des formats spécifiques (par exemple, PDF) :pip install "unstructured[pdf]". Pour plus d’options d’installation, consultez la documentation Unstructured.2. Configurer l’environnement et les clients
Préparez la clé API OpenAI et initialisez les clients Milvus et OpenAI :
import os from pymilvus import MilvusClient, DataType from openai import OpenAI os.environ["OPENAI_API_KEY"] = "sk-***********" milvus_client = MilvusClient(uri="./milvus_demo.db") openai_client = OpenAI() def emb_text(text): return ( openai_client.embeddings.create(input=text, model="text-embedding-3-small") .data[0] .embedding )Concernant l’argument de
MilvusClient: définir leuricomme un fichier local, par exemple./milvus.db, est la méthode la plus pratique, car cela utilise automatiquement Milvus Lite pour stocker toutes les données dans ce fichier. Si vous avez des données à grande échelle, vous pouvez configurer un serveur Milvus plus performant sur Docker ou Kubernetes. Si vous souhaitez utiliser Zilliz Cloud, le service cloud entièrement géré pour Milvus, ajustez leuriet letoken, qui correspondent au Public Endpoint et à l’API Key dans Zilliz Cloud.3. Créer une collection Milvus
Créez une collection avec un schéma et un index :
collection_name = "my_rag_collection" if milvus_client.has_collection(collection_name): milvus_client.drop_collection(collection_name) test_embedding = emb_text("This is a test") embedding_dim = len(test_embedding) schema = milvus_client.create_schema(auto_id=False, enable_dynamic_field=False) schema.add_field(field_name="id", datatype=DataType.INT64, is_primary=True) schema.add_field(field_name="vector", datatype=DataType.FLOAT_VECTOR, dim=embedding_dim) schema.add_field(field_name="text", datatype=DataType.VARCHAR, max_length=65535) schema.add_field(field_name="metadata", datatype=DataType.JSON) index_params = MilvusClient.prepare_index_params() index_params.add_index( field_name="vector", metric_type="COSINE", index_type="AUTOINDEX", ) milvus_client.create_collection( collection_name=collection_name, schema=schema, index_params=index_params, consistency_level="Strong", ) milvus_client.load_collection(collection_name=collection_name)4. Charger les données depuis Unstructured
Utilisez Unstructured pour partitionner et segmenter un fichier PDF local :
import warnings from unstructured.partition.auto import partition warnings.filterwarnings("ignore") elements = partition( filename="./pdf_files/WhatisMilvus.pdf", strategy="hi_res", chunking_strategy="by_title", )5. Insérer les données dans Milvus
Intégrez les éléments partitionnés et insérez-les dans la collection Milvus :
data = [] for i, element in enumerate(elements): data.append( { "id": i, "vector": emb_text(element.text), "text": element.text, "metadata": element.metadata.to_dict(), } ) milvus_client.insert(collection_name=collection_name, data=data)6. Récupérer et générer une réponse RAG
Définissez les fonctions de récupération et de génération, puis testez le pipeline :
def retrieve_documents(question, top_k=3): search_res = milvus_client.search( collection_name=collection_name, data=[emb_text(question)], limit=top_k, output_fields=["text"], ) return [(res["entity"]["text"], res["distance"]) for res in search_res[0]] def generate_rag_response(question): retrieved_docs = retrieve_documents(question) context = "\n".join([f"Text: {doc[0]}\n" for doc in retrieved_docs]) system_prompt = ( "You are an AI assistant. Provide answers based on the given context." ) user_prompt = f""" Use the following pieces of information to answer the question. If the information is not in the context, say you don't know. Context: {context} Question: {question} """ response = openai_client.chat.completions.create( model="gpt-4o-mini", messages=[ {"role": "system", "content": system_prompt}, {"role": "user", "content": user_prompt}, ], ) return response.choices[0].message.content question = "What is the Advanced Search Algorithms in Milvus?" answer = generate_rag_response(question) print(f"Question: {question}") print(f"Answer: {answer}")En savoir plus
- Construire un RAG avec Milvus et Unstructured — Tutoriel officiel de Milvus pour construire un RAG avec Unstructured
- Choisir des outils ETL pour les données non structurées afin de les préparer à l’IA — Blog Zilliz sur les outils ETL pour les données non structurées
- Créer des pipelines d’IA multimodale : guide des données non structurées — Blog Zilliz sur les pipelines de données multimodales
- Documentation Unstructured — Documentation officielle d’Unstructured
- Dépôt GitHub Unstructured — Code source d’Unstructured et ressources communautaires


