Azure Semantic Search 및 OpenAI를 사용하여 인지 검색 시스템 구축
오늘날 디지털 시대에 강력하고 확장 가능하며 효율적인 시스템을 보유하는 것은 단순한 경쟁 우위 그 이상입니다. 그것은 필요합니다. 문서 검색을 단순화하기 위해 사용자 입력 처리를 최적화하려는 경우 서비스와 플랫폼의 조합이 탁월한 성능을 위한 핵심입니다. 이 문서에서는 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 도구

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

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

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

Clothoff.io
AI 옷 제거제

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

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

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

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











오류 801c03ed에는 일반적으로 다음 메시지가 동반됩니다. 관리자 정책에 따라 이 사용자가 장치에 참여하는 것이 허용되지 않습니다. 이 오류 메시지는 Windows 설치 및 네트워크 연결을 방해하여 컴퓨터를 사용할 수 없게 하므로 가능한 한 빨리 이 문제를 해결하는 것이 중요합니다. 오류 코드 801c03ed란 무엇입니까? 이는 다음과 같은 이유로 발생하는 Windows 설치 오류입니다. Azure 설정에서 새 사용자의 가입을 허용하지 않습니다. Azure에서는 장치 개체를 사용할 수 없습니다. Azure 패널에서 하드웨어 해시 오류가 발생했습니다. Windows 801에서 오류 코드 03c11ed를 수정하는 방법은 무엇입니까? 1. Intune 설정을 확인합니다. Azure Portal에 로그인합니다. 장치로 이동하여 장치 설정을 선택합니다. "사용자는 다음을 수행할 수 있습니다.

OpenAL은 3D 오디오 및 다중 채널 오디오의 재생 및 믹싱을 처리하기 위한 개방형 크로스 플랫폼 오디오 라이브러리입니다. Creative Labs에서 개발되었으며 원래 게임 개발에 사용되었지만 현재는 멀티미디어 애플리케이션, 가상 현실, 증강 현실 및 오디오 편집. OpenAL은 개발자에게 게임, 멀티미디어 애플리케이션 및 기타 오디오 관련 소프트웨어 개발에 사용할 수 있는 오디오 효과를 제어할 수 있는 API를 제공합니다.

문서 검색을 단순화하도록 설계된 서비스와 플랫폼의 조합은 비교할 수 없는 성능의 핵심입니다. 이 문서에서는 Azure Cognitive Services의 강력한 기능과 OpenAI의 기능을 결합하는 전체적인 접근 방식을 살펴보겠습니다. 의도 인식, 문서 필터링, 도메인별 알고리즘 및 텍스트 요약을 탐구함으로써 사용자 의도를 이해할 뿐만 아니라 정보를 효율적으로 처리하고 표시하는 시스템을 만드는 방법을 배우게 됩니다.

12월 17일 이 사이트의 뉴스에 따르면 Azure OpenAI 서비스는 GPT-4, GPT-3.5-Turbo 및 임베디드 모델 시리즈를 포함한 OpenAI의 강력한 언어 모델에 대한 REST API 액세스를 제공합니다. Microsoft는 Azure OpenAI 서비스에 대한 추가 개선 사항을 발표하고 고객에게 Vision이 포함된 최신 GPT-4 Turbo의 공개 미리 보기 버전을 제공했습니다. 이 고급 다중 모드 AI 모델은 GPT-4 Turbo의 모든 강력한 기능을 상속하고 이미지 처리 및 분석. 이를 통해 접근성 향상, 데이터 시각화 해석 및 분석과 같은 더 많은 작업에 GPT-4를 활용할 수 있는 기회가 열립니다.

16일 해당 사이트 소식에 따르면 마이크로소프트는 어제 공지를 통해 계정 해킹 가능성을 줄이기 위해 10월부터 다중 인증(MFA) 기능을 시행하겠다고 밝혔다. Microsoft는 MFA가 이러한 계정 손상 공격의 99.2% 이상을 예방할 수 있으므로 해당 조치가 필수라고 말합니다. 보고서에 따르면 이 프로세스는 두 단계에 걸쳐 점진적으로 구현될 예정입니다. 이 사이트에서는 다음과 같이 요약합니다. 1단계: 10월부터 MFA는 Azure Portal, Microsoft Entra Management Center 및 Intune Management Center에 로그인해야 합니다. 다른 Azure 클라이언트에는 영향을 미치지 않습니다. 2단계: 2025년 초부터 MFA 요구 사항이 점차적으로 Azure와 같은 다른 Azure 클라이언트로 확장됩니다.

openal의 기능에는 3D 사운드 효과, 다중 채널 오디오, 오디오 공간 위치 지정, 오디오 형식 지원, 오디오 효과 처리, 크로스 플랫폼 지원 및 기타 기능이 포함됩니다. 자세한 소개: 1. 3D 사운드 효과, OpenAL은 오디오 매개변수의 위치, 방향, 거리 및 볼륨을 제어하여 다양한 방향과 거리에서 나오는 오디오를 느낄 수 있습니다. , OpenAL 다중 채널 오디오의 재생 및 믹싱을 지원하고 동시에 여러 음원을 재생하고 믹싱할 수 있습니다. 3. 오디오 공간 위치 지정 등

React와 Microsoft Azure를 사용하여 안정적인 클라우드 애플리케이션을 구축하는 방법 클라우드 컴퓨팅이 발전하면서 점점 더 많은 애플리케이션이 클라우드로 마이그레이션되고 있습니다. 이 과정에서는 안정적이고 효율적인 개발 프레임워크를 선택하는 것이 매우 중요합니다. 널리 사용되는 프런트엔드 프레임워크인 React는 효율적인 구성 요소 개발, 가상 DOM 업데이트 등의 기능을 갖추고 있으며, Microsoft Azure는 강력한 컴퓨팅, 저장 및 배포 기능을 제공하는 유연한 클라우드 서비스 플랫폼입니다. 이 기사에서는 방법을 소개합니다.

Microsoft는 이제 Azure Translator에 내장된 문서 번역 기능을 통해 PDF 문서를 스캔하고 번역할 수 있다고 발표했습니다. 회사는 사용자가 더 이상 번역을 시도하기 전에 OCR 엔진을 통해 문서를 사전 처리할 필요가 없다고 말합니다. 1년 전 처음 출시된 문서 번역 기능은 여러 문서를 110개 이상의 언어와 방언으로 한 번에 번역할 수 있다. 오늘 업데이트는 이제 PDF 파일은 물론 Word 및 PowerPoint 파일도 완벽하게 지원된다는 것을 의미합니다. 회사에 따르면 스캔한 이미지 콘텐츠가 포함된 PDF를 스캔할 수 있는 기능은 매우 바람직하다고 합니다. Microsoft는 일부 기능을 설명하면서 다음과 같이 말했습니다. 이제 파일 번역 서비스에는 PDF 문서에 스캔한 이미지 콘텐츠가 포함되어 있는지 여부를 식별하는 지능이 있습니다.
