AI Search Open Platform propose un pipeline de développement RAG complet, couvrant le prétraitement des données, la récupération et la génération de réponses. Les services algorithmiques sont composables et exposés via des API. Téléchargez le code fourni, remplacez la clé API, l'endpoint ainsi que les informations relatives à la base de connaissances comme décrit dans cette rubrique pour créer rapidement une application de recherche conversationnelle sur votre propre base de connaissances.
Fonctionnement
La génération augmentée par récupération (RAG) associe la récupération d'informations aux grands modèles de langage (LLM) afin d'améliorer la précision et la pertinence du contenu généré. Un système RAG récupère les informations les plus pertinentes depuis une base de connaissances externe et les fournit comme contexte au LLM. Cette approche permet au modèle de générer des réponses précises fondées sur des données actualisées ou spécifiques à un domaine, plutôt que de s'appuyer uniquement sur ses données d'entraînement.

Cas d'utilisation
La recherche conversationnelle sur une base de connaissances répond à des besoins tels que la récupération de connaissances en entreprise et les questions-réponses spécifiques à un domaine. En appliquant le RAG et les LLM à vos documents, le système comprend des requêtes complexes en langage naturel et aide les utilisateurs à trouver rapidement des informations dans divers formats (PDF, Word, tableaux et images).
Dans l'interface de recherche conversationnelle, un utilisateur soumet une question en langage naturel. Le système renvoie une réponse structurée et suggère des questions de suivi pour approfondir l'exploration.
Prérequis
Le service AI Search Open Platform est activé. Pour plus d'informations, consultez la rubrique Activation du service.
-
Obtenez un endpoint de service et des identifiants d'authentification. Pour plus d'informations, consultez les rubriques Obtenir un endpoint de service et Gérer les clés API.
AI Search Open Platform prend en charge les endpoints publics et VPC. Les appels interrégions sont possibles via les endpoints VPC. Actuellement, l'accès VPC est disponible dans les régions Chine (Shanghai), Chine (Hangzhou), Chine (Shenzhen), Chine (Pékin), Chine (Zhangjiakou) et Chine (Qingdao).
Sur la page API Keys, un message en haut indique : « Les clés API sont utilisées pour les autorisations d'appel de service. Veuillez les conserver en toute sécurité. Si une clé API est compromise, désactivez-la immédiatement. Vous pouvez avoir jusqu'à 10 clés API activées simultanément. » La section Access Domain affiche le Public API Domain et le Private API Domain, qui prennent tous deux en charge l'accès HTTPS.
Créez un cluster Alibaba Cloud Elasticsearch version 8.5 ou ultérieure. Pour plus d'informations, consultez la rubrique Créer un cluster Alibaba Cloud Elasticsearch. Lors de l'accès au cluster via le réseau public ou un VPC, vous devez ajouter l'adresse IP de votre appareil à la liste d'autorisation d'adresses IP du cluster. Pour plus d'informations, consultez la rubrique Configurer une liste d'autorisation d'adresses IP publique ou privée pour un cluster Elasticsearch.
Vous disposez d'un environnement Python 3.7 ou ultérieur avec les packages
aiohttp 3.8.6etelasticsearch 8.14installés.
Créer le pipeline de développement RAG
AI Search Open Platform propose quatre frameworks de développement :
SDK Java
SDK Python
LangChain : sélectionnez cette option si votre activité utilise déjà le framework LangChain.
LlamaIndex : sélectionnez cette option si votre activité utilise déjà le framework LlamaIndex.
Étape 1 : Sélectionner les services et télécharger le code
Sélectionnez les services algorithmiques et le framework de développement pour votre pipeline RAG en fonction de votre base de connaissances et de vos besoins métier. Cette rubrique utilise le SDK Python à titre d'exemple.
Connectez-vous à la console AI Search Open Platform.
-
Sélectionnez la région Chine (Shanghai), basculez vers AI Search Open Platform, puis sélectionnez votre espace de travail cible.
RemarqueAI Search Open Platform est disponible uniquement dans les régions Chine (Shanghai) et Allemagne (Francfort).
Les utilisateurs des régions Chine (Hangzhou), Chine (Shenzhen), Chine (Pékin), Chine (Zhangjiakou) et Chine (Qingdao) peuvent utiliser un endpoint VPC pour appeler les services AI Search Open Platform entre régions.
Dans le volet de navigation de gauche, cliquez sur Scene Center. Sur la carte RAG Scene-Knowledge Base Online Q & A., cliquez sur Enter.
-
Dans les listes déroulantes, sélectionnez les services nécessaires selon vos besoins métier. Vous pouvez consulter les détails de chaque service sous l'onglet Service Details.
RemarqueLorsque vous appelez un service algorithmique dans le pipeline RAG via une API, vous devez fournir l'ID du service (
service_id). Par exemple, l'ID du service d'analyse de contenu de document estops-document-analyze-001.Lorsque vous changez de service dans la liste, le
service_iddans le code généré se met à jour automatiquement. Après le téléchargement du code, vous pouvez toujours modifier leservice_idpour appeler un autre service.
Étape
Description du service
Analyse de contenu de document
Service d'analyse de contenu de document (ops-document-analyze-001) : service polyvalent qui extrait les structures logiques telles que les titres et les paragraphes à partir de documents non structurés (texte, tableaux et images) et les produit dans un format structuré.
Analyse de contenu d'image
-
Service de compréhension de contenu d'image (ops-image-analyze-vlm-001) : utilise un grand modèle multimodal pour analyser, comprendre et reconnaître le texte des images. Le texte extrait peut servir à la recherche d'images et aux scénarios de questions-réponses.
-
Service de reconnaissance optique de caractères (OCR) d'images (ops-image-analyze-ocr-001) : utilise l'OCR pour reconnaître le texte dans les images. Le texte analysé peut servir à la recherche d'images et aux scénarios de questions-réponses.
Découpage de document
Service de découpage de document (ops-document-split-001) : service de découpage de texte polyvalent qui divise les données structurées aux formats HTML, Markdown et TXT selon les paragraphes du document, la sémantique du texte ou des règles spécifiées. Il prend également en charge l'extraction du code, des images et des tableaux sous forme de texte enrichi à partir des documents.
Intégration de texte
-
Service d'intégration de texte OpenSearch-001 (ops-text-embedding-001) : propose une intégration de texte multilingue (plus de 40 langues). La longueur d'entrée maximale est de 300 tokens et la dimension du vecteur de sortie est de 1536.
-
Service d'intégration de texte général OpenSearch-002 (ops-text-embedding-002) : propose une intégration de texte multilingue (plus de 100 langues). La longueur d'entrée maximale est de 8 192 tokens et la dimension du vecteur de sortie est de 1024.
-
Service d'intégration de texte chinois OpenSearch-001 (ops-text-embedding-zh-001) : propose une intégration de texte chinois. La longueur d'entrée maximale est de 1 024 tokens et la dimension du vecteur de sortie est de 768.
-
Service d'intégration de texte anglais OpenSearch-001 (ops-text-embedding-en-001) : propose une intégration de texte anglais. La longueur d'entrée maximale est de 512 tokens et la dimension du vecteur de sortie est de 768.
Intégration de texte clairsemée
Convertit le texte en une représentation vectorielle clairsemée. Les vecteurs clairsemés utilisent moins d'espace de stockage et représentent généralement les mots-clés et les fréquences des termes. Combinez-les avec des vecteurs denses pour une recherche hybride afin d'améliorer les performances de récupération.
Service d'intégration de texte clairsemée OpenSearch (ops-text-sparse-embedding-001) : propose une intégration de texte clairsemée multilingue (plus de 100 langues). La longueur d'entrée maximale est de 8 192 tokens.
Analyse de requête
Service d'analyse de requête 001 (ops-query-analyze-001) : utilise un grand modèle de langage pour comprendre l'intention de la requête utilisateur et l'étendre avec des questions similaires.
Moteur de recherche
-
Alibaba Cloud Elasticsearch : service cloud entièrement géré basé sur Elasticsearch open source, 100 % compatible avec les fonctionnalités open source, offrant une expérience prête à l'emploi et facturée à l'utilisation.
RemarqueSi vous choisissez Alibaba Cloud Elasticsearch comme moteur de recherche, le service d'intégration de texte clairsemée n'est pas disponible en raison de problèmes de compatibilité. Nous vous recommandons d'utiliser les services d'intégration de texte à la place.
-
OpenSearch Vector Search Edition : moteur de recherche vectoriel distribué à grande échelle développé par Alibaba, qui prend en charge divers algorithmes de recherche vectorielle avec une haute précision et une indexation rentable à grande échelle. Les index prennent en charge la mise à l'échelle horizontale, les builds en flux continu, les requêtes en temps réel et les mises à jour dynamiques des données.
RemarqueSi vous devez utiliser OpenSearch Vector Search Edition, vous pouvez remplacer la configuration du moteur et le code dans le pipeline RAG.
Service de reclassement
Modèle de reclassement BGE (ops-bge-reranker-larger) : évalue et trie les documents par pertinence par rapport à la requête, du plus pertinent au moins pertinent, et produit les résultats de notation.
Grand modèle de langage
-
OpenSearch-Qwen-Turbo (ops-qwen-turbo) : basé sur le grand modèle de langage Qwen-Turbo, ce service est affiné par apprentissage supervisé pour améliorer l'augmentation de la récupération et réduire les réponses nuisibles.
-
Qwen-Turbo (qwen-turbo) : grand modèle de langage de la série Qwen qui prend en charge diverses langues, dont le chinois et l'anglais. Pour plus d'informations, consultez la rubrique Présentation des LLM de la série Qwen.
-
Qwen-Plus (qwen-plus) : version améliorée du grand modèle de langage Qwen-Turbo qui prend en charge diverses langues, dont le chinois et l'anglais. Pour plus d'informations, consultez la rubrique Présentation des LLM de la série Qwen.
-
Qwen-Max (qwen-max) : modèle de langage ultra-grand à mille milliards de paramètres de la série Qwen qui prend en charge diverses langues, dont le chinois et l'anglais. Pour plus d'informations, consultez la rubrique Présentation des LLM de la série Qwen.
-
Après avoir sélectionné vos services, cliquez sur After the configuration is completed, enter the code query pour afficher et télécharger le code.
Le code est structuré en deux parties qui reflètent le flux d'exécution du pipeline RAG : le traitement hors ligne des documents et la recherche conversationnelle en ligne.
Processus
Fonction
Description
Traitement hors ligne des documents
Traite les documents, ce qui inclut l'analyse, l'extraction d'images, le découpage, l'intégration et l'écriture des résultats dans un index Elasticsearch.
La fonction principale
document_pipeline_executeexécute le workflow suivant. Vous pouvez fournir des documents via une URL ou un encodage Base64.-
Analyse de document. Pour plus de détails sur l'API, consultez la rubrique API d'analyse de document.
-
Appelez l'API d'analyse asynchrone de document pour extraire le contenu à partir d'une URL de document ou décoder le contenu à partir d'un fichier encodé en Base64.
-
Utilisez la fonction
create_async_extraction_taskpour créer une tâche d'analyse et la fonctionpoll_task_resultpour interroger l'état d'achèvement de la tâche.
-
-
Extraction d'images. Pour plus de détails sur l'API, consultez la rubrique API d'extraction de contenu d'image.
-
Appelez l'API d'analyse asynchrone d'images pour extraire le contenu à partir d'une URL d'image ou le décoder à partir d'un fichier encodé en Base64.
-
Utilisez la fonction
create_image_analyze_taskpour créer une tâche d'analyse d'image et la fonctionget_image_analyze_task_statuspour obtenir son état.
-
-
Découpage de document. Pour plus de détails sur l'API, consultez la rubrique API de découpage de document.
-
Appelez l'API de découpage de document pour diviser le document analysé selon une stratégie spécifiée.
-
Utilisez la fonction
document_splitpour le découpage de document et l'analyse de contenu de texte enrichi.
-
-
Intégration de texte. Pour plus de détails sur l'API, consultez la rubrique API d'intégration de texte.
-
Appelez l'API d'intégration de texte pour créer des représentations vectorielles du texte découpé.
-
Utilisez la fonction
text_embeddingpour calculer le vecteur d'intégration pour chaque fragment.
-
-
Écriture dans Elasticsearch. Pour plus de détails sur le service, consultez la rubrique Utiliser la fonctionnalité de recherche k-nearest neighbor (kNN) d'Elasticsearch.
-
Créez une configuration d'index Elasticsearch qui spécifie le champ vectoriel
embeddinget le champ de contenu de documentcontent.ImportantLorsque vous créez un index Elasticsearch, tout index existant portant le même nom est supprimé. Pour éviter une perte accidentelle de données, modifiez le nom de l'index dans le code.
-
Utilisez la fonction
helpers.async_bulkpour écrire en masse les résultats vectorisés dans l'index Elasticsearch.
-
Recherche conversationnelle en ligne
Traite les requêtes utilisateur en ligne, ce qui inclut la génération de vecteurs de requête, l'analyse de requête, la récupération de fragments de document pertinents, le reclassement des résultats de recherche et la génération d'une réponse finale.
La fonction principale
query_pipeline_executeexécute le workflow suivant pour traiter une requête utilisateur et renvoyer une réponse.-
Vectorisation de la requête. Pour plus de détails sur l'API, consultez la rubrique API d'intégration de texte.
-
Appelez l'API d'intégration de texte pour convertir la requête utilisateur en vecteur.
-
Utilisez la fonction
text_embeddingpour générer le vecteur de requête.
-
-
Appelez le service d'analyse de requête. Pour plus de détails, consultez la rubrique API d'analyse de requête.
Ce service identifie l'intention de l'utilisateur et génère des questions similaires en analysant l'historique des conversations.
-
Recherche de fragments intégrés. Pour plus de détails sur le service, consultez la rubrique Utiliser la fonctionnalité de recherche k-nearest neighbor (kNN) d'Elasticsearch.
-
Utilisez Elasticsearch pour récupérer les fragments de document de l'index qui sont similaires au vecteur de requête.
-
Utilisez l'API
searchd'AsyncElasticsearchcombinée à une requête kNN pour effectuer une recherche de similarité.
-
-
Appelez le service de reclassement. Pour plus de détails, consultez la rubrique API de reclassement.
-
Appelez l'API du service de reclassement pour noter et trier les fragments récupérés.
-
Utilisez la fonction
documents_rankingpour noter et trier les documents en fonction de la requête utilisateur.
-
-
Générez une réponse avec le grand modèle de langage. Pour plus de détails sur l'API, consultez la rubrique API de génération de réponse.
Appelez le service LLM en utilisant la fonction
llm_callavec les résultats de récupération et la requête utilisateur pour générer la réponse finale.
Sous Code Query, sélectionnez Document processing flow et Online Q & A Process, puis cliquez sur Copy Code ou Download File pour enregistrer le code localement.
-
Étape 2 : Configurer et tester le pipeline
Après avoir téléchargé le code dans deux fichiers locaux, par exemple offline.py et online.py, configurez les paramètres clés suivants.
|
Catégorie |
Paramètre |
Description |
|
AI Search Open Platform |
|
La clé API pour l'authentification. Pour plus d'informations, consultez la rubrique Gérer les clés API. |
|
|
L'endpoint de service pour les appels API. Pour plus d'informations, consultez la rubrique Obtenir un endpoint de service. Remarque
Supprimez le préfixe « http:// » de l'URL de l'endpoint. Les appels API sont pris en charge via les endpoints publics et VPC. |
|
|
|
Le nom de votre espace de travail sur AI Search Open Platform. |
|
|
|
L'ID du service. Par commodité, vous pouvez configurer les ID de service pour différents services dans les fichiers
|
|
|
Moteur de recherche Elasticsearch |
|
L'endpoint du cluster Elasticsearch. Lors de l'accès au cluster via le réseau public ou un VPC, vous devez ajouter l'adresse IP de votre appareil à la liste d'autorisation d'adresses IP du cluster. Pour plus d'informations, consultez la rubrique Configurer une liste d'autorisation d'adresses IP publique ou privée pour un cluster Elasticsearch. |
|
|
Le nom d'utilisateur et le mot de passe pour accéder au cluster Elasticsearch. Le nom d'utilisateur est |
|
|
Autres paramètres |
Aucune modification n'est nécessaire si vous utilisez les exemples de données. |
|
Après avoir configuré les paramètres, exécutez d'abord le script offline.py, puis le script online.py dans un environnement Python 3.7 ou ultérieur pour tester les résultats.
Si le document de la base de connaissances est Présentation d'AI Search Open Platform, posez la question suivante : Que peut faire AI Search Open Platform ?
Vous devriez voir la sortie suivante :
-
Résultat du traitement hors ligne des documents
image analyze :https://img.alicdn.com/imgextra/i2/O1CN01bYc1m81RrcSAyOjMu_!!6000000002165-54-tps-60-60.apng https://img.alicdn.com/imgextra/i2/O1CN01bYc1m81RrcSAyOjMu_!!6000000002165-54-tps-60-60.apng is not analyzable. image analyze :https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/3873436171/p802381.png image analyze :https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/0650850271/p819277.png image analyze :https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/0650850271/p819277.png image analyze ://gw.alicdn.com/tfs/TB1GxwdSXXXXXa.aXXXXXXXXXXX-65-70.gif https://gw.alicdn.com/tfs/TB1GxwdSXXXXXa.aXXXXXXXXXXX-65-70.gif is not analyzable. image analyze ://img.alicdn.com/tfs/TB1..50QpXXXX7XpXXXXXXXXXX-40-40.png image analyze :https://img.alicdn.com/tfs/TB1A0dINW6qK1RjSZFmXXX0PFXa-258-258.jpg image analyze ://gw.alicdn.com/tfs/TB1GxwdSXXXXXa.aXXXXXXXXXXX-65-70.gif https://gw.alicdn.com/tfs/TB1GxwdSXXXXXa.aXXXXXXXXXXX-65-70.gif is not analyzable. image analyze ://img.alicdn.com/tfs/TB1..50QpXXXX7XpXXXXXXXXXX-40-40.png image analyze ://gw.alicdn.com/tfs/TB1GxwdSXXXXXa.aXXXXXXXXXXX-65-70.gif https://gw.alicdn.com/tfs/TB1GxwdSXXXXXa.aXXXXXXXXXXX-65-70.gif is not analyzable. image analyze ://img.alicdn.com/tfs/TB1..50QpXXXX7XpXXXXXXXXXX-40-40.png text-embedding done OS write response: {"status":"OK","code":200} -
Résultat de la recherche conversationnelle en ligne
/opt/miniconda3/envs/QA-pytest-base-lib1/bin/python /Users/liu/codeRepos/QA-pytest-base-lib/rag/case/SDK/python_sdk_es_zx.py query analysis rewrite result:What can the OpenSearch AI Search Open Platform do? Final answer from the large model: AI Search Open Platform provides intelligent search services that power the core search functions for Alibaba's businesses, including Taobao and Tmall, and offers intelligent search solutions to external clients across various industries. It features industry-specific query semantic understanding and machine learning ranking algorithms to help developers build high-quality intelligent search services. The platform is suitable for a wide range of scenarios, including but not limited to: - E-commerce and retail intelligent search - Content and news search - Gaming industry search - Healthcare industry search - Financial industry search AI Search Open Platform focuses on intelligent search and Retrieval-Augmented Generation (RAG) scenarios, providing component-based services and flexible calling mechanisms. It has built-in services for document parsing, document chunking, text embedding, retrieval, reranking, and large language models, enabling a one-stop, flexible development experience for AI search applications. Process finished with exit code 0 -
Fichiers source
FAQ
Lors de l'exécution du code, vous pouvez voir un message « Unclosed connector » dû à des ressources non libérées à temps. Vous pouvez ignorer ce message en toute sécurité.