Table des matières
Configurer Azure Search" >Configurer Azure Search
pour la recherche sémantique Azure Préparation l'index " > pour la recherche sémantique Azure Préparation l'index
Intégration avec OpenAI" >Intégration avec OpenAI
Conclusion" >Conclusion
Maison Périphériques technologiques IA Utiliser Azure Semantic Search et OpenAI pour créer un système de recherche cognitive

Utiliser Azure Semantic Search et OpenAI pour créer un système de recherche cognitive

Oct 12, 2023 am 10:18 AM
azure openal

À l’ère numérique d’aujourd’hui, disposer de systèmes robustes, évolutifs et efficaces est plus qu’un simple avantage concurrentiel ; C'est nécessaire. Que vous cherchiez à optimiser le traitement des entrées utilisateur pour simplifier les recherches de documents, une combinaison de services et de plates-formes est la clé d'une performance inégalée. Dans cet article, nous explorerons une approche holistique qui combine la puissance d’Azure Cognitive Services avec les capacités d’OpenAI. En vous plongeant dans la reconnaissance d'intention, le filtrage de documents, les algorithmes spécifiques à un domaine et la synthèse de texte, vous apprendrez à créer un système qui non seulement comprend l'intention de l'utilisateur, mais traite et présente également les informations de manière efficace.

Nous allons construire ceci :

Utiliser Azure Semantic Search et OpenAI pour créer un système de recherche cognitive

Configuration de l'environnement

Avant de plonger dans le vif du sujet, assurons-nous que les packages nécessaires sont installés et que les variables d'environnement sont définies :

!pip show azure-search-documents
%pip install azure-search-documents --pre
%pip show azure-search-documents
!pip install python-dotenv
!pip install openai
import os
import requests
import json
import openai
openai.api_key = os.getenv("AZURE_OPENAI_KEY")
openai.api_base = os.getenv("AZURE_OPENAI_ENDPOINT")
openai.api_type = 'azure'
openai.api_version = '2023-05-15'
# Look in Azure OpenAI Studio > Deployments
deployment_name = 'gpt-35-turbo'
Copier après la connexion

Ici, nous utilisons les clés API nécessaires, points de terminaison et types pour configurer l’environnement OpenAI.

Configurer Azure Search

Pour utiliser Azure Semantic Search, nous devons importer les modules nécessaires et configurer l'environnement.

import os
from azure.core.credentials import AzureKeyCredential
from azure.search.documents.indexes import SearchIndexClient
from azure.search.documents import SearchClient
from azure.search.documents.indexes.models import (
    ComplexField,
    CorsOptions,
    SearchIndex,
    ScoringProfile,
    SearchFieldDataType,
    SimpleField,
    SearchableField
)
Copier après la connexion

Après avoir importé le module, nous pouvons maintenant configurer le point de terminaison du service Azure Search et la clé API :

# 从环境中设置服务端点和 API 密钥
service_name = "xxxxx"
admin_key ="xxxxx"
# 如果您共享密钥 - 请确保您的 index_name 是唯一的!
index_name = "hotels-quickstart"
# 创建 SDK 客户
endpoint = "https://{}.search.windows.net/".format(service_name)
admin_client = SearchIndexClient(endpoint=endpoint,
                      index_name=index_name,
                      credential=AzureKeyCredential(admin_key))

search_client = SearchClient(endpoint=endpoint,
                      index_name=index_name,
                      credential=AzureKeyCredential(admin_key))
Copier après la connexion

(Remarque : assurez-vous de masquer ou de masquer votre clé avant de partager un code.)

pour la recherche sémantique Azure Préparation l'index

Avant d'ajouter des données à Azure Search, nous devons définir un index qui décrit la structure des données :

# 删除索引(如果存在)
try:
    result = admin_client.delete_index(index_name)
    print ('Index', index_name, 'Deleted')
except Exception as ex:
    print (ex)
Copier après la connexion

Cet extrait de code garantit que si l'index existe déjà, il est supprimé. Ceci est utile lors de la réexécution du code ou de la modification des index.

Maintenant, précisons le schéma de l'index :

# 指定索引模式
name = index_name 
fields = [ 
        SimpleField(name= "HotelId" , type=SearchFieldDataType.String, key= True ), 
        SearchableField(name= "HotelName" , type=SearchFieldDataType.String, sortable= True ), 
        SearchableField (名称= “描述”,类型=SearchFieldDataType.String,analyzer_name= “en.lucene”),
        SearchableField(名称= “Description_fr”,类型=SearchFieldDataType.String,analyzer_name= “fr.lucene”),
        SearchableField(名称= “类别”、 type=SearchFieldDataType.String、facetable= True、filterable= True、sortable= True )、
        SearchableField(name= "Tags"、collection= True、type=SearchFieldDataType.String、facetable= True、filterable= True )、
        SimpleField(name = “ParkingInincluded”,类型=SearchFieldDataType.Boolean,facetable= True,filterable= True,sortable= True),
        SimpleField(name= “LastRenovationDate”,type=SearchFieldDataType.DateTime关闭设置,facetable= True,filterable=True、sortable= True )、
        SimpleField(name= "Rating"、 type=SearchFieldDataType.Double、facetable= True、filterable= True、sortable= True )、
        ComplexField(name= "地址"、 fields=[ 
            SearchableField(name= " StreetAddress"、 type=SearchFieldDataType.String)、
            SearchableField(name= "City"、 type=SearchFieldDataType.String、facetable= True、 filterable= True、 sortable= True )、
            SearchableField(name= "StateProvince"、 type=SearchFieldDataType.String、facetable= True、filterable= True、sortable= True )、
            SearchableField(name= "邮政编码"、 type=SearchFieldDataType.String、facetable= True、filterable= True、sortable= True )、
            SearchableField(name = “国家”,类型= SearchFieldDataType.String,facetable = True,filterable = True,sortable = True),
        ])
    ] 
cors_options = CorsOptions(allowed_origins = [ “*” ],max_age_in_seconds = 60)
Scoring_profiles = [] 
suggester = [{ 'name' : 'sg' , 'source_fields' : [ '标签' , '地址/城市' , '地址/国家' ]}]
Copier après la connexion

Ensuite, vous devez créer cet index sur Azure :

index = SearchIndex(
    name=name,
    fields=fields,
    scoring_profiles=scoring_profiles,
    suggesters = suggester,
    cors_options=cors_options)
try:
    result = admin_client.create_index(index)
    print ('Index', result.name, 'created')
except Exception as ex:
    print (ex)
Copier après la connexion

Après avoir créé l'index, nous devons le remplir de documents. Il est important de préciser qu’il peut s’agir de n’importe quel type de document ! Je viens d'ajouter manuellement les documents qui resteront dans le stockage blob ici :

文档 = [ 
    { 
    "@search.action": "上传", "@search.action" : "上传" , 
    "HotelId" : "1" , 
    "HotelName" : "秘密点汽车旅馆" , 
    "Description" : "酒店地理位置优越,位于纽约市中心的城市主要商业干道上。几分钟即可到达时代广场和城市的历史中心,以及使纽约成为美国最具吸引力的城市之一的其他名胜古迹和国际大都市。” ,
    “Description_fr”:“L'hôtel est idéalement situé sur la prime artère Commerciale de la ville en plein cœur de New York.A insi que d'autres lieux d'intérêt qui font纽约的城市充满魅力和美国的国际化。” , 
    "Category" : "精品店" , 
    "Tags" : [ "游泳池" , "空调" , "礼宾服务" ], 
    "ParkingInincluded" : "false" , 
    "LastRenovationDate" : "1970-01-18T00:00:00Z ”,
    "Rating" : 3.60 , 
    "Address" : {    
        “StreetAddress”:“677 第五大道”,
        “City”:“纽约”,
        “StateProvince”:“纽约” ,
        “PostalCode”:“10022”,
        “Country”:“美国”
         } 
    },
    { 
    “@search. action" : "上传" , 
    "HotelId" : "2" , 
    "HotelName" : "双圆顶汽车旅馆" , 
    "Description" :“该酒店坐落在一座十九世纪的广场上,该广场已按照最高建筑标准进行扩建和翻新,打造出一座现代化、实用的一流酒店,艺术和独特的历史元素与最现代的舒适设施共存。” , 
    "Description_fr" : "L'hôtel 位于十九世纪的地方,是一座现代化酒店的高级规范建筑,在艺术和历史独特方面具有一流的功能和一流的设计舒适与现代共存。” , 
    "Category" : "精品店" , 
    "Tags" : [ "泳池" ,], 
    "ParkingInincluded" : "false" , 
    "LastRenovationDate" : "1979-02-18T00:00:00Z" , 
    "Rating" : 3.60 , 
    "Address" : { 
        "StreetAddress" : "140 大学城中心" , 
        "City”:“萨拉索塔”,
        “StateProvince”:“佛罗里达州”,
        “PostalCode”:“34243”,
        “Country”:“美国”
         } 
    },
    { 
    "@search.action" : "上传" , 
    "HotelId" :"3" , 
    "HotelName" : "三重景观酒店" , 
    "Description" : "该酒店在 William Dough 的管理下以其卓越的美食脱颖而出,他为酒店的所有餐厅服务提供建议并监督。" , 
    "Description_fr" : "L'hôtel 位于十九世纪的地方,是一座现代化酒店的高级规范建筑,在艺术和历史独特方面具有一流的功能和一流的设计舒适与现代共存。” , 
    "Category" : "度假村中心" ,
    "Tags" : [ "酒吧" , "欧陆式早餐" ], 
    "ParkingInincluded" : "true" , 
    "LastRenovationDate" : "2015-09-20T00:00:00Z" , 
    "Rating" : 4.80 , 
    "Address" : { 
        "StreetAddress" : “3393 Peachtree Rd”、
        “City”:“亚特兰大”、
        “StateProvince”:“GA”、
        “PostalCode”:“30326”、
        “Country”:“美国”
         } 
    }
]
Copier après la connexion

Poussez maintenant ces documents vers l'index de recherche sémantique.

try:
    result = search_client.upload_documents(documents=documents)
    print("Upload of new document succeeded: {}".format(result[0].succeeded))
except Exception as ex:
    print (ex.message)
Copier après la connexion

Intégration avec OpenAI

Établissons une connexion à OpenAI :

question="What is the address of ChatGpt Hotel?"
Copier après la connexion

Ensuite, ajoutez une connexion Azure OpenAI :

###
import os
import requests
import json
import openai
os.environ["AZURE_OPENAI_KEY"] = "xxxx"
os.environ["AZURE_OPENAI_ENDPOINT"] = "xxxx"
openai.api_key = os.getenv("AZURE_OPENAI_KEY")
openai.api_base = os.getenv("AZURE_OPENAI_ENDPOINT")
openai.api_type = 'azure'
openai.api_version = '2023-05-15'
# 在 Azure OpenAI Studio > 部署中查找
deployment_name = 'gpt-35-turbo'
###
# 定义一个函数,根据系统消息和消息创建提示
def create_prompt(system_message, messages):
    prompt = system_message
    message_template = "\n<|im_start|>{}\n{}\n<|im_end|>"
    for message in messages:
        prompt += message_template.format(message[&#39;sender&#39;], message[&#39;text&#39;])
    prompt += "\n<|im_start|>assistant\n"
    return prompt
# 定义系统消息
system_message_template = "<|im_start|>system\n{}\n<|im_end|>"
system_message = system_message_template.format("")
print(system_message)
Copier après la connexion

À ce stade, vous pouvez utiliser la recherche sémantique et Azure OpenAI. Interrogons la recherche sémantique :

import json
results =  search_client.search(search_text=question, include_total_count=True, select=&#39;HotelId,HotelName,Tags,Address&#39;)=  search_client.search(search_text=question, include_total_count=True, select=&#39;HotelId,HotelName,Tags,Address&#39;)
json_results=""
print (&#39;Total Documents Matching Query:&#39;, results.get_count())
for result in results:
    #print("{}: {}: {}".format(result["HotelId"], result["HotelName"], result["Tags"],results["Address"]))
    json_results+=str(result)
print(json_results)
Copier après la connexion

Avec les résultats de recherche en main, nous pouvons désormais exploiter Azure OpenAI pour interpréter ou traiter davantage les résultats.

# 创建消息列表来跟踪对话
messages = [{"sender": "user", "text": "Hello, take into account the following information "+json_results},
            {"sender": "user", "text": question},
            ]
response = openai.Completion.create(
  engine=deployment_name,
  prompt= create_prompt(system_message, messages),
  temperature=0.7,
  max_tokens=800,
  top_p=0.95,
  frequency_penalty=0,
  presence_penalty=0,
    stop=["<|im_end|>"])
print(response)
Copier après la connexion

Ce code invite le modèle OpenAI avec les résultats de recherche et notre question d'origine, lui permettant de traiter et de fournir des informations significatives basées sur les données.

Conclusion

Dans cet article, nous avons appris comment combiner la puissance de la recherche sémantique Azure avec les capacités d'OpenAI. En intégrant ces deux outils puissants, nous pouvons fournir aux utilisateurs des résultats de recherche riches et intelligents dans nos applications.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Code d'erreur 801c03ed : Comment le réparer sous Windows 11 Code d'erreur 801c03ed : Comment le réparer sous Windows 11 Oct 04, 2023 pm 06:05 PM

L'erreur 801c03ed est généralement accompagnée du message suivant : La stratégie de l'administrateur n'autorise pas cet utilisateur à rejoindre l'appareil. Ce message d'erreur vous empêchera d'installer Windows et de rejoindre un réseau, vous empêchant ainsi d'utiliser votre ordinateur. Il est donc important de résoudre ce problème dès que possible. Qu'est-ce que le code d'erreur 801c03ed ? Il s'agit d'une erreur d'installation de Windows qui se produit pour la raison suivante : la configuration d'Azure n'autorise pas les nouveaux utilisateurs à se joindre. Les objets d’appareil ne sont pas activés sur Azure. Échec du hachage matériel dans le panneau Azure. Comment corriger le code d'erreur 03c11ed sous Windows 801 ? 1. Vérifiez les paramètres Intune. Connectez-vous au portail Azure. Accédez à Appareils et sélectionnez Paramètres de l'appareil. Changez "Les utilisateurs peuvent

qu'est-ce qui est ouvert qu'est-ce qui est ouvert Aug 21, 2023 pm 04:16 PM

OpenAL est une bibliothèque audio multiplateforme ouverte pour gérer la lecture et le mixage de l'audio 3D et de l'audio multicanal. Elle a été développée par Creative Labs et était à l'origine utilisée pour le développement de jeux, mais elle est maintenant largement utilisée dans les applications multimédia, la réalité virtuelle, réalité augmentée et montage audio. OpenAL fournit aux développeurs une API pour contrôler les effets audio, qui peut être utilisée pour le développement de jeux, d'applications multimédias et d'autres logiciels liés à l'audio.

Utiliser Azure Semantic Search et OpenAI pour créer un système de recherche cognitive Utiliser Azure Semantic Search et OpenAI pour créer un système de recherche cognitive Oct 12, 2023 am 10:18 AM

Conçue pour simplifier la recherche de documents, une combinaison de services et de plateformes est la clé d'une performance inégalée. Dans cet article, nous explorerons une approche holistique qui combine la puissance d’Azure Cognitive Services avec les capacités d’OpenAI. En vous plongeant dans la reconnaissance d'intention, le filtrage de documents, les algorithmes spécifiques à un domaine et la synthèse de texte, vous apprendrez à créer un système qui non seulement comprend l'intention de l'utilisateur, mais traite et présente également les informations de manière efficace.

Le service Microsoft Azure OpenAI prend désormais en charge GPT-4 Turbo avec Vision Le service Microsoft Azure OpenAI prend désormais en charge GPT-4 Turbo avec Vision Dec 18, 2023 am 08:18 AM

Selon les informations de ce site du 17 décembre, le service Azure OpenAI fournit un accès API REST aux puissants modèles de langage d'OpenAI, notamment GPT-4, GPT-3.5-Turbo et les séries de modèles intégrés. Microsoft a annoncé de nouvelles améliorations du service Azure OpenAI et a fourni aux clients une version préliminaire publique du dernier GPT-4 Turbo avec Vision. Ce modèle d'IA multimodal avancé hérite de toutes les fonctionnalités puissantes de GPT-4 Turbo et ajoute également le traitement d'images et. capacité d’analyse. Cela ouvre la possibilité d'exploiter GPT-4 pour davantage de tâches, telles que l'amélioration de l'accessibilité, l'interprétation et l'analyse des visualisations de données, et

Microsoft Azure déploiera l'authentification multifacteur obligatoire à partir d'octobre Microsoft Azure déploiera l'authentification multifacteur obligatoire à partir d'octobre Aug 17, 2024 am 07:40 AM

Selon les informations de ce site du 16 août, Microsoft a publié hier un communiqué annonçant qu'il appliquerait la fonction d'authentification multifacteur (MFA) à partir d'octobre pour contribuer à réduire les risques de piratage de compte. Microsoft affirme que MFA peut empêcher plus de 99,2 % de ces attaques de compromission de compte, cette mesure est donc obligatoire. Selon les rapports, ce processus sera mis en œuvre progressivement en deux phases. Ce site le résume comme suit : Phase 1 : à partir d'octobre, MFA devra se connecter au portail Azure, à Microsoft Entra Management Center et à Intune Management Center, mais cela n'affectera pas les autres clients Azure. Phase 2 : à partir de début 2025, les exigences MFA s'étendront progressivement à d'autres clients Azure, tels qu'Azure.

Microsoft établit un record de défense en réponse à une attaque DDoS de 3,47 Tbps Microsoft établit un record de défense en réponse à une attaque DDoS de 3,47 Tbps Apr 22, 2023 am 08:52 AM

Microsoft a établi par inadvertance un nouveau record en novembre dernier en atténuant une attaque DDoS (déni de service distribué) de 3,47 Tbps. Dans un article de blog, le géant de Redmond a partagé les données de protection Azure DDoS pour le troisième trimestre 2021. La société a noté que le nombre d’attaques DDoS avait augmenté au cours du second semestre 2021. Le DDoS est une méthode d’attaque populaire que tout le monde peut utiliser en raison du faible prix des services d’attaque. Au second semestre 2021, Microsoft a atténué en moyenne 1 955 attaques par jour, soit une augmentation de 40 % par rapport au premier semestre. Toutefois, ce chiffre n’est rien en comparaison des 4 296 attaques atténuées le 10 août 2021. Dans l'ensemble,

Windows Server VNext Preview Build 25099 maintenant disponible Windows Server VNext Preview Build 25099 maintenant disponible Apr 14, 2023 pm 01:55 PM

Microsoft a publié une nouvelle version de Windows Server Insider Preview. La version 25099 de cette semaine est désormais disponible en téléchargement en ISO et VHDX sur le site Web Windows Server Insider, mais comme d'habitude, il n'y a pas de journal des modifications complet à proprement parler, donc on ne sait pas exactement ce qui est nouveau. Microsoft a encore une fois déclaré que la marque n'avait pas été mise à jour et qu'elle était toujours Windows Server 2022 en avant-première. De plus, Microsoft encourage les initiés à travailler sur Azure

Azure Translator peut désormais numériser et traduire des documents PDF Azure Translator peut désormais numériser et traduire des documents PDF May 14, 2023 pm 08:13 PM

Microsoft a annoncé que la fonctionnalité de traduction de documents intégrée à Azure Translator peut désormais numériser et traduire des documents PDF. La société affirme que les utilisateurs n'ont plus besoin de prétraiter les documents via un moteur OCR avant de tenter de les traduire. La fonction de traduction de documents, lancée pour la première fois il y a un an, est capable de traduire plusieurs documents dans plus de 110 langues et dialectes à la fois. La mise à jour d'aujourd'hui signifie que les fichiers PDF ainsi que les fichiers Word et PowerPoint sont désormais entièrement pris en charge. Selon l'entreprise, il est hautement souhaitable de pouvoir numériser des PDF contenant des images numérisées. Expliquant certaines fonctionnalités, Microsoft a déclaré : Le service de traduction de fichiers dispose désormais de l'intelligence nécessaire pour identifier si un document PDF contient du contenu d'image numérisé,

See all articles