


Menggunakan Azure Semantic Search dan OpenAI untuk membina sistem carian kognitif
Dalam era digital hari ini, mempunyai sistem yang teguh, berskala dan cekap adalah lebih daripada sekadar kelebihan daya saing; Ini adalah perlu. Sama ada anda berusaha untuk mengoptimumkan pemprosesan input pengguna untuk memudahkan carian dokumen, gabungan perkhidmatan dan platform adalah kunci kepada prestasi yang tiada tandingan. Dalam artikel ini, kami akan meneroka pendekatan holistik yang menggabungkan kuasa Perkhidmatan Kognitif Azure dengan keupayaan OpenAI. Dengan mendalami pengecaman niat, penapisan dokumen, algoritma khusus domain dan ringkasan teks, anda akan belajar untuk mencipta sistem yang bukan sahaja memahami niat pengguna tetapi juga memproses dan mempersembahkan maklumat dengan cekap.
Kami akan membina ini:
Menyediakan persekitaran
Sebelum kita menyelam, mari pastikan kita telah memasang pakej yang diperlukan dan pembolehubah persekitaran ditetapkan:
rreeeDi sini kita menggunakan API yang diperlukan titik akhir dan jenis untuk menyediakan persekitaran OpenAI.
Sediakan Azure Search
Untuk menggunakan Azure Semantic Search, kami perlu mengimport modul yang diperlukan dan menyediakan persekitaran.
!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'
Selepas mengimport modul, kini kami boleh menyediakan titik akhir perkhidmatan Azure Search dan kunci API:
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 )
(Nota: Pastikan untuk menutup atau menyembunyikan kunci anda sebelum berkongsi sebarang kod.)
untuk Penyediaan Carian Semantik Azure indeks
Sebelum menambah data pada Carian Azure, kita perlu mentakrifkan indeks yang menerangkan struktur data:
# 从环境中设置服务端点和 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))
Coretan kod ini memastikan bahawa jika indeks sudah wujud, ia dipadamkan. Ini berguna apabila menjalankan semula kod atau menukar indeks.
Sekarang, mari tentukan skema indeks:
# 删除索引(如果存在) try: result = admin_client.delete_index(index_name) print ('Index', index_name, 'Deleted') except Exception as ex: print (ex)
Seterusnya, anda perlu mencipta indeks ini pada Azure:
# 指定索引模式 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' : [ '标签' , '地址/城市' , '地址/国家' ]}]
Selepas mencipta indeks, kita perlu mengisinya dengan dokumen. Adalah penting untuk menunjukkan bahawa ia boleh menjadi apa-apa jenis dokumen! Saya hanya menambah secara manual dokumen yang akan kekal dalam storan gumpalan di sini:
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)
Sekarang tolak dokumen ini ke indeks carian semantik.
文档 = [ { "@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”:“美国” } } ]
Integrasi dengan OpenAI
Mari kita buat sambungan ke OpenAI:
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)
Kemudian, tambah sambungan Azure OpenAI:
question="What is the address of ChatGpt Hotel?"
Pada ketika ini, anda boleh menggunakan Carian Semantik dan Azure OpenAI Mari kita bertanya Carian Semantik:
### 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['sender'], message['text']) 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)
Dengan hasil carian di tangan, kami kini boleh memanfaatkan Azure OpenAI untuk mentafsir atau memproses keputusan selanjutnya.
import json results = search_client.search(search_text=question, include_total_count=True, select='HotelId,HotelName,Tags,Address')= search_client.search(search_text=question, include_total_count=True, select='HotelId,HotelName,Tags,Address') json_results="" print ('Total Documents Matching Query:', results.get_count()) for result in results: #print("{}: {}: {}".format(result["HotelId"], result["HotelName"], result["Tags"],results["Address"])) json_results+=str(result) print(json_results)
Kod ini menggesa model OpenAI dengan hasil carian dan soalan asal kami, membolehkannya memproses dan memberikan maklumat yang bermakna berdasarkan data.
Kesimpulan
Dalam artikel ini, kami mempelajari cara menggabungkan kuasa Azure Semantic Search dengan keupayaan OpenAI. Dengan menyepadukan dua alatan berkuasa ini, kami boleh menyediakan pengguna hasil carian yang kaya dan pintar dalam aplikasi kami.
Atas ialah kandungan terperinci Menggunakan Azure Semantic Search dan OpenAI untuk membina sistem carian kognitif. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Ralat 801c03ed biasanya disertakan dengan mesej berikut: Dasar pentadbir tidak membenarkan pengguna ini menyertai peranti. Mesej ralat ini akan menghalang anda daripada memasang Windows dan menyertai rangkaian, dengan itu menghalang anda daripada menggunakan komputer anda, jadi adalah penting untuk menyelesaikan isu ini secepat mungkin. Apakah kod ralat 801c03ed? Ini ialah ralat pemasangan Windows yang berlaku atas sebab berikut: Persediaan Azure tidak membenarkan pengguna baharu untuk menyertai. Objek peranti tidak didayakan pada Azure. Kegagalan cincang perkakasan dalam panel Azure. Bagaimana untuk membetulkan kod ralat 03c11ed pada Windows 801? 1. Semak tetapan Intune Log masuk ke portal Azure. Navigasi ke Peranti dan pilih Tetapan Peranti. Tukar "Pengguna boleh

OpenAL ialah perpustakaan audio merentas platform terbuka untuk mengendalikan main balik dan mencampurkan audio 3D dan audio berbilang saluran Ia dibangunkan oleh Creative Labs dan pada asalnya digunakan untuk pembangunan permainan, tetapi kini digunakan secara meluas dalam aplikasi multimedia, Realiti maya. realiti tambahan dan penyuntingan audio. OpenAL menyediakan pembangun dengan API untuk mengawal kesan audio, yang boleh digunakan untuk pembangunan permainan, aplikasi multimedia dan perisian berkaitan audio yang lain.

Direka bentuk untuk memudahkan carian dokumen, gabungan perkhidmatan dan platform adalah kunci kepada prestasi yang tiada tandingan. Dalam artikel ini, kami akan meneroka pendekatan holistik yang menggabungkan kuasa Perkhidmatan Kognitif Azure dengan keupayaan OpenAI. Dengan mendalami pengecaman niat, penapisan dokumen, algoritma khusus domain dan ringkasan teks, anda akan belajar untuk mencipta sistem yang bukan sahaja memahami niat pengguna tetapi juga memproses dan mempersembahkan maklumat dengan cekap.

Menurut berita dari tapak ini pada 17 Disember, perkhidmatan Azure OpenAI menyediakan akses API REST kepada model bahasa OpenAI yang berkuasa, termasuk GPT-4, GPT-3.5-Turbo dan siri model terbenam. Microsoft mengumumkan peningkatan lanjut pada perkhidmatan Azure OpenAI dan menyediakan pelanggan versi pratonton awam GPT-4 Turbo dengan Vision Model AI berbilang mod termaju ini mewarisi semua ciri berkuasa GPT-4 Turbo dan juga menambah pemprosesan imej dan kebolehan. Ini membuka peluang untuk memanfaatkan GPT-4 untuk lebih banyak tugas, seperti meningkatkan kebolehcapaian, mentafsir dan menganalisis visualisasi data, dan

Menurut berita dari laman web ini pada 16 Ogos, Microsoft telah mengeluarkan pengumuman semalam, mengumumkan bahawa ia akan menguatkuasakan fungsi pengesahan berbilang faktor (MFA) mulai Oktober untuk membantu mengurangkan kemungkinan penggodaman akaun. Microsoft berkata MFA boleh menghalang lebih daripada 99.2% daripada serangan kompromi akaun sedemikian, jadi langkah itu adalah wajib. Menurut laporan, proses ini akan dilaksanakan secara beransur-ansur dalam dua fasa Tapak ini meringkaskannya seperti berikut: Fasa 1: Bermula dari Oktober, MFA akan diperlukan untuk log masuk ke portal Azure, Pusat Pengurusan Microsoft Entra dan Pusat Pengurusan Intune, tetapi. ia tidak akan menjejaskan pelanggan Azure yang lain. Fasa 2: Bermula pada awal 2025, keperluan MFA akan berkembang secara beransur-ansur kepada pelanggan Azure yang lain, seperti Azure

Microsoft secara tidak sengaja menetapkan rekod baharu pada November lalu apabila ia mengurangkan serangan DDoS (penafian perkhidmatan teragih) 3.47Tbps. Dalam catatan blog, gergasi Redmond berkongsi data perlindungan Azure DDoS untuk suku ketiga 2021. Syarikat itu menyatakan bahawa bilangan serangan DDoS meningkat pada separuh kedua 2021. DDoS ialah kaedah serangan popular yang boleh digunakan oleh sesiapa sahaja kerana harga perkhidmatan serangan yang rendah. Pada separuh kedua 2021, Microsoft mengurangkan purata 1,955 serangan setiap hari, peningkatan sebanyak 40% daripada separuh pertama tahun itu. Walau bagaimanapun, ini tidak begitu baik berbanding dengan 4,296 serangan yang dikurangkan pada 10 Ogos 2021. secara keseluruhan,

Microsoft telah mengeluarkan versi baharu Windows Server Insider Preview. Binaan 25099 minggu ini kini tersedia untuk dimuat turun dalam ISO dan VHDX daripada tapak web Windows Server Insider, tetapi seperti biasa, tiada log perubahan penuh untuk diperkatakan, jadi tidak jelas apa yang baharu. Microsoft sekali lagi berkata bahawa jenama itu belum dikemas kini dan masih Windows Server 2022 dalam pratonton. Selain itu, Microsoft menggalakkan orang dalam bekerja pada Azure

Microsoft telah mengumumkan bahawa ciri terjemahan dokumen yang terbina dalam Azure Translator kini boleh mengimbas dan menterjemah dokumen PDF. Syarikat itu berkata pengguna tidak lagi perlu pra-memproses dokumen melalui enjin OCR sebelum cuba menterjemahkannya. Ciri terjemahan dokumen, yang pertama kali dilancarkan setahun lalu, mampu menterjemah berbilang dokumen ke dalam lebih daripada 110 bahasa dan dialek sekaligus. Kemas kini hari ini bermakna fail PDF serta fail Word dan PowerPoint kini disokong sepenuhnya. Menurut syarikat itu, dapat mengimbas PDF dengan kandungan imej yang diimbas adalah sangat diingini. Menjelaskan beberapa ciri, Microsoft berkata: Perkhidmatan Terjemahan Fail kini mempunyai kecerdasan untuk mengenal pasti sama ada dokumen PDF mengandungi kandungan imej yang diimbas,
