目次
Azure Search のセットアップ" >Azure Search のセットアップ
Azure Semantic Search のインデックスの準備" >Azure Semantic Search のインデックスの準備
OpenAI との統合" >OpenAI との統合
結論" >結論
ホームページ テクノロジー周辺機器 AI Azure Semantic Search と OpenAI を使用してコグニティブ検索システムを構築する

Azure Semantic Search と OpenAI を使用してコグニティブ検索システムを構築する

Oct 12, 2023 am 10:18 AM
azure openal

今日のデジタル時代では、強力でスケーラブルで効率的なシステムを持つことは、単なる競争上の優位性ではありません。それは必要です。ユーザー入力処理を最適化してドキュメント検索を簡素化することに取り組んでいる場合でも、サービスとプラットフォームの組み合わせが比類のないパフォーマンスの鍵となります。この記事では、Azure Cognitive Services のパワーと OpenAI の機能を組み合わせた総合的なアプローチについて説明します。意図認識、ドキュメント フィルタリング、ドメイン固有のアルゴリズム、テキスト要約を詳しく調べることで、ユーザーの意図を理解するだけでなく、情報を効率的に処理して表示するシステムの作成方法を学びます。

これを構築します:

Azure Semantic Search と OpenAI を使用してコグニティブ検索システムを構築する

環境のセットアップ

本題に入る前に、確認しましょう。インストールしました。 必要なパッケージをダウンロードし、環境変数を設定します。

!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'
ログイン後にコピー

ここでは、必要な API キー、エンドポイント、タイプを使用して OpenAI 環境をセットアップします。

Azure Search のセットアップ

Azure Semantic Search を使用するには、必要なモジュールをインポートし、環境をセットアップする必要があります。

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
)
ログイン後にコピー

モジュールをインポートした後、Azure Search Service エンドポイントと 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))
ログイン後にコピー

(注: コードを共有する前に必ずキーをマスクまたは非表示にしてください。)

Azure Semantic Search のインデックスの準備

Azure Search にデータを追加する前に、データの構造を記述するインデックスを定義する必要があります:

# 删除索引(如果存在)
try:
    result = admin_client.delete_index(index_name)
    print ('Index', index_name, 'Deleted')
except Exception as ex:
    print (ex)
ログイン後にコピー

このコード スニペットにより、インデックスが既に存在する場合は削除されます。これは、コードを再実行する場合やインデックスを変更する場合に便利です。

ここで、インデックスのスキーマを指定しましょう:

# 指定索引模式
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' : [ '标签' , '地址/城市' , '地址/国家' ]}]
ログイン後にコピー

次に、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)
ログイン後にコピー

インデックスを作成した後、次のことを行う必要があります。それにドキュメントを入力します。どのような種類のドキュメントでも使用できることに注意してください。ここでは、BLOB ストレージに保持されるドキュメントを手動で追加するだけです:

文档 = [ 
    { 
    "@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”:“美国”
         } 
    }
]
ログイン後にコピー

次に、これらのドキュメントをセマンティック検索インデックスにプッシュします。

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)
ログイン後にコピー

OpenAI との統合

OpenAI への接続を確立しましょう:

question="What is the address of ChatGpt Hotel?"
ログイン後にコピー

次に、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)
ログイン後にコピー

この時点で、セマンティック検索と Azure OpenAI を使用できるようになります。セマンティック検索をクエリしてみましょう:

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)
ログイン後にコピー

検索結果が手元にあるので、Azure OpenAI を利用して結果を解釈したり、さらに処理したりできます。

# 创建消息列表来跟踪对话
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)
ログイン後にコピー

このコードは、OpenAI モデルに検索結果と元の質問を要求し、データに基づいて意味のある情報を処理して提供できるようにします。

結論

この記事では、Azure Semantic Search の機能と OpenAI の機能を組み合わせる方法を学びました。これら 2 つの強力なツールを統合することで、アプリケーションで豊富でインテリジェントな検索結果をユーザーに提供できます。

以上がAzure Semantic Search と OpenAI を使用してコグニティブ検索システムを構築するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

エラー コード 801c03ed: Windows 11 での修正方法 エラー コード 801c03ed: Windows 11 での修正方法 Oct 04, 2023 pm 06:05 PM

エラー 801c03ed には通常、次のメッセージが伴います: 管理者ポリシーにより、このユーザーはデバイスに参加できません。このエラー メッセージにより、Windows のインストールとネットワークへの参加が妨げられ、その結果、コンピュータが使用できなくなるため、この問題をできるだけ早く解決することが重要です。エラーコード 801c03ed とは何ですか?これは、次の理由により発生する Windows インストール エラーです: Azure セットアップでは新しいユーザーの参加が許可されていません。 Azure ではデバイス オブジェクトが有効になっていません。 Azure パネルでのハードウェア ハッシュ エラー。 Windows 801 でエラー コード 03c11ed を修正するにはどうすればよいですか? 1. Intune の設定を確認する Azure portal にログインします。 「デバイス」に移動し、「デバイス設定」を選択します。 「ユーザーができること」を変更します

オープンなものとは何ですか オープンなものとは何ですか Aug 21, 2023 pm 04:16 PM

OpenAL は、3D オーディオとマルチチャンネル オーディオの再生とミキシングを処理するためのオープン クロスプラットフォーム オーディオ ライブラリです。Creative Labs によって開発され、元々はゲーム開発に使用されていましたが、現在はマルチメディア アプリケーション、仮想現実、拡張現実とオーディオ編集。 OpenAL は、ゲーム、マルチメディア アプリケーション、その他のオーディオ関連ソフトウェアの開発に使用できるオーディオ エフェクトを制御する API を開発者に提供します。

Azure Semantic Search と OpenAI を使用してコグニティブ検索システムを構築する Azure Semantic Search と OpenAI を使用してコグニティブ検索システムを構築する Oct 12, 2023 am 10:18 AM

ドキュメント検索を簡素化するように設計されており、サービスとプラットフォームの組み合わせが比類のないパフォーマンスの鍵となります。この記事では、Azure Cognitive Services のパワーと OpenAI の機能を組み合わせた総合的なアプローチについて説明します。意図認識、ドキュメント フィルタリング、ドメイン固有のアルゴリズム、テキスト要約を詳しく調べることで、ユーザーの意図を理解するだけでなく、情報を効率的に処理して表示するシステムの作成方法を学びます。

Microsoft Azure OpenAI サービスが Vision で GPT-4 Turbo をサポートするようになりました Microsoft Azure OpenAI サービスが Vision で GPT-4 Turbo をサポートするようになりました Dec 18, 2023 am 08:18 AM

12 月 17 日のこのサイトのニュースによると、Azure OpenAI サービスは、GPT-4、GPT-3.5-Turbo、組み込みモデル シリーズを含む OpenAI の強力な言語モデルへの REST API アクセスを提供します。 Microsoft は、Azure OpenAI サービスのさらなる機能強化を発表し、最新の GPT-4 Turbo with Vision のパブリック プレビュー バージョンを顧客に提供しました。この高度なマルチモーダル AI モデルは、GPT-4 Turbo のすべての強力な機能を継承し、画像処理や画像処理も追加しています。分析能力。これにより、アクセシビリティの向上、データの視覚化の解釈と分析など、より多くのタスクに GPT-4 を活用する機会が開かれます。

Microsoft Azureは10月から必須の多要素認証を導入する Microsoft Azureは10月から必須の多要素認証を導入する Aug 17, 2024 am 07:40 AM

8月16日の当サイトのニュースによると、Microsoftは昨日発表を行い、アカウントハッキングの可能性を減らすために10月から多要素認証(MFA)機能を施行すると発表した。 Microsoftは、MFAはこのようなアカウント侵害攻撃を99.2%以上防ぐことができるため、この対策は必須であると述べている。報道によると、このプロセスは 2 つのフェーズに分けて段階的に実装される予定で、このサイトでは次のように要約されています。 フェーズ 1: 10 月から、Azure portal、Microsoft Entra Management Center、および Intune Management Center へのログインに MFA が必要になります。他の Azure クライアントには影響しません。フェーズ 2: 2025 年初めから、MFA 要件は Azure などの他の Azure クライアントにも徐々に拡大されます。

Microsoft、3.47 Tbps DDoS 攻撃に対応して防御記録を樹立 Microsoft、3.47 Tbps DDoS 攻撃に対応して防御記録を樹立 Apr 22, 2023 am 08:52 AM

Microsoft は、昨年 11 月に 3.47Tbps の DDoS (分散型サービス拒否) 攻撃を緩和し、誤って新記録を樹立してしまいました。レドモンドの巨人はブログ投稿で、2021 年第 3 四半期の Azure DDoS 保護データを共有しました。同社は、2021年下半期にDDoS攻撃の数が増加したと指摘した。 DDoS は、攻撃サービスの価格が安いため、誰でも使用できる人気のある攻撃方法です。 2021 年下半期、マイクロソフトは 1 日あたり平均 1,955 件の攻撃を軽減しました。これは、年上半期に比べて 40% 増加しました。ただし、これは、2021 年 8 月 10 日に軽減された 4,296 件の攻撃と比較すると見劣りします。全体、

Windows Server VNext プレビュー ビルド 25099 が利用可能になりました Windows Server VNext プレビュー ビルド 25099 が利用可能になりました Apr 14, 2023 pm 01:55 PM

Microsoft は、Windows Server Insider Preview の新バージョンをリリースしました。今週のビルド 25099 は、Windows Server Insider Web サイトから ISO および VHDX でダウンロードできるようになりましたが、いつものように、言及できる完全な変更ログがないため、何が新しいのかは不明です。 Microsoftは改めて、このブランドは更新されておらず、まだWindows Server 2022のプレビュー段階にあると述べた。さらに、Microsoft は内部関係者に Azure で働くことを奨励しています

Azure Firewall がランサムウェアからユーザーを防御および保護する方法 Azure Firewall がランサムウェアからユーザーを防御および保護する方法 Apr 18, 2023 pm 12:46 PM

Azure Firewall Premium は、悪意のある添付ファイルを含むフィッシングメール、ドライブバイダウンロード攻撃、その他のマルウェア感染要素からユーザーを保護する効率的な防御システムとして機能します。システムの脆弱性が解決されていないと、特にランサムウェア攻撃が日々攻撃的になっている現在では、広範囲にわたる問題が発生する可能性があります。適切な防御策がなければ、攻撃者は保護されていないネットワークに侵入し、マルウェアを起動する可能性があります。これは、コンピュータ システムにアクセスできなくなったことに気づいた後、不便を意味する可能性があります。しかし、さらに気がかりなのは、すべてを正常に戻すために支払わなければならない身代金です。 AzureFirewallPremium はこれらすべてを防ぎます。アズールファー

See all articles