오늘날 디지털 시대에 강력하고 확장 가능하며 효율적인 시스템을 보유하는 것은 단순한 경쟁 우위 그 이상입니다. 그것은 필요합니다. 문서 검색을 단순화하기 위해 사용자 입력 처리를 최적화하려는 경우 서비스와 플랫폼의 조합이 탁월한 성능을 위한 핵심입니다. 이 문서에서는 Azure Cognitive Services의 강력한 기능과 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 서비스 엔드포인트 및 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 의미 검색 준비 인덱스
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 Storage에 유지될 문서를 여기에 수동으로 추가합니다.
文档 = [ { "@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['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)
이 시점에서 의미 검색 및 Azure OpenAI를 사용할 수 있습니다. 의미 체계 검색을 쿼리해 보겠습니다.
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)
검색 결과가 있으면 이제 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의 기능을 결합하는 방법을 배웠습니다. 이 두 가지 강력한 도구를 통합함으로써 우리는 사용자에게 우리 애플리케이션에서 풍부하고 지능적인 검색 결과를 제공할 수 있습니다.
위 내용은 Azure Semantic Search 및 OpenAI를 사용하여 인지 검색 시스템 구축의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

AI 식품 준비 여전히 초기 사용 중이지만 AI 시스템은 음식 준비에 점점 더 많이 사용되고 있습니다. AI 구동 로봇은 부엌에서 햄버거를 뒤집기, 피자 만들기 또는 SA 조립과 같은 음식 준비 작업을 자동화하는 데 사용됩니다

소개 파이썬 기능에서 변수의 네임 스페이스, 범위 및 동작을 이해하는 것은 효율적으로 작성하고 런타임 오류 또는 예외를 피하는 데 중요합니다. 이 기사에서는 다양한 ASP를 탐구 할 것입니다

소개 생생한 그림과 조각으로 둘러싸인 아트 갤러리를 걷는 것을 상상해보십시오. 이제 각 작품에 질문을하고 의미있는 대답을 얻을 수 있다면 어떨까요? “어떤 이야기를하고 있습니까?

제품 케이던스를 계속하면서 이번 달 Mediatek은 새로운 Kompanio Ultra and Dimensity 9400을 포함한 일련의 발표를했습니다. 이 제품은 스마트 폰 용 칩을 포함하여 Mediatek 비즈니스의 전통적인 부분을 채우고 있습니다.

#1 Google은 Agent2agent를 시작했습니다 이야기 : 월요일 아침입니다. AI 기반 채용 담당자로서 당신은 더 똑똑하지 않고 더 똑똑하지 않습니다. 휴대 전화에서 회사의 대시 보드에 로그인합니다. 세 가지 중요한 역할이 공급되고, 검증되며, 예정된 FO가 있음을 알려줍니다.

나는 당신이되어야한다고 생각합니다. 우리 모두는 Psychobabble이 다양한 심리적 용어를 혼합하고 종종 이해할 수 없거나 완전히 무의미한 모듬 채터로 구성되어 있다는 것을 알고 있습니다. 당신이 fo를 뿌리기 위해해야 할 일

이번 주 발표 된 새로운 연구에 따르면 2022 년에 제조 된 플라스틱의 9.5%만이 재활용 재료로 만들어졌습니다. 한편, 플라스틱은 계속해서 매립지와 생태계에 전 세계에 쌓이고 있습니다. 그러나 도움이 진행 중입니다. 엥인 팀

최근 Enterprise Analytics 플랫폼 Alteryx의 CEO 인 Andy MacMillan과의 대화는 AI 혁명 에서이 비판적이면서도 저평가 된 역할을 강조했습니다. MacMillan에서 설명했듯이 원시 비즈니스 데이터와 AI-Ready Informat의 격차


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

드림위버 CS6
시각적 웹 개발 도구

SecList
SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.

PhpStorm 맥 버전
최신(2018.2.1) 전문 PHP 통합 개발 도구

ZendStudio 13.5.1 맥
강력한 PHP 통합 개발 환경

SublimeText3 Linux 새 버전
SublimeText3 Linux 최신 버전
